From 82e7eec15532c76da82de43dacfc44818ea71fa0 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Tue, 7 May 2019 07:25:15 -0600 Subject: [PATCH 01/59] Use time.Duration directly in GetStartTimeEndTime function (#12033) * Remove convertPeriodToDuration and use duration directly in GetStartTimeEndTime * Pass period in time.Duration type --- x-pack/metricbeat/module/aws/aws.go | 27 ++++---------- x-pack/metricbeat/module/aws/aws_test.go | 36 ------------------- .../module/aws/cloudwatch/cloudwatch.go | 20 +++++------ x-pack/metricbeat/module/aws/ec2/ec2.go | 22 ++++++------ x-pack/metricbeat/module/aws/ec2/ec2_test.go | 2 +- .../aws/s3_daily_storage/s3_daily_storage.go | 20 +++++------ .../module/aws/s3_request/s3_request.go | 20 +++++------ x-pack/metricbeat/module/aws/sqs/sqs.go | 17 +++++---- x-pack/metricbeat/module/aws/utils.go | 13 +++---- x-pack/metricbeat/module/aws/utils_test.go | 8 ++--- 10 files changed, 60 insertions(+), 125 deletions(-) diff --git a/x-pack/metricbeat/module/aws/aws.go b/x-pack/metricbeat/module/aws/aws.go index 063a8c1437fa..edf11051fc43 100644 --- a/x-pack/metricbeat/module/aws/aws.go +++ b/x-pack/metricbeat/module/aws/aws.go @@ -31,10 +31,9 @@ type Config struct { // MetricSet is the base metricset for all aws metricsets type MetricSet struct { mb.BaseMetricSet - RegionsList []string - DurationString string - PeriodInSec int - AwsConfig *awssdk.Config + RegionsList []string + Period time.Duration + AwsConfig *awssdk.Config } // ModuleName is the name of this module. @@ -77,16 +76,10 @@ func NewMetricSet(base mb.BaseMetricSet) (*MetricSet, error) { awsConfig.Region = config.DefaultRegion - durationString, periodSec := convertPeriodToDuration(config.Period) - if err != nil { - return nil, err - } - metricSet := MetricSet{ - BaseMetricSet: base, - DurationString: durationString, - PeriodInSec: periodSec, - AwsConfig: &awsConfig, + BaseMetricSet: base, + Period: config.Period, + AwsConfig: &awsConfig, } // Construct MetricSet with a full regions list @@ -120,14 +113,6 @@ func getRegions(svc ec2iface.EC2API) (completeRegionsList []string, err error) { return } -func convertPeriodToDuration(period time.Duration) (string, int) { - // Set starttime double the default frequency earlier than the endtime in order to make sure - // GetMetricDataRequest gets the latest data point for each metric. - duration := "-" + (period * 2).String() - numberPeriod := int(period.Seconds()) - return duration, numberPeriod -} - // StringInSlice checks if a string is already exists in list func StringInSlice(str string, list []string) bool { for _, v := range list { diff --git a/x-pack/metricbeat/module/aws/aws_test.go b/x-pack/metricbeat/module/aws/aws_test.go index 5f6c884f93f0..665aef11825c 100644 --- a/x-pack/metricbeat/module/aws/aws_test.go +++ b/x-pack/metricbeat/module/aws/aws_test.go @@ -9,7 +9,6 @@ package aws import ( "fmt" "testing" - "time" awssdk "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/ec2" @@ -48,38 +47,3 @@ func TestGetRegions(t *testing.T) { assert.Equal(t, 1, len(regionsList)) assert.Equal(t, regionName, regionsList[0]) } - -func TestConvertPeriodToDuration(t *testing.T) { - cases := []struct { - period time.Duration - expectedDuration string - expectedPeriodNumber int - }{ - { - period: time.Duration(300) * time.Second, - expectedDuration: "-10m0s", - expectedPeriodNumber: 300, - }, - { - period: time.Duration(10) * time.Minute, - expectedDuration: "-20m0s", - expectedPeriodNumber: 600, - }, - { - period: time.Duration(30) * time.Second, - expectedDuration: "-1m0s", - expectedPeriodNumber: 30, - }, - { - period: time.Duration(60) * time.Second, - expectedDuration: "-2m0s", - expectedPeriodNumber: 60, - }, - } - - for _, c := range cases { - duration, periodSec := convertPeriodToDuration(c.period) - assert.Equal(t, c.expectedDuration, duration) - assert.Equal(t, c.expectedPeriodNumber, periodSec) - } -} diff --git a/x-pack/metricbeat/module/aws/cloudwatch/cloudwatch.go b/x-pack/metricbeat/module/aws/cloudwatch/cloudwatch.go index 486b01e8cc3a..73d52cfd6b31 100644 --- a/x-pack/metricbeat/module/aws/cloudwatch/cloudwatch.go +++ b/x-pack/metricbeat/module/aws/cloudwatch/cloudwatch.go @@ -91,10 +91,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // of an error set the Error field of mb.Event or simply call report.Error(). func (m *MetricSet) Fetch(report mb.ReporterV2) error { // Get startTime and endTime - startTime, endTime, err := aws.GetStartTimeEndTime(m.DurationString) - if err != nil { - return errors.Wrap(err, "error GetStartTimeEndTime") - } + startTime, endTime := aws.GetStartTimeEndTime(m.Period) // Get listMetrics and namespacesTotal from configuration listMetrics, namespacesTotal := readCloudwatchConfig(m.CloudwatchConfigs) @@ -102,7 +99,7 @@ func (m *MetricSet) Fetch(report mb.ReporterV2) error { awsConfig := m.MetricSet.AwsConfig.Copy() awsConfig.Region = regionName svcCloudwatch := cloudwatch.New(awsConfig) - err := createEvents(svcCloudwatch, listMetrics, regionName, m.PeriodInSec, startTime, endTime, report) + err := createEvents(svcCloudwatch, listMetrics, regionName, m.Period, startTime, endTime, report) if err != nil { return errors.Wrap(err, "createEvents failed") } @@ -124,7 +121,7 @@ func (m *MetricSet) Fetch(report mb.ReporterV2) error { continue } - err = createEvents(svcCloudwatch, listMetricsOutput, regionName, m.PeriodInSec, startTime, endTime, report) + err = createEvents(svcCloudwatch, listMetricsOutput, regionName, m.Period, startTime, endTime, report) if err != nil { return errors.Wrap(err, "createEvents failed for region "+regionName) } @@ -150,7 +147,7 @@ func readCloudwatchConfig(cloudwatchConfigs []Config) ([]cloudwatch.Metric, []st return listMetrics, namespacesTotal } -func constructMetricQueries(listMetricsOutput []cloudwatch.Metric, period int64) []cloudwatch.MetricDataQuery { +func constructMetricQueries(listMetricsOutput []cloudwatch.Metric, period time.Duration) []cloudwatch.MetricDataQuery { var metricDataQueries []cloudwatch.MetricDataQuery for i, listMetric := range listMetricsOutput { metricDataQuery := createMetricDataQuery(listMetric, i, period) @@ -181,15 +178,16 @@ func constructLabel(metric cloudwatch.Metric) string { return label } -func createMetricDataQuery(metric cloudwatch.Metric, index int, period int64) (metricDataQuery cloudwatch.MetricDataQuery) { +func createMetricDataQuery(metric cloudwatch.Metric, index int, period time.Duration) (metricDataQuery cloudwatch.MetricDataQuery) { statistic := "Average" id := "cw" + strconv.Itoa(index) label := constructLabel(metric) + periodInSec := int64(period.Seconds()) metricDataQuery = cloudwatch.MetricDataQuery{ Id: &id, MetricStat: &cloudwatch.MetricStat{ - Period: &period, + Period: &periodInSec, Stat: &statistic, Metric: &metric, }, @@ -267,7 +265,7 @@ func convertConfigToListMetrics(cloudwatchConfig Config, namespace string) cloud return listMetricsOutput } -func createEvents(svc cloudwatchiface.CloudWatchAPI, listMetricsTotal []cloudwatch.Metric, regionName string, period int, startTime time.Time, endTime time.Time, report mb.ReporterV2) error { +func createEvents(svc cloudwatchiface.CloudWatchAPI, listMetricsTotal []cloudwatch.Metric, regionName string, period time.Duration, startTime time.Time, endTime time.Time, report mb.ReporterV2) error { identifiers := getIdentifiers(listMetricsTotal) // Initialize events map per region, which stores one event per identifierValue events := map[string]mb.Event{} @@ -280,7 +278,7 @@ func createEvents(svc cloudwatchiface.CloudWatchAPI, listMetricsTotal []cloudwat var eventsNoIdentifier []mb.Event // Construct metricDataQueries - metricDataQueries := constructMetricQueries(listMetricsTotal, int64(period)) + metricDataQueries := constructMetricQueries(listMetricsTotal, period) if len(metricDataQueries) == 0 { return nil } diff --git a/x-pack/metricbeat/module/aws/ec2/ec2.go b/x-pack/metricbeat/module/aws/ec2/ec2.go index 13b280e92722..989fec8aac21 100644 --- a/x-pack/metricbeat/module/aws/ec2/ec2.go +++ b/x-pack/metricbeat/module/aws/ec2/ec2.go @@ -8,6 +8,7 @@ import ( "fmt" "strconv" "strings" + "time" "github.com/aws/aws-sdk-go-v2/service/cloudwatch" "github.com/aws/aws-sdk-go-v2/service/ec2" @@ -51,8 +52,8 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } // Check if period is set to be multiple of 60s or 300s - remainder300 := metricSet.PeriodInSec % 300 - remainder60 := metricSet.PeriodInSec % 60 + remainder300 := int(metricSet.Period.Seconds()) % 300 + remainder60 := int(metricSet.Period.Seconds()) % 60 if remainder300 != 0 || remainder60 != 0 { err := errors.New("period needs to be set to 60s (or a multiple of 60s) if detailed monitoring is " + "enabled for EC2 instances or set to 300s (or a multiple of 300s) if EC2 instances has basic monitoring. " + @@ -70,10 +71,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // of an error set the Error field of mb.Event or simply call report.Error(). func (m *MetricSet) Fetch(report mb.ReporterV2) error { // Get startTime and endTime - startTime, endTime, err := aws.GetStartTimeEndTime(m.DurationString) - if err != nil { - return errors.Wrap(err, "Error ParseDuration") - } + startTime, endTime := aws.GetStartTimeEndTime(m.Period) for _, regionName := range m.MetricSet.RegionsList { awsConfig := m.MetricSet.AwsConfig.Copy() @@ -102,7 +100,7 @@ func (m *MetricSet) Fetch(report mb.ReporterV2) error { var metricDataQueriesTotal []cloudwatch.MetricDataQuery for _, instanceID := range instanceIDs { - metricDataQueriesTotal = append(metricDataQueriesTotal, constructMetricQueries(listMetricsOutput, instanceID, m.PeriodInSec)...) + metricDataQueriesTotal = append(metricDataQueriesTotal, constructMetricQueries(listMetricsOutput, instanceID, m.Period)...) } var metricDataOutput []cloudwatch.MetricDataResult @@ -139,11 +137,11 @@ func (m *MetricSet) Fetch(report mb.ReporterV2) error { return nil } -func constructMetricQueries(listMetricsOutput []cloudwatch.Metric, instanceID string, periodInSec int) []cloudwatch.MetricDataQuery { +func constructMetricQueries(listMetricsOutput []cloudwatch.Metric, instanceID string, period time.Duration) []cloudwatch.MetricDataQuery { var metricDataQueries []cloudwatch.MetricDataQuery metricDataQueryEmpty := cloudwatch.MetricDataQuery{} for i, listMetric := range listMetricsOutput { - metricDataQuery := createMetricDataQuery(listMetric, instanceID, i, periodInSec) + metricDataQuery := createMetricDataQuery(listMetric, instanceID, i, period) if metricDataQuery == metricDataQueryEmpty { continue } @@ -260,9 +258,9 @@ func getInstancesPerRegion(svc ec2iface.EC2API) (instanceIDs []string, instances return } -func createMetricDataQuery(metric cloudwatch.Metric, instanceID string, index int, periodInSec int) (metricDataQuery cloudwatch.MetricDataQuery) { +func createMetricDataQuery(metric cloudwatch.Metric, instanceID string, index int, period time.Duration) (metricDataQuery cloudwatch.MetricDataQuery) { statistic := "Average" - period := int64(periodInSec) + periodInSeconds := int64(period.Seconds()) id := metricsetName + strconv.Itoa(index) metricDims := metric.Dimensions @@ -273,7 +271,7 @@ func createMetricDataQuery(metric cloudwatch.Metric, instanceID string, index in metricDataQuery = cloudwatch.MetricDataQuery{ Id: &id, MetricStat: &cloudwatch.MetricStat{ - Period: &period, + Period: &periodInSeconds, Stat: &statistic, Metric: &metric, }, diff --git a/x-pack/metricbeat/module/aws/ec2/ec2_test.go b/x-pack/metricbeat/module/aws/ec2/ec2_test.go index 802b957afc09..213851c6f2ae 100644 --- a/x-pack/metricbeat/module/aws/ec2/ec2_test.go +++ b/x-pack/metricbeat/module/aws/ec2/ec2_test.go @@ -217,7 +217,7 @@ func TestConstructMetricQueries(t *testing.T) { } listMetricsOutput := []cloudwatch.Metric{listMetric} - metricDataQuery := constructMetricQueries(listMetricsOutput, instanceID, 300) + metricDataQuery := constructMetricQueries(listMetricsOutput, instanceID, 5*time.Minute) assert.Equal(t, 1, len(metricDataQuery)) assert.Equal(t, "i-123 CPUUtilization", *metricDataQuery[0].Label) assert.Equal(t, "Average", *metricDataQuery[0].MetricStat.Stat) diff --git a/x-pack/metricbeat/module/aws/s3_daily_storage/s3_daily_storage.go b/x-pack/metricbeat/module/aws/s3_daily_storage/s3_daily_storage.go index 3c3b8273b3ae..29e613ed5e90 100644 --- a/x-pack/metricbeat/module/aws/s3_daily_storage/s3_daily_storage.go +++ b/x-pack/metricbeat/module/aws/s3_daily_storage/s3_daily_storage.go @@ -8,6 +8,7 @@ import ( "fmt" "strconv" "strings" + "time" "github.com/aws/aws-sdk-go-v2/service/cloudwatch" "github.com/pkg/errors" @@ -55,7 +56,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } // Check if period is set to be multiple of 86400s - remainder := metricSet.PeriodInSec % 86400 + remainder := int(metricSet.Period.Seconds()) % 86400 if remainder != 0 { err := errors.New("period needs to be set to 86400s (or a multiple of 86400s). " + "To avoid data missing or extra costs, please make sure period is set correctly " + @@ -74,10 +75,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { func (m *MetricSet) Fetch(report mb.ReporterV2) error { namespace := "AWS/S3" // Get startTime and endTime - startTime, endTime, err := aws.GetStartTimeEndTime(m.DurationString) - if err != nil { - return errors.Wrap(err, "Error ParseDuration") - } + startTime, endTime := aws.GetStartTimeEndTime(m.Period) // GetMetricData for AWS S3 from Cloudwatch for _, regionName := range m.MetricSet.RegionsList { @@ -96,7 +94,7 @@ func (m *MetricSet) Fetch(report mb.ReporterV2) error { continue } - metricDataQueries := constructMetricQueries(listMetricsOutputs, m.PeriodInSec) + metricDataQueries := constructMetricQueries(listMetricsOutputs, m.Period) // Use metricDataQueries to make GetMetricData API calls metricDataOutputs, err := aws.GetMetricDataResults(metricDataQueries, svcCloudwatch, startTime, endTime) if err != nil { @@ -142,7 +140,7 @@ func getBucketNames(listMetricsOutputs []cloudwatch.Metric) (bucketNames []strin return } -func constructMetricQueries(listMetricsOutputs []cloudwatch.Metric, periodInSec int) []cloudwatch.MetricDataQuery { +func constructMetricQueries(listMetricsOutputs []cloudwatch.Metric, period time.Duration) []cloudwatch.MetricDataQuery { var metricDataQueries []cloudwatch.MetricDataQuery metricDataQueryEmpty := cloudwatch.MetricDataQuery{} metricNames := []string{"NumberOfObjects", "BucketSizeBytes"} @@ -151,7 +149,7 @@ func constructMetricQueries(listMetricsOutputs []cloudwatch.Metric, periodInSec continue } - metricDataQuery := createMetricDataQuery(listMetric, periodInSec, i) + metricDataQuery := createMetricDataQuery(listMetric, period, i) if metricDataQuery == metricDataQueryEmpty { continue } @@ -160,9 +158,9 @@ func constructMetricQueries(listMetricsOutputs []cloudwatch.Metric, periodInSec return metricDataQueries } -func createMetricDataQuery(metric cloudwatch.Metric, periodInSec int, index int) (metricDataQuery cloudwatch.MetricDataQuery) { +func createMetricDataQuery(metric cloudwatch.Metric, period time.Duration, index int) (metricDataQuery cloudwatch.MetricDataQuery) { statistic := "Average" - period := int64(periodInSec) + periodInSec := int64(period.Seconds()) id := "s3d" + strconv.Itoa(index) metricDims := metric.Dimensions bucketName := "" @@ -180,7 +178,7 @@ func createMetricDataQuery(metric cloudwatch.Metric, periodInSec int, index int) metricDataQuery = cloudwatch.MetricDataQuery{ Id: &id, MetricStat: &cloudwatch.MetricStat{ - Period: &period, + Period: &periodInSec, Stat: &statistic, Metric: &metric, }, diff --git a/x-pack/metricbeat/module/aws/s3_request/s3_request.go b/x-pack/metricbeat/module/aws/s3_request/s3_request.go index 30a4f491191b..c81506ded913 100644 --- a/x-pack/metricbeat/module/aws/s3_request/s3_request.go +++ b/x-pack/metricbeat/module/aws/s3_request/s3_request.go @@ -8,6 +8,7 @@ import ( "fmt" "strconv" "strings" + "time" "github.com/aws/aws-sdk-go-v2/service/cloudwatch" "github.com/pkg/errors" @@ -54,7 +55,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } // Check if period is set to be multiple of 60s - remainder := metricSet.PeriodInSec % 60 + remainder := int(metricSet.Period.Seconds()) % 60 if remainder != 0 { err := errors.New("period needs to be set to 60s (or a multiple of 60s). " + "To avoid data missing or extra costs, please make sure period is set correctly " + @@ -73,10 +74,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { func (m *MetricSet) Fetch(report mb.ReporterV2) error { namespace := "AWS/S3" // Get startTime and endTime - startTime, endTime, err := aws.GetStartTimeEndTime(m.DurationString) - if err != nil { - return errors.Wrap(err, "Error ParseDuration") - } + startTime, endTime := aws.GetStartTimeEndTime(m.Period) // GetMetricData for AWS S3 from Cloudwatch for _, regionName := range m.MetricSet.RegionsList { @@ -94,7 +92,7 @@ func (m *MetricSet) Fetch(report mb.ReporterV2) error { continue } - metricDataQueries := constructMetricQueries(listMetricsOutputs, m.PeriodInSec) + metricDataQueries := constructMetricQueries(listMetricsOutputs, m.Period) // This happens when S3 cloudwatch request metrics are not enabled. if len(metricDataQueries) == 0 { continue @@ -143,9 +141,9 @@ func getBucketNames(listMetricsOutputs []cloudwatch.Metric) (bucketNames []strin return } -func createMetricDataQuery(metric cloudwatch.Metric, periodInSec int, index int) (metricDataQuery cloudwatch.MetricDataQuery) { +func createMetricDataQuery(metric cloudwatch.Metric, period time.Duration, index int) (metricDataQuery cloudwatch.MetricDataQuery) { statistic := "Sum" - period := int64(periodInSec) + periodInSec := int64(period.Seconds()) id := "s3r" + strconv.Itoa(index) metricDims := metric.Dimensions bucketName := "" @@ -162,7 +160,7 @@ func createMetricDataQuery(metric cloudwatch.Metric, periodInSec int, index int) metricDataQuery = cloudwatch.MetricDataQuery{ Id: &id, MetricStat: &cloudwatch.MetricStat{ - Period: &period, + Period: &periodInSec, Stat: &statistic, Metric: &metric, }, @@ -171,7 +169,7 @@ func createMetricDataQuery(metric cloudwatch.Metric, periodInSec int, index int) return } -func constructMetricQueries(listMetricsOutputs []cloudwatch.Metric, periodInSec int) []cloudwatch.MetricDataQuery { +func constructMetricQueries(listMetricsOutputs []cloudwatch.Metric, period time.Duration) []cloudwatch.MetricDataQuery { var metricDataQueries []cloudwatch.MetricDataQuery metricDataQueryEmpty := cloudwatch.MetricDataQuery{} dailyMetricNames := []string{"NumberOfObjects", "BucketSizeBytes"} @@ -180,7 +178,7 @@ func constructMetricQueries(listMetricsOutputs []cloudwatch.Metric, periodInSec continue } - metricDataQuery := createMetricDataQuery(listMetric, periodInSec, i) + metricDataQuery := createMetricDataQuery(listMetric, period, i) if metricDataQuery == metricDataQueryEmpty { continue } diff --git a/x-pack/metricbeat/module/aws/sqs/sqs.go b/x-pack/metricbeat/module/aws/sqs/sqs.go index ffd6d560b011..d98984d4c3c4 100644 --- a/x-pack/metricbeat/module/aws/sqs/sqs.go +++ b/x-pack/metricbeat/module/aws/sqs/sqs.go @@ -8,6 +8,7 @@ import ( "fmt" "strconv" "strings" + "time" "github.com/aws/aws-sdk-go-v2/service/cloudwatch" "github.com/aws/aws-sdk-go-v2/service/sqs" @@ -52,7 +53,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } // Check if period is set to be multiple of 300s - remainder := metricSet.PeriodInSec % 300 + remainder := int(metricSet.Period.Seconds()) % 300 if remainder != 0 { err := errors.New("period needs to be set to 300s (or a multiple of 300s). " + "To avoid data missing or extra costs, please make sure period is set correctly in config.yml") @@ -70,10 +71,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { func (m *MetricSet) Fetch(report mb.ReporterV2) error { namespace := "AWS/SQS" // Get startTime and endTime - startTime, endTime, err := aws.GetStartTimeEndTime(m.DurationString) - if err != nil { - return errors.Wrap(err, "Error ParseDuration") - } + startTime, endTime := aws.GetStartTimeEndTime(m.Period) for _, regionName := range m.MetricSet.RegionsList { awsConfig := m.MetricSet.AwsConfig.Copy() @@ -104,7 +102,7 @@ func (m *MetricSet) Fetch(report mb.ReporterV2) error { } // Construct metricDataQueries - metricDataQueries := constructMetricQueries(listMetricsOutput, int64(m.PeriodInSec)) + metricDataQueries := constructMetricQueries(listMetricsOutput, m.Period) if len(metricDataQueries) == 0 { continue } @@ -141,7 +139,7 @@ func getQueueUrls(svc sqsiface.SQSAPI) ([]string, error) { return output.QueueUrls, nil } -func constructMetricQueries(listMetricsOutput []cloudwatch.Metric, period int64) []cloudwatch.MetricDataQuery { +func constructMetricQueries(listMetricsOutput []cloudwatch.Metric, period time.Duration) []cloudwatch.MetricDataQuery { var metricDataQueries []cloudwatch.MetricDataQuery for i, listMetric := range listMetricsOutput { metricDataQuery := createMetricDataQuery(listMetric, i, period) @@ -150,8 +148,9 @@ func constructMetricQueries(listMetricsOutput []cloudwatch.Metric, period int64) return metricDataQueries } -func createMetricDataQuery(metric cloudwatch.Metric, index int, period int64) (metricDataQuery cloudwatch.MetricDataQuery) { +func createMetricDataQuery(metric cloudwatch.Metric, index int, period time.Duration) (metricDataQuery cloudwatch.MetricDataQuery) { statistic := "Average" + periodInSec := int64(period.Seconds()) id := "sqs" + strconv.Itoa(index) metricDims := metric.Dimensions metricName := *metric.MetricName @@ -166,7 +165,7 @@ func createMetricDataQuery(metric cloudwatch.Metric, index int, period int64) (m metricDataQuery = cloudwatch.MetricDataQuery{ Id: &id, MetricStat: &cloudwatch.MetricStat{ - Period: &period, + Period: &periodInSec, Stat: &statistic, Metric: &metric, }, diff --git a/x-pack/metricbeat/module/aws/utils.go b/x-pack/metricbeat/module/aws/utils.go index 7ffab2a625f3..ccaacdc193df 100644 --- a/x-pack/metricbeat/module/aws/utils.go +++ b/x-pack/metricbeat/module/aws/utils.go @@ -16,14 +16,11 @@ import ( ) // GetStartTimeEndTime function uses durationString to create startTime and endTime for queries. -func GetStartTimeEndTime(durationString string) (startTime time.Time, endTime time.Time, err error) { - endTime = time.Now() - duration, err := time.ParseDuration(durationString) - if err != nil { - return - } - startTime = endTime.Add(duration) - return startTime, endTime, nil +func GetStartTimeEndTime(period time.Duration) (time.Time, time.Time) { + endTime := time.Now() + // Set startTime double the period earlier than the endtime in order to + // make sure GetMetricDataRequest gets the latest data point for each metric. + return endTime.Add(period * -2), endTime } // GetListMetricsOutput function gets listMetrics results from cloudwatch per namespace for each region. diff --git a/x-pack/metricbeat/module/aws/utils_test.go b/x-pack/metricbeat/module/aws/utils_test.go index 3e539f4f122c..03f53f71e4b1 100644 --- a/x-pack/metricbeat/module/aws/utils_test.go +++ b/x-pack/metricbeat/module/aws/utils_test.go @@ -112,11 +112,10 @@ func TestGetListMetricsOutput(t *testing.T) { } func TestGetMetricDataPerRegion(t *testing.T) { - startTime, endTime, err := GetStartTimeEndTime("-10m") - assert.NoError(t, err) + startTime, endTime := GetStartTimeEndTime(10 * time.Minute) mockSvc := &MockCloudWatchClient{} - metricDataQueries := []cloudwatch.MetricDataQuery{} + var metricDataQueries []cloudwatch.MetricDataQuery getMetricDataOutput, err := getMetricDataPerRegion(metricDataQueries, nil, mockSvc, startTime, endTime) if err != nil { fmt.Println("failed getMetricDataPerRegion: ", err) @@ -142,8 +141,7 @@ func TestGetMetricDataPerRegion(t *testing.T) { } func TestGetMetricDataResults(t *testing.T) { - startTime, endTime, err := GetStartTimeEndTime("-10m") - assert.NoError(t, err) + startTime, endTime := GetStartTimeEndTime(10 * time.Minute) mockSvc := &MockCloudWatchClient{} metricInfo := cloudwatch.Metric{ From 965310573289806993cec957e5c9391bb3612e04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20P=C3=A9rez-Aradros=20Herce?= Date: Tue, 7 May 2019 17:17:04 +0200 Subject: [PATCH 02/59] Fix memory leak in Filebeat pipeline acker (#12063) * Fix memory leak in Filebeat pipeline acker Before this change acker goroutine was kept forever as processed events count was not correctly updated. Filebeat sends an empty event to update file states, this event is not published, but treated as dropped, without updating counters. This change makes sures that `a.events` count gets updated for dropped events also, so the acker gets closed after all ACKs happen. --- CHANGELOG.next.asciidoc | 1 + libbeat/publisher/pipeline/acker.go | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 0413976eb086..cd521c0c70fa 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -87,6 +87,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Fix `add_docker_metadata` source matching, using `log.file.path` field now. {pull}11577[11577] - Add missing Kubernetes metadata fields to Filebeat CoreDNS module, and fix a documentation error. {pull}11591[11591] - Reduce memory usage if long lines are truncated to fit `max_bytes` limit. The line buffer is copied into a smaller buffer now. This allows the runtime to release unused memory earlier. {pull}11524[11524] +- Fix memory leak in Filebeat pipeline acker. {pull}12063[12063] *Heartbeat* diff --git a/libbeat/publisher/pipeline/acker.go b/libbeat/publisher/pipeline/acker.go index 1d4155677aca..5689b86d4458 100644 --- a/libbeat/publisher/pipeline/acker.go +++ b/libbeat/publisher/pipeline/acker.go @@ -139,6 +139,12 @@ func (a *gapCountACK) ackLoop() { case <-a.done: closing = true a.done = nil + if a.events.Load() == 0 { + // stop worker, if all events accounted for have been ACKed. + // If new events are added after this acker won't handle them, which may + // result in duplicates + return + } case <-a.pipeline.ackDone: return @@ -146,12 +152,13 @@ func (a *gapCountACK) ackLoop() { case n := <-acks: empty := a.handleACK(n) if empty && closing && a.events.Load() == 0 { - // stop worker, iff all events accounted for have been ACKed + // stop worker, if and only if all events accounted for have been ACKed return } case <-drop: // TODO: accumulate multiple drop events + flush count with timer + a.events.Sub(1) a.fn(1, 0) } } From 354cd4d55fa2f4fab433e2cae7a5afcbf261b412 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Tue, 7 May 2019 19:20:37 -0400 Subject: [PATCH 03/59] Add convert processor (#11686) The `convert` processor converts a field in the event to a different type, such as converting a string to an integer. For a full description of the processor's capabilities see the included documentation. Closes #8124 --- CHANGELOG.next.asciidoc | 1 + libbeat/cmd/instance/imports.go | 1 + libbeat/docs/processors-using.asciidoc | 47 ++ libbeat/processors/convert/config.go | 134 ++++++ libbeat/processors/convert/convert.go | 403 +++++++++++++++++ libbeat/processors/convert/convert_test.go | 407 ++++++++++++++++++ .../javascript/module/processor/processor.go | 2 + 7 files changed, 995 insertions(+) create mode 100644 libbeat/processors/convert/config.go create mode 100644 libbeat/processors/convert/convert.go create mode 100644 libbeat/processors/convert/convert_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index cd521c0c70fa..a90fd7406f14 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -135,6 +135,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Updated go-seccomp-bpf library to v1.1.0 which updates syscall lists for Linux v5.0. {pull}NNNN[NNNN] - Add `add_observer_metadata` processor. {pull}11394[11394] - Add `decode_csv_fields` processor. {pull}11753[11753] +- Add `convert` processor for converting data types of fields. {issue}8124[8124] {pull}11686[11686] *Auditbeat* diff --git a/libbeat/cmd/instance/imports.go b/libbeat/cmd/instance/imports.go index 413961edd472..0d1dac5513f4 100644 --- a/libbeat/cmd/instance/imports.go +++ b/libbeat/cmd/instance/imports.go @@ -32,6 +32,7 @@ import ( _ "github.com/elastic/beats/libbeat/processors/add_observer_metadata" _ "github.com/elastic/beats/libbeat/processors/add_process_metadata" _ "github.com/elastic/beats/libbeat/processors/communityid" + _ "github.com/elastic/beats/libbeat/processors/convert" _ "github.com/elastic/beats/libbeat/processors/dissect" _ "github.com/elastic/beats/libbeat/processors/dns" _ "github.com/elastic/beats/libbeat/publisher/includes" // Register publisher pipeline modules diff --git a/libbeat/docs/processors-using.asciidoc b/libbeat/docs/processors-using.asciidoc index 7a682217cc58..045a3f41f9fa 100644 --- a/libbeat/docs/processors-using.asciidoc +++ b/libbeat/docs/processors-using.asciidoc @@ -209,6 +209,7 @@ The supported processors are: * <> * <> * <> + * <> ifdef::has_decode_csv_fields_processor[] * <> endif::[] @@ -907,6 +908,52 @@ silently continue without adding the target field. The processor also accepts an optional `seed` parameter that must be a 16-bit unsigned integer. This value gets incorporated into all generated hashes. +[[convert]] +=== Convert + +The `convert` processor converts a field in the event to a different type, such +as converting a string to an integer. + +The supported types include: `integer`, `long`, `float`, `double`, `string`, +`boolean`, and `ip`. + +The `ip` type is effectively an alias for `string`, but with an added validation +that the value is an IPv4 or IPv6 address. + +[source,yaml] +---- +processors: + - convert: + fields: + - {from: "src_ip", to: "source.ip", type: "ip"} + - {from: "src_port", to: "source.port", type: "integer"} + ignore_missing: true + fail_on_error: false +---- + +The `convert` processor has the following configuration settings: + +`fields`:: (Required) This is the list of fields to convert. At least one item +must be contained in the list. Each item in the list must have a `from` key that +specifies the source field. The `to` key is optional and specifies where to +assign the converted value. If `to` is omitted then the `from` field is updated +in-place. The `type` key specifies the data type to convert the value to. If +`type` is omitted then the processor copies or renames the field without any +type conversion. + +`ignore_missing`:: (Optional) If `true` the processor continues to the next +field when the `from` key is not found in the event. If false then the processor +returns an error and does not process the remaining fields. Default is `false`. + +`fail_on_error`:: (Optional) If false type conversion failures are ignored and +the processor continues to the next field. Default is `true`. + +`tag`:: (Optional) An identifier for this processor. Useful for debugging. + +`mode`:: (Optional) When both `from` and `to` are defined for a field then +`mode` controls whether to `copy` or `rename` the field when the type conversion +is successful. Default is `copy`. + [[drop-event]] === Drop events diff --git a/libbeat/processors/convert/config.go b/libbeat/processors/convert/config.go new file mode 100644 index 000000000000..53af8bc80ba7 --- /dev/null +++ b/libbeat/processors/convert/config.go @@ -0,0 +1,134 @@ +// 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 convert + +import ( + "fmt" + "strings" + + "github.com/pkg/errors" +) + +func defaultConfig() config { + return config{ + IgnoreMissing: false, + FailOnError: true, + Mode: copyMode, + } +} + +type config struct { + Fields []field `config:"fields" validate:"required"` // List of fields to convert. + Tag string `config:"tag"` // Processor ID for debug and metrics. + IgnoreMissing bool `config:"ignore_missing"` // Skip field when From field is missing. + FailOnError bool `config:"fail_on_error"` // Ignore errors (missing fields / conversion failures). + Mode mode `config:"mode"` // Mode (copy vs rename). +} + +type field struct { + From string `config:"from" validate:"required"` + To string `config:"to"` + Type dataType `config:"type"` +} + +func (f field) Validate() error { + if f.To == "" && f.Type == unset { + return errors.New("each field must have a 'to' or a 'type'") + } + return nil +} + +func (f field) String() string { + return fmt.Sprintf("{from=%v, to=%v, type=%v}", f.From, f.To, f.Type) +} + +type dataType uint8 + +// List of dataTypes. +const ( + unset dataType = iota + Integer + Long + Float + Double + String + Boolean + IP +) + +var dataTypeNames = map[dataType]string{ + unset: "[unset]", + Integer: "integer", + Long: "long", + Float: "float", + Double: "double", + String: "string", + Boolean: "boolean", + IP: "ip", +} + +func (dt dataType) String() string { + return dataTypeNames[dt] +} + +func (dt dataType) MarshalText() ([]byte, error) { + return []byte(dt.String()), nil +} + +func (dt *dataType) Unpack(s string) error { + s = strings.ToLower(s) + for typ, name := range dataTypeNames { + if s == name { + *dt = typ + return nil + } + } + return errors.Errorf("invalid data type: %v", s) +} + +type mode uint8 + +// List of modes. +const ( + copyMode mode = iota + renameMode +) + +var modeNames = map[mode]string{ + copyMode: "copy", + renameMode: "rename", +} + +func (m mode) String() string { + return modeNames[m] +} + +func (m mode) MarshalText() ([]byte, error) { + return []byte(m.String()), nil +} + +func (m *mode) Unpack(s string) error { + s = strings.ToLower(s) + for md, name := range modeNames { + if s == name { + *m = md + return nil + } + } + return errors.Errorf("invalid mode: %v", s) +} diff --git a/libbeat/processors/convert/convert.go b/libbeat/processors/convert/convert.go new file mode 100644 index 000000000000..8e84d93de230 --- /dev/null +++ b/libbeat/processors/convert/convert.go @@ -0,0 +1,403 @@ +// 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 convert + +import ( + "encoding/json" + "fmt" + "net" + "strconv" + "strings" + + "github.com/pkg/errors" + + "github.com/elastic/beats/libbeat/beat" + "github.com/elastic/beats/libbeat/common" + "github.com/elastic/beats/libbeat/logp" + "github.com/elastic/beats/libbeat/processors" +) + +const logName = "processor.convert" + +func init() { + processors.RegisterPlugin("convert", New) +} + +type processor struct { + config + log *logp.Logger + + converted []interface{} // Temporary storage for converted values. +} + +// New constructs a new convert processor. +func New(cfg *common.Config) (processors.Processor, error) { + c := defaultConfig() + if err := cfg.Unpack(&c); err != nil { + return nil, errors.Wrap(err, "fail to unpack the convert processor configuration") + } + + return newConvert(c) +} + +func newConvert(c config) (*processor, error) { + log := logp.NewLogger(logName) + if c.Tag != "" { + log = log.With("instance_id", c.Tag) + } + + return &processor{config: c, log: log, converted: make([]interface{}, len(c.Fields))}, nil +} + +func (p *processor) String() string { + json, _ := json.Marshal(p.config) + return "convert=" + string(json) +} + +var ignoredFailure = struct{}{} + +func resetValues(s []interface{}) { + for i := range s { + s[i] = nil + } +} + +func (p *processor) Run(event *beat.Event) (*beat.Event, error) { + defer resetValues(p.converted) + + // Convert the fields and write the results to temporary storage. + if err := p.convertFields(event); err != nil { + return event, err + } + + // Backup original event. + saved := *event + if len(p.Fields) > 1 && p.FailOnError { + // Clone the fields to allow the processor to undo the operation on + // failure (like a transaction). If there is only one conversion then + // cloning is unnecessary because there are no previous changes to + // rollback (so avoid the expensive clone operation). + saved.Fields = event.Fields.Clone() + saved.Meta = event.Meta.Clone() + } + + // Update the event with the converted values. + if err := p.writeToEvent(event); err != nil { + return &saved, err + } + + return event, nil +} + +func (p *processor) convertFields(event *beat.Event) error { + // Write conversion results to temporary storage. + for i, conv := range p.Fields { + v, err := p.convertField(event, conv) + if err != nil { + if p.FailOnError { + return err + } + v = ignoredFailure + } + p.converted[i] = v + } + + return nil +} + +func (p *processor) convertField(event *beat.Event, conversion field) (interface{}, error) { + v, err := event.GetValue(conversion.From) + if err != nil { + if p.IgnoreMissing && errors.Cause(err) == common.ErrKeyNotFound { + return ignoredFailure, nil + } + return nil, newConvertError(conversion, err, p.Tag, "field [%v] is missing", conversion.From) + } + + if conversion.Type > unset { + t, err := transformType(conversion.Type, v) + if err != nil { + return nil, newConvertError(conversion, err, p.Tag, "unable to convert value [%v]", v) + } + v = t + } + + return v, nil +} + +func (p *processor) writeToEvent(event *beat.Event) error { + for i, conversion := range p.Fields { + v := p.converted[i] + if v == ignoredFailure { + continue + } + + if conversion.To != "" { + switch p.Mode { + case renameMode: + if _, err := event.PutValue(conversion.To, v); err != nil && p.FailOnError { + return newConvertError(conversion, err, p.Tag, "failed to put field [%v]", conversion.To) + } + event.Delete(conversion.From) + case copyMode: + if _, err := event.PutValue(conversion.To, cloneValue(v)); err != nil && p.FailOnError { + return newConvertError(conversion, err, p.Tag, "failed to put field [%v]", conversion.To) + } + } + } else { + // In-place conversion. + event.PutValue(conversion.From, v) + } + } + + return nil +} + +func transformType(typ dataType, value interface{}) (interface{}, error) { + switch typ { + case String: + return toString(value) + case Long: + return toLong(value) + case Integer: + return toInteger(value) + case Float: + return toFloat(value) + case Double: + return toDouble(value) + case Boolean: + return toBoolean(value) + case IP: + return toIP(value) + default: + return value, nil + } +} + +func toString(value interface{}) (string, error) { + switch v := value.(type) { + case nil: + return "", errors.New("invalid conversion of [null] to string") + case string: + return v, nil + default: + return fmt.Sprintf("%v", value), nil + } +} + +func toLong(value interface{}) (int64, error) { + switch v := value.(type) { + case string: + return strconv.ParseInt(v, 0, 64) + case int: + return int64(v), nil + case int8: + return int64(v), nil + case int16: + return int64(v), nil + case int32: + return int64(v), nil + case int64: + return v, nil + case uint: + return int64(v), nil + case uint8: + return int64(v), nil + case uint16: + return int64(v), nil + case uint32: + return int64(v), nil + case uint64: + return int64(v), nil + case float32: + return int64(v), nil + case float64: + return int64(v), nil + default: + return 0, errors.Errorf("invalid conversion of [%T] to long", value) + } +} + +func toInteger(value interface{}) (int32, error) { + switch v := value.(type) { + case string: + i, err := strconv.ParseInt(v, 0, 32) + return int32(i), err + case int: + return int32(v), nil + case int8: + return int32(v), nil + case int16: + return int32(v), nil + case int32: + return v, nil + case int64: + return int32(v), nil + case uint: + return int32(v), nil + case uint8: + return int32(v), nil + case uint16: + return int32(v), nil + case uint32: + return int32(v), nil + case uint64: + return int32(v), nil + case float32: + return int32(v), nil + case float64: + return int32(v), nil + default: + return 0, errors.Errorf("invalid conversion of [%T] to integer", value) + } +} + +func toFloat(value interface{}) (float32, error) { + switch v := value.(type) { + case string: + f, err := strconv.ParseFloat(v, 32) + return float32(f), err + case int: + return float32(v), nil + case int8: + return float32(v), nil + case int16: + return float32(v), nil + case int32: + return float32(v), nil + case int64: + return float32(v), nil + case uint: + return float32(v), nil + case uint8: + return float32(v), nil + case uint16: + return float32(v), nil + case uint32: + return float32(v), nil + case uint64: + return float32(v), nil + case float32: + return v, nil + case float64: + return float32(v), nil + default: + return 0, errors.Errorf("invalid conversion of [%T] to float", value) + } +} + +func toDouble(value interface{}) (float64, error) { + switch v := value.(type) { + case string: + f, err := strconv.ParseFloat(v, 64) + return float64(f), err + case int: + return float64(v), nil + case int8: + return float64(v), nil + case int16: + return float64(v), nil + case int32: + return float64(v), nil + case int64: + return float64(v), nil + case uint: + return float64(v), nil + case uint8: + return float64(v), nil + case uint16: + return float64(v), nil + case uint32: + return float64(v), nil + case uint64: + return float64(v), nil + case float32: + return float64(v), nil + case float64: + return v, nil + default: + return 0, errors.Errorf("invalid conversion of [%T] to float", value) + } +} + +func toBoolean(value interface{}) (bool, error) { + switch v := value.(type) { + case string: + return strconv.ParseBool(v) + case bool: + return v, nil + default: + return false, errors.Errorf("invalid conversion of [%T] to boolean", value) + } +} + +func toIP(value interface{}) (string, error) { + switch v := value.(type) { + case string: + // This is validating that the value is an IP. + if net.ParseIP(v) != nil { + return v, nil + } + return "", errors.New("value is not a valid IP address") + default: + return "", errors.Errorf("invalid conversion of [%T] to IP", value) + } +} + +func newConvertError(conversion field, cause error, tag string, message string, params ...interface{}) error { + var buf strings.Builder + buf.WriteString("failed in processor.convert") + if tag != "" { + buf.WriteString(" with instance_id=") + buf.WriteString(tag) + } + buf.WriteString(": conversion of field [") + buf.WriteString(conversion.From) + buf.WriteString("] to type [") + buf.WriteString(conversion.Type.String()) + buf.WriteString("]") + if conversion.To != "" { + buf.WriteString(" with target field [") + buf.WriteString(conversion.To) + buf.WriteString("]") + } + buf.WriteString(" failed: ") + fmt.Fprintf(&buf, message, params...) + return errors.Wrapf(cause, buf.String()) +} + +// cloneValue returns a shallow copy of a map. All other types are passed +// through in the return. This should be used when making straight copies of +// maps without doing any type conversions. +func cloneValue(value interface{}) interface{} { + switch v := value.(type) { + case common.MapStr: + return v.Clone() + case map[string]interface{}: + return common.MapStr(v).Clone() + case []interface{}: + len := len(v) + newArr := make([]interface{}, len) + for idx, val := range v { + newArr[idx] = cloneValue(val) + } + return newArr + default: + return value + } +} diff --git a/libbeat/processors/convert/convert_test.go b/libbeat/processors/convert/convert_test.go new file mode 100644 index 000000000000..2469fe1848c9 --- /dev/null +++ b/libbeat/processors/convert/convert_test.go @@ -0,0 +1,407 @@ +// 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 convert + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/elastic/beats/libbeat/beat" + "github.com/elastic/beats/libbeat/common" +) + +func TestConvert(t *testing.T) { + t.Run("ignore_missing", func(t *testing.T) { + c := defaultConfig() + c.Fields = append(c.Fields, field{From: "src", To: "dst", Type: Integer}) + + p, err := newConvert(c) + if err != nil { + t.Fatal(err) + } + + evt := &beat.Event{Fields: common.MapStr{}} + + // Defaults. + p.IgnoreMissing = false + p.FailOnError = true + _, err = p.Run(evt) + if assert.Error(t, err) { + assert.Contains(t, err.Error(), "field [src] is missing") + } + + p.IgnoreMissing = true + p.FailOnError = true + _, err = p.Run(evt) + if err != nil { + t.Fatal(err) + } + + p.IgnoreMissing = true + p.FailOnError = false + _, err = p.Run(evt) + if err != nil { + t.Fatal(err) + } + + p.IgnoreMissing = false + p.FailOnError = false + _, err = p.Run(evt) + if err != nil { + t.Fatal(err) + } + }) + + t.Run("fail_on_error", func(t *testing.T) { + c := defaultConfig() + c.Fields = append(c.Fields, field{From: "source.address", To: "source.ip", Type: IP}) + + p, err := newConvert(c) + if err != nil { + t.Fatal(err) + } + + evt := &beat.Event{Fields: common.MapStr{"source": common.MapStr{"address": "host.local"}}} + + _, err = p.Run(evt) + if assert.Error(t, err) { + assert.Contains(t, err.Error(), "unable to convert") + } + + p.FailOnError = false + _, err = p.Run(evt) + if err != nil { + t.Fatal(err) + } + }) + + t.Run("mode", func(t *testing.T) { + c := defaultConfig() + c.Fields = append(c.Fields, field{From: "source.address", To: "source.ip", Type: IP}) + + p, err := newConvert(c) + if err != nil { + t.Fatal(err) + } + + const loopback = "127.0.0.1" + fields := common.MapStr{"source": common.MapStr{"address": loopback}} + + t.Run("copy", func(t *testing.T) { + evt := &beat.Event{Fields: fields.Clone()} + evt, err = p.Run(evt) + if err != nil { + t.Fatal(err) + } + address, _ := evt.GetValue("source.address") + assert.Equal(t, loopback, address) + ip, _ := evt.GetValue("source.ip") + assert.Equal(t, loopback, ip) + }) + + t.Run("rename", func(t *testing.T) { + p.Mode = renameMode + + evt := &beat.Event{Fields: fields.Clone()} + evt, err = p.Run(evt) + if err != nil { + t.Fatal(err) + } + _, err := evt.GetValue("source.address") + assert.Error(t, err) + ip, _ := evt.GetValue("source.ip") + assert.Equal(t, loopback, ip) + }) + }) + + t.Run("string", func(t *testing.T) { + c := defaultConfig() + c.Tag = "convert_ip" + c.Fields = append(c.Fields, field{From: "source.address", To: "source.ip", Type: IP}) + + p, err := newConvert(c) + if err != nil { + t.Fatal(err) + } + + assert.Equal(t, `convert={"Fields":`+ + `[{"From":"source.address","To":"source.ip","Type":"ip"}],`+ + `"Tag":"convert_ip","IgnoreMissing":false,"FailOnError":true,"Mode":"copy"}`, + p.String()) + }) +} + +func TestConvertRun(t *testing.T) { + tests := map[string]struct { + config common.MapStr + input beat.Event + expected beat.Event + fail bool + errContains string + }{ + "missing field": { + config: common.MapStr{ + "fields": []common.MapStr{ + {"from": "port", "type": "integer"}, + {"from": "address", "to": "ip", "type": "ip"}, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "port": "80", + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "port": "80", + }, + }, + fail: true, + }, + "put error no clone": { + config: common.MapStr{ + "fields": []common.MapStr{ + {"from": "port", "to": "port.number", "type": "integer"}, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "port": "80", + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "port": "80", + }, + }, + fail: true, + }, + "put error with clone": { + config: common.MapStr{ + "fields": []common.MapStr{ + {"from": "id", "to": "event.id", "type": "integer"}, + {"from": "port", "to": "port.number", "type": "integer"}, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "id": "32", + "port": "80", + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "id": "32", + "port": "80", + }, + }, + fail: true, + }, + "invalid conversion": { + config: common.MapStr{ + "fields": []common.MapStr{ + {"from": "address", "to": "ip", "type": "ip"}, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "address": "-", + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "address": "-", + }, + }, + fail: true, + errContains: "unable to convert value [-]: value is not a valid IP address", + }, + } + + for title, tt := range tests { + t.Run(title, func(t *testing.T) { + processor, err := New(common.MustNewConfigFrom(tt.config)) + if err != nil { + t.Fatal(err) + } + result, err := processor.Run(&tt.input) + if tt.expected.Fields != nil { + assert.Equal(t, tt.expected.Fields.Flatten(), result.Fields.Flatten()) + assert.Equal(t, tt.expected.Meta.Flatten(), result.Meta.Flatten()) + assert.Equal(t, tt.expected.Timestamp, result.Timestamp) + } + if tt.fail { + assert.Error(t, err) + t.Log("got expected error", err) + if tt.errContains != "" { + assert.Contains(t, err.Error(), tt.errContains) + } + return + } + assert.NoError(t, err) + }) + } +} + +type testCase struct { + Type dataType + In interface{} + Out interface{} + Err bool +} + +var testCases = []testCase{ + {String, nil, nil, true}, + {String, "x", "x", false}, + {String, 1, "1", false}, + {String, 1.1, "1.1", false}, + {String, true, "true", false}, + + {Long, nil, nil, true}, + {Long, "x", nil, true}, + {Long, true, nil, true}, + {Long, "1", int64(1), false}, + {Long, int(1), int64(1), false}, + {Long, int8(1), int64(1), false}, + {Long, int16(1), int64(1), false}, + {Long, int32(1), int64(1), false}, + {Long, int64(1), int64(1), false}, + {Long, uint(1), int64(1), false}, + {Long, uint8(1), int64(1), false}, + {Long, uint16(1), int64(1), false}, + {Long, uint32(1), int64(1), false}, + {Long, uint64(1), int64(1), false}, + {Long, float32(1), int64(1), false}, + {Long, float64(1), int64(1), false}, + + {Integer, nil, nil, true}, + {Integer, "x", nil, true}, + {Integer, true, nil, true}, + {Integer, "1", int32(1), false}, + {Integer, int(1), int32(1), false}, + {Integer, int8(1), int32(1), false}, + {Integer, int16(1), int32(1), false}, + {Integer, int32(1), int32(1), false}, + {Integer, int64(1), int32(1), false}, + {Integer, uint(1), int32(1), false}, + {Integer, uint8(1), int32(1), false}, + {Integer, uint16(1), int32(1), false}, + {Integer, uint32(1), int32(1), false}, + {Integer, uint64(1), int32(1), false}, + {Integer, float32(1), int32(1), false}, + {Integer, float64(1), int32(1), false}, + + {Float, nil, nil, true}, + {Float, "x", nil, true}, + {Float, true, nil, true}, + {Float, "1", float32(1), false}, + {Float, "1.1", float32(1.1), false}, + {Float, int(1), float32(1), false}, + {Float, int8(1), float32(1), false}, + {Float, int16(1), float32(1), false}, + {Float, int32(1), float32(1), false}, + {Float, int64(1), float32(1), false}, + {Float, uint(1), float32(1), false}, + {Float, uint8(1), float32(1), false}, + {Float, uint16(1), float32(1), false}, + {Float, uint32(1), float32(1), false}, + {Float, uint64(1), float32(1), false}, + {Float, float32(1), float32(1), false}, + {Float, float64(1), float32(1), false}, + + {Double, nil, nil, true}, + {Double, "x", nil, true}, + {Double, true, nil, true}, + {Double, "1", float64(1), false}, + {Double, "1.1", float64(1.1), false}, + {Double, int(1), float64(1), false}, + {Double, int8(1), float64(1), false}, + {Double, int16(1), float64(1), false}, + {Double, int32(1), float64(1), false}, + {Double, int64(1), float64(1), false}, + {Double, uint(1), float64(1), false}, + {Double, uint8(1), float64(1), false}, + {Double, uint16(1), float64(1), false}, + {Double, uint32(1), float64(1), false}, + {Double, uint64(1), float64(1), false}, + {Double, float32(1), float64(1), false}, + {Double, float64(1), float64(1), false}, + + {Boolean, nil, nil, true}, + {Boolean, "x", nil, true}, + {Boolean, 1, nil, true}, + {Boolean, 0, nil, true}, + {Boolean, "TrUe", nil, true}, + {Boolean, true, true, false}, + {Boolean, "1", true, false}, + {Boolean, "t", true, false}, + {Boolean, "T", true, false}, + {Boolean, "TRUE", true, false}, + {Boolean, "true", true, false}, + {Boolean, "True", true, false}, + {Boolean, false, false, false}, + {Boolean, "0", false, false}, + {Boolean, "f", false, false}, + {Boolean, "F", false, false}, + {Boolean, "FALSE", false, false}, + {Boolean, "false", false, false}, + {Boolean, "False", false, false}, + + {IP, nil, nil, true}, + {IP, "x", nil, true}, + {IP, "365.0.0.0", "365.0.0.0", true}, + {IP, "0.0.0.0", "0.0.0.0", false}, + {IP, "::1", "::1", false}, +} + +func TestDataTypes(t *testing.T) { + const key = "key" + + for _, tc := range testCases { + // Give the test a friendly name. + var prefix string + if tc.Err { + prefix = "cannot " + } + name := fmt.Sprintf("%v%T %v to %v", prefix, tc.In, tc.In, tc.Type) + + tc := tc + t.Run(name, func(t *testing.T) { + c := defaultConfig() + c.Fields = append(c.Fields, field{From: key, Type: tc.Type}) + + p, err := newConvert(c) + if err != nil { + t.Fatal(err) + } + + event, err := p.Run(&beat.Event{Fields: common.MapStr{key: tc.In}}) + if tc.Err { + assert.Error(t, err) + return + } else if err != nil { + t.Fatalf("%+v", err) + } + + v := event.Fields[key] + assert.Equal(t, tc.Out, v) + }) + } +} diff --git a/libbeat/processors/script/javascript/module/processor/processor.go b/libbeat/processors/script/javascript/module/processor/processor.go index 25c9cae62090..97b8af138308 100644 --- a/libbeat/processors/script/javascript/module/processor/processor.go +++ b/libbeat/processors/script/javascript/module/processor/processor.go @@ -32,6 +32,7 @@ import ( "github.com/elastic/beats/libbeat/processors/add_observer_metadata" "github.com/elastic/beats/libbeat/processors/add_process_metadata" "github.com/elastic/beats/libbeat/processors/communityid" + "github.com/elastic/beats/libbeat/processors/convert" "github.com/elastic/beats/libbeat/processors/decode_csv_fields" "github.com/elastic/beats/libbeat/processors/dissect" "github.com/elastic/beats/libbeat/processors/dns" @@ -50,6 +51,7 @@ var constructors = map[string]processors.Constructor{ "AddLocale": add_locale.New, "AddProcessMetadata": add_process_metadata.New, "CommunityID": communityid.New, + "Convert": convert.New, "CopyFields": actions.NewCopyFields, "DecodeCSVField": decode_csv_fields.NewDecodeCSVField, "DecodeJSONFields": actions.NewDecodeJSONFields, From 1fb3d635c1d10cdde7800495e41489802c2a9d83 Mon Sep 17 00:00:00 2001 From: DeDe Morton Date: Tue, 7 May 2019 16:54:23 -0700 Subject: [PATCH 04/59] Update docs.asciidoc (#11852) (#12045) * Update docs.asciidoc Added in a short note on a few of the other configurable variables. * Make update --- filebeat/docs/modules/iptables.asciidoc | 11 +++++++++++ x-pack/filebeat/module/iptables/_meta/docs.asciidoc | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/filebeat/docs/modules/iptables.asciidoc b/filebeat/docs/modules/iptables.asciidoc index adc0ca4207a8..bfe060e2fd7c 100644 --- a/filebeat/docs/modules/iptables.asciidoc +++ b/filebeat/docs/modules/iptables.asciidoc @@ -67,6 +67,17 @@ include::../include/config-option-intro.asciidoc[] include::../include/var-paths.asciidoc[] +*`var.syslog_host`*:: + +The interface to listen to UDP based syslog traffic. Defaults to `localhost`. +Set to `0.0.0.0` to bind to all available interfaces. + +*`var.syslog_port`*:: + +The UDP port to listen for syslog traffic. Defaults to `9001` + +NOTE: Ports below 1024 require Filebeat to run as root. + :has-dashboards!: :fileset_ex!: diff --git a/x-pack/filebeat/module/iptables/_meta/docs.asciidoc b/x-pack/filebeat/module/iptables/_meta/docs.asciidoc index e3f75a5797b5..244478361629 100644 --- a/x-pack/filebeat/module/iptables/_meta/docs.asciidoc +++ b/x-pack/filebeat/module/iptables/_meta/docs.asciidoc @@ -62,6 +62,17 @@ include::../include/config-option-intro.asciidoc[] include::../include/var-paths.asciidoc[] +*`var.syslog_host`*:: + +The interface to listen to UDP based syslog traffic. Defaults to `localhost`. +Set to `0.0.0.0` to bind to all available interfaces. + +*`var.syslog_port`*:: + +The UDP port to listen for syslog traffic. Defaults to `9001` + +NOTE: Ports below 1024 require Filebeat to run as root. + :has-dashboards!: :fileset_ex!: From cea4efaf268e76059b84b6fa896738fe8230a179 Mon Sep 17 00:00:00 2001 From: DeDe Morton Date: Tue, 7 May 2019 16:56:44 -0700 Subject: [PATCH 05/59] Remove systemd v233 requirement because it's no longer true (#12076) --- journalbeat/docs/overview.asciidoc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/journalbeat/docs/overview.asciidoc b/journalbeat/docs/overview.asciidoc index 96f7098981be..815de9bc8a01 100644 --- a/journalbeat/docs/overview.asciidoc +++ b/journalbeat/docs/overview.asciidoc @@ -13,9 +13,3 @@ https://www.elastic.co/products/elasticsearch[Elasticsearch] or https://www.elastic.co/products/logstash[Logstash]. include::{libbeat-dir}/docs/shared-libbeat-description.asciidoc[] - -[float] -=== Compatibility - -{beatname_uc} requires systemd v233 or later. Versions prior to systemd v233 -have a defect that prevents {beatname_uc} from reading rotated journals. From cc73643c52a53a59e0c52f9cf5fd771f9727f159 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Wed, 8 May 2019 11:10:45 +0200 Subject: [PATCH 06/59] Don't generate autodiscover config when no port matches host hints (#12086) On metricbeat, when the host autodiscover hint is used, and it includes the port, one of the exposed ports has to match with the one in the hint. If not, no configuration should be generated. If it is generated, it will have empty hosts, what would lead to unexpected errors as the seen in #8264. --- CHANGELOG.next.asciidoc | 1 + .../autodiscover/builder/hints/metrics.go | 17 ++++-- .../builder/hints/metrics_test.go | 61 ++++++++++++++++++- 3 files changed, 74 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index a90fd7406f14..78e16baf3775 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -106,6 +106,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Change diskio metrics retrieval method (only for Windows) from wmi query to DeviceIOControl function using the IOCTL_DISK_PERFORMANCE control code {pull}11635[11635] - Call GetMetricData api per region instead of per instance. {issue}11820[11820] {pull}11882[11882] - Update documentation with cloudwatch:ListMetrics permission. {pull}11987[11987] +- Avoid generating hints-based configuration with empty hosts when no exposed port is suitable for the hosts hint. {issue}8264[8264] {pull}12086[12086] *Packetbeat* diff --git a/metricbeat/autodiscover/builder/hints/metrics.go b/metricbeat/autodiscover/builder/hints/metrics.go index 42b20062c206..2432e60c5f27 100644 --- a/metricbeat/autodiscover/builder/hints/metrics.go +++ b/metricbeat/autodiscover/builder/hints/metrics.go @@ -101,7 +101,11 @@ func (m *metricHints) CreateConfig(event bus.Event) []*common.Config { return config } - hsts := m.getHostsWithPort(hints, port) + hosts, ok := m.getHostsWithPort(hints, port) + if !ok { + return config + } + ns := m.getNamespace(hints) msets := m.getMetricSets(hints, mod) tout := m.getTimeout(hints) @@ -112,7 +116,7 @@ func (m *metricHints) CreateConfig(event bus.Event) []*common.Config { moduleConfig := common.MapStr{ "module": mod, "metricsets": msets, - "hosts": hsts, + "hosts": hosts, "timeout": tout, "period": ival, "enabled": true, @@ -161,7 +165,7 @@ func (m *metricHints) getMetricSets(hints common.MapStr, module string) []string return msets } -func (m *metricHints) getHostsWithPort(hints common.MapStr, port int) []string { +func (m *metricHints) getHostsWithPort(hints common.MapStr, port int) ([]string, bool) { var result []string thosts := builder.GetHintAsList(hints, m.Key, hosts) @@ -175,7 +179,12 @@ func (m *metricHints) getHostsWithPort(hints common.MapStr, port int) []string { } } - return result + if len(thosts) > 0 && len(result) == 0 { + logp.Debug("hints.builder", "no hosts selected for port %d with hints: %+v", port, thosts) + return nil, false + } + + return result, true } func (m *metricHints) getNamespace(hints common.MapStr) string { diff --git a/metricbeat/autodiscover/builder/hints/metrics_test.go b/metricbeat/autodiscover/builder/hints/metrics_test.go index 00019f0cbc2d..1f3d37c86bf6 100644 --- a/metricbeat/autodiscover/builder/hints/metrics_test.go +++ b/metricbeat/autodiscover/builder/hints/metrics_test.go @@ -67,6 +67,65 @@ func TestGenerateHints(t *testing.T) { len: 0, result: common.MapStr{}, }, + { + message: "Hints without matching port should return nothing", + event: bus.Event{ + "host": "1.2.3.4", + "port": 9090, + "hints": common.MapStr{ + "metrics": common.MapStr{ + "module": "mockmoduledefaults", + "hosts": "${data.host}:8888", + }, + }, + }, + len: 0, + result: common.MapStr{}, + }, + { + message: "Hints with multiple hosts return only the matching one", + event: bus.Event{ + "host": "1.2.3.4", + "port": 9090, + "hints": common.MapStr{ + "metrics": common.MapStr{ + "module": "mockmoduledefaults", + "hosts": "${data.host}:8888,${data.host}:9090", + }, + }, + }, + len: 1, + result: common.MapStr{ + "module": "mockmoduledefaults", + "metricsets": []string{"default"}, + "timeout": "3s", + "period": "1m", + "enabled": true, + "hosts": []interface{}{"1.2.3.4:9090"}, + }, + }, + { + message: "Hints with multiple hosts return only the one with the template", + event: bus.Event{ + "host": "1.2.3.4", + "port": 9090, + "hints": common.MapStr{ + "metrics": common.MapStr{ + "module": "mockmoduledefaults", + "hosts": "${data.host}:8888,${data.host}:${data.port}", + }, + }, + }, + len: 1, + result: common.MapStr{ + "module": "mockmoduledefaults", + "metricsets": []string{"default"}, + "timeout": "3s", + "period": "1m", + "enabled": true, + "hosts": []interface{}{"1.2.3.4:9090"}, + }, + }, { message: "Only module hint should return all metricsets", event: bus.Event{ @@ -87,7 +146,7 @@ func TestGenerateHints(t *testing.T) { }, }, { - message: "metricsets hint works", + message: "Metricsets hint works", event: bus.Event{ "host": "1.2.3.4", "hints": common.MapStr{ From 2a8ee651fe6b9c77822f149b79563a30dabaef3a Mon Sep 17 00:00:00 2001 From: Steffen Siering Date: Wed, 8 May 2019 12:47:27 +0200 Subject: [PATCH 07/59] Fix transptest testing (#12091) Rewrite test for more clarity ensuring that the server and listeners are stopped before the test function returns (cause for the case condition). Each test has it's very own socks5 server now. Tests not requiring a proxy don't spin up one. --- .../transport/transptest/testing_test.go | 143 +++++++++++------- 1 file changed, 87 insertions(+), 56 deletions(-) diff --git a/libbeat/outputs/transport/transptest/testing_test.go b/libbeat/outputs/transport/transptest/testing_test.go index a608903204b1..ac2db723c859 100644 --- a/libbeat/outputs/transport/transptest/testing_test.go +++ b/libbeat/outputs/transport/transptest/testing_test.go @@ -22,6 +22,7 @@ package transptest import ( "fmt" "net" + "sync" "testing" "time" @@ -34,9 +35,9 @@ import ( // netSOCKS5Proxy starts a new SOCKS5 proxy server that listens on localhost. // // Usage: -// l, tcpAddr := newSOCKS5Proxy(t) -// defer l.Close() -func newSOCKS5Proxy(t *testing.T) (net.Listener, transport.ProxyConfig) { +// l, teardown := newSOCKS5Proxy(t) +// defer teardown() +func newSOCKS5Proxy(t *testing.T) (net.Listener, func()) { // Create a SOCKS5 server conf := &socks5.Config{} server, err := socks5.New(conf) @@ -50,31 +51,42 @@ func newSOCKS5Proxy(t *testing.T) (net.Listener, transport.ProxyConfig) { t.Fatalf("err: %v", err) } - // Listen + // Listen and serve + var wg sync.WaitGroup + wg.Add(1) go func() { + defer wg.Done() err := server.Serve(l) if err != nil { - t.Log(err) + t.Logf("Server error (%T): %+v", err, err) } }() + cleanup := func() { + defer wg.Wait() + l.Close() + } + + return l, cleanup +} + +func listenerProxyConfig(l net.Listener) *transport.ProxyConfig { + if l == nil { + return nil + } + tcpAddr := l.Addr().(*net.TCPAddr) - config := transport.ProxyConfig{URL: fmt.Sprintf("socks5://%s", tcpAddr.String())} - return l, config + return &transport.ProxyConfig{ + URL: fmt.Sprintf("socks5://%s", tcpAddr.String()), + } } func TestTransportReconnectsOnConnect(t *testing.T) { - l, config := newSOCKS5Proxy(t) - defer l.Close() - certName := "ca_test" timeout := 2 * time.Second GenCertForTestingPurpose(t, "127.0.0.1", certName, "") - testServer(t, &config, func(t *testing.T, makeServer MockServerFactory, proxy *transport.ProxyConfig) { - server := makeServer(t, timeout, certName, proxy) - defer server.Close() - + testServer(t, timeout, certName, func(t *testing.T, server *MockServer) { transp, err := server.Transp() if err != nil { t.Fatalf("Failed to create client: %v", err) @@ -102,50 +114,54 @@ func TestTransportReconnectsOnConnect(t *testing.T) { } func TestTransportFailConnectUnknownAddress(t *testing.T) { - l, config := newSOCKS5Proxy(t) - defer l.Close() - + timeout := 100 * time.Millisecond certName := "ca_test" GenCertForTestingPurpose(t, "127.0.0.1", certName, "") - invalidAddr := "invalid.dns.fqdn-unknown.invalid:100" - - run := func(makeTransp TransportFactory, proxy *transport.ProxyConfig) func(*testing.T) { - return func(t *testing.T) { - transp, err := makeTransp(invalidAddr, proxy) - if err != nil { - t.Fatalf("failed to generate transport client: %v", err) - } - - err = transp.Connect() - assert.NotNil(t, err) - } + transports := map[string]TransportFactory{ + "tcp": connectTCP(timeout), + "tls": connectTLS(timeout, certName), } - factoryTests := func(f TransportFactory) func(*testing.T) { - return func(t *testing.T) { - t.Run("connect", run(f, nil)) - t.Run("socks5", run(f, &config)) - } + modes := map[string]struct { + withProxy bool + }{ + "connect": {withProxy: false}, + "socks5": {withProxy: true}, } - timeout := 100 * time.Millisecond - t.Run("tcp", factoryTests(connectTCP(timeout))) - t.Run("tls", factoryTests(connectTLS(timeout, certName))) + const invalidAddr = "invalid.dns.fqdn-unknown.invalid:100" + + for name, factory := range transports { + t.Run(name, func(t *testing.T) { + for mode, test := range modes { + t.Run(mode, func(t *testing.T) { + var listener net.Listener + if test.withProxy { + var teardown func() + listener, teardown = newSOCKS5Proxy(t) + defer teardown() + } + + transp, err := factory(invalidAddr, listenerProxyConfig(listener)) + if err != nil { + t.Fatalf("failed to generate transport client: %v", err) + } + + err = transp.Connect() + assert.NotNil(t, err) + }) + } + }) + } } func TestTransportClosedOnWriteReadError(t *testing.T) { - l, config := newSOCKS5Proxy(t) - defer l.Close() - certName := "ca_test" timeout := 2 * time.Second GenCertForTestingPurpose(t, "127.0.0.1", certName, "") - testServer(t, &config, func(t *testing.T, makeServer MockServerFactory, proxy *transport.ProxyConfig) { - server := makeServer(t, timeout, certName, proxy) - defer server.Close() - + testServer(t, timeout, certName, func(t *testing.T, server *MockServer) { client, transp, err := server.ConnectPair() if err != nil { t.Fatalf("Failed to create client: %v", err) @@ -159,20 +175,35 @@ func TestTransportClosedOnWriteReadError(t *testing.T) { }) } -func testServer(t *testing.T, config *transport.ProxyConfig, run func(*testing.T, MockServerFactory, *transport.ProxyConfig)) { - runner := func(f MockServerFactory, c *transport.ProxyConfig) func(t *testing.T) { - return func(t *testing.T) { - run(t, f, config) - } +func testServer(t *testing.T, timeout time.Duration, cert string, fn func(t *testing.T, server *MockServer)) { + transports := map[string]MockServerFactory{ + "tcp": NewMockServerTCP, + "tls": NewMockServerTLS, } - factoryTests := func(f MockServerFactory) func(t *testing.T) { - return func(t *testing.T) { - t.Run("connect", runner(f, nil)) - t.Run("socks5", runner(f, config)) - } + modes := map[string]struct { + withProxy bool + }{ + "connect": {withProxy: false}, + "socks5": {withProxy: true}, } - t.Run("tcp", factoryTests(NewMockServerTCP)) - t.Run("tls", factoryTests(NewMockServerTLS)) + for name, factory := range transports { + t.Run(name, func(t *testing.T) { + for mode, test := range modes { + t.Run(mode, func(t *testing.T) { + var listener net.Listener + if test.withProxy { + var teardown func() + listener, teardown = newSOCKS5Proxy(t) + defer teardown() + } + + server := factory(t, timeout, cert, listenerProxyConfig(listener)) + defer server.Close() + fn(t, server) + }) + } + }) + } } From 82edc2348d5385e0b50b96def324f99db26a0cbd Mon Sep 17 00:00:00 2001 From: Silvia Mitter Date: Wed, 8 May 2019 17:53:17 +0200 Subject: [PATCH 08/59] Refactor and add tests for template and ilm handling. (#12065) Refactor and add more tests related to setting up template and ilm policy. Ensure template and ilm-policy is exported despite enabled=false setting. --- CHANGELOG-developer.next.asciidoc | 2 +- libbeat/cmd/export/ilm_policy.go | 6 +- libbeat/cmd/export/template.go | 14 +- libbeat/cmd/instance/beat.go | 4 +- libbeat/idxmgmt/idxmgmt.go | 8 +- libbeat/idxmgmt/idxmgmt_test.go | 36 +- libbeat/idxmgmt/ilm/ilm.go | 29 +- libbeat/idxmgmt/ilm/ilm_test.go | 2 +- libbeat/idxmgmt/ilm/noop.go | 4 +- libbeat/idxmgmt/ilm/std.go | 30 +- libbeat/idxmgmt/loadmode_string.go | 11 +- libbeat/idxmgmt/std.go | 13 +- libbeat/tests/system/base.py | 9 + libbeat/tests/system/config/libbeat.yml.j2 | 4 +- libbeat/tests/system/config/mockbeat.yml.j2 | 4 +- libbeat/tests/system/idxmgmt.py | 112 +++++ libbeat/tests/system/test_cmd.py | 196 --------- .../tests/system/test_cmd_export_config.py | 40 ++ libbeat/tests/system/test_cmd_test.py | 79 ++++ libbeat/tests/system/test_cmd_version.py | 35 ++ libbeat/tests/system/test_ilm.py | 413 ++++++++++-------- libbeat/tests/system/test_template.py | 280 +++++++++++- 22 files changed, 903 insertions(+), 428 deletions(-) create mode 100644 libbeat/tests/system/idxmgmt.py delete mode 100644 libbeat/tests/system/test_cmd.py create mode 100644 libbeat/tests/system/test_cmd_export_config.py create mode 100644 libbeat/tests/system/test_cmd_test.py create mode 100644 libbeat/tests/system/test_cmd_version.py diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 6704596f3171..de7da05de5b8 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -35,5 +35,5 @@ The list below covers the major changes between 7.0.0-rc2 and master only. by `make` and `mage`. Example: `export PYTHON_EXE=python2.7`. {pull}11212[11212] - Prometheus helper for metricbeat contains now `Namespace` field for `prometheus.MetricsMappings` {pull}11424[11424] - Update Jinja2 version to 2.10.1. {pull}11817[11817] -- Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777] +- Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777], {pull}12065[12065] - Update urllib3 version to 1.24.2 {pull}11930[11930] diff --git a/libbeat/cmd/export/ilm_policy.go b/libbeat/cmd/export/ilm_policy.go index 83981dd3dc71..57a3c32103aa 100644 --- a/libbeat/cmd/export/ilm_policy.go +++ b/libbeat/cmd/export/ilm_policy.go @@ -22,6 +22,7 @@ import ( "github.com/elastic/beats/libbeat/cmd/instance" "github.com/elastic/beats/libbeat/idxmgmt" + "github.com/elastic/beats/libbeat/idxmgmt/ilm" ) // GenGetILMPolicyCmd is the command used to export the ilm policy. @@ -33,6 +34,9 @@ func GenGetILMPolicyCmd(settings instance.Settings) *cobra.Command { version, _ := cmd.Flags().GetString("es.version") dir, _ := cmd.Flags().GetString("dir") + if settings.ILM == nil { + settings.ILM = ilm.StdSupport + } b, err := instance.NewInitializedBeat(settings) if err != nil { fatalfInitCmd(err) @@ -40,7 +44,7 @@ func GenGetILMPolicyCmd(settings instance.Settings) *cobra.Command { clientHandler := idxmgmt.NewFileClientHandler(newIdxmgmtClient(dir, version)) idxManager := b.IdxSupporter.Manager(clientHandler, idxmgmt.BeatsAssets(b.Fields)) - if err := idxManager.Setup(idxmgmt.LoadModeDisabled, idxmgmt.LoadModeEnabled); err != nil { + if err := idxManager.Setup(idxmgmt.LoadModeDisabled, idxmgmt.LoadModeForce); err != nil { fatalf("Error exporting ilm-policy: %+v.", err) } }, diff --git a/libbeat/cmd/export/template.go b/libbeat/cmd/export/template.go index 5b74ff57ac5d..6dd145ec4087 100644 --- a/libbeat/cmd/export/template.go +++ b/libbeat/cmd/export/template.go @@ -20,12 +20,9 @@ package export import ( "github.com/spf13/cobra" - "github.com/elastic/beats/libbeat/beat" "github.com/elastic/beats/libbeat/cmd/instance" - "github.com/elastic/beats/libbeat/common" "github.com/elastic/beats/libbeat/idxmgmt" "github.com/elastic/beats/libbeat/idxmgmt/ilm" - "github.com/elastic/beats/libbeat/logp" ) // GenTemplateConfigCmd is the command used to export the elasticsearch template. @@ -39,7 +36,10 @@ func GenTemplateConfigCmd(settings instance.Settings) *cobra.Command { noILM, _ := cmd.Flags().GetBool("noilm") if noILM { - settings.ILM = ilmNoopSupport + settings.ILM = ilm.NoopSupport + } + if settings.ILM == nil { + settings.ILM = ilm.StdSupport } b, err := instance.NewInitializedBeat(settings) @@ -49,7 +49,7 @@ func GenTemplateConfigCmd(settings instance.Settings) *cobra.Command { clientHandler := idxmgmt.NewFileClientHandler(newIdxmgmtClient(dir, version)) idxManager := b.IdxSupporter.Manager(clientHandler, idxmgmt.BeatsAssets(b.Fields)) - if err := idxManager.Setup(idxmgmt.LoadModeEnabled, idxmgmt.LoadModeDisabled); err != nil { + if err := idxManager.Setup(idxmgmt.LoadModeForce, idxmgmt.LoadModeDisabled); err != nil { fatalf("Error exporting template: %+v.", err) } }, @@ -61,7 +61,3 @@ func GenTemplateConfigCmd(settings instance.Settings) *cobra.Command { return genTemplateConfigCmd } - -func ilmNoopSupport(_ *logp.Logger, info beat.Info, config *common.Config) (ilm.Supporter, error) { - return ilm.NoopSupport(info, config) -} diff --git a/libbeat/cmd/instance/beat.go b/libbeat/cmd/instance/beat.go index e8ac6270d640..78ea2ab62faa 100644 --- a/libbeat/cmd/instance/beat.go +++ b/libbeat/cmd/instance/beat.go @@ -490,10 +490,10 @@ func (b *Beat) Setup(settings Settings, bt beat.Creator, setup SetupSettings) er m := b.IdxSupporter.Manager(idxmgmt.NewESClientHandler(esClient), idxmgmt.BeatsAssets(b.Fields)) var tmplLoadMode, ilmLoadMode = idxmgmt.LoadModeUnset, idxmgmt.LoadModeUnset if setup.Template { - tmplLoadMode = idxmgmt.LoadModeForce + tmplLoadMode = idxmgmt.LoadModeOverwrite } if setup.ILMPolicy { - ilmLoadMode = idxmgmt.LoadModeForce + ilmLoadMode = idxmgmt.LoadModeOverwrite } err = m.Setup(tmplLoadMode, ilmLoadMode) diff --git a/libbeat/idxmgmt/idxmgmt.go b/libbeat/idxmgmt/idxmgmt.go index 9181ae8c8187..6ec75b033efb 100644 --- a/libbeat/idxmgmt/idxmgmt.go +++ b/libbeat/idxmgmt/idxmgmt.go @@ -74,12 +74,14 @@ const ( // LoadModeUnset indicates that no specific mode is set. // Instead the decision about loading data will be derived from the config or their respective default values. LoadModeUnset LoadMode = iota //unset + // LoadModeDisabled indicates no loading + LoadModeDisabled //disabled // LoadModeEnabled indicates loading if not already available LoadModeEnabled //enabled - // LoadModeForce indicates loading in any case. + // LoadModeOverwrite indicates overwriting existing components, if loading is not generally disabled. + LoadModeOverwrite //overwrite + // LoadModeForce indicates forcing to load components in any case, independent of general loading configurations. LoadModeForce //force - // LoadModeDisabled indicates no loading - LoadModeDisabled //disabled ) // Enabled returns whether or not the LoadMode should be considered enabled diff --git a/libbeat/idxmgmt/idxmgmt_test.go b/libbeat/idxmgmt/idxmgmt_test.go index c5a72ca05bb1..01705dfa7a12 100644 --- a/libbeat/idxmgmt/idxmgmt_test.go +++ b/libbeat/idxmgmt/idxmgmt_test.go @@ -268,6 +268,24 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { loadTemplate: LoadModeEnabled, tmplCfg: &defaultCfg, }, + "template default loadMode Overwrite, ilm disabled": { + cfg: common.MapStr{ + "setup.ilm.enabled": false, + }, + loadTemplate: LoadModeOverwrite, + tmplCfg: cfgWith(template.DefaultConfig(), map[string]interface{}{ + "overwrite": "true", + }), + }, + "template default loadMode Force, ilm disabled": { + cfg: common.MapStr{ + "setup.ilm.enabled": false, + }, + loadTemplate: LoadModeForce, + tmplCfg: cfgWith(template.DefaultConfig(), map[string]interface{}{ + "overwrite": "true", + }), + }, "template loadMode disabled, ilm disabled": { cfg: common.MapStr{ "setup.ilm.enabled": false, @@ -281,6 +299,22 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { alias: "test-9.9.9", policy: "test-9.9.9", }, + "template disabled, ilm disabled, loadMode Overwrite": { + cfg: common.MapStr{ + "setup.template.enabled": false, + "setup.ilm.enabled": false, + }, + loadILM: LoadModeOverwrite, + }, + "template disabled, ilm disabled, loadMode Force": { + cfg: common.MapStr{ + "setup.template.enabled": false, + "setup.ilm.enabled": false, + }, + loadILM: LoadModeForce, + alias: "test-9.9.9", + policy: "test-9.9.9", + }, "template loadmode disabled, ilm loadMode enabled": { loadTemplate: LoadModeDisabled, loadILM: LoadModeEnabled, @@ -304,7 +338,7 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { for name, test := range cases { t.Run(name, func(t *testing.T) { info := beat.Info{Beat: "test", Version: "9.9.9"} - factory := MakeDefaultSupport(nil) + factory := MakeDefaultSupport(ilm.StdSupport) im, err := factory(nil, info, common.MustNewConfigFrom(test.cfg)) require.NoError(t, err) diff --git a/libbeat/idxmgmt/ilm/ilm.go b/libbeat/idxmgmt/ilm/ilm.go index d7e803b5742c..3ecc85d8c409 100644 --- a/libbeat/idxmgmt/ilm/ilm.go +++ b/libbeat/idxmgmt/ilm/ilm.go @@ -70,6 +70,22 @@ type Alias struct { // DefaultSupport configures a new default ILM support implementation. func DefaultSupport(log *logp.Logger, info beat.Info, config *common.Config) (Supporter, error) { + cfg := defaultConfig(info) + if config != nil { + if err := config.Unpack(&cfg); err != nil { + return nil, err + } + } + + if cfg.Mode == ModeDisabled { + return NewNoopSupport(info, config) + } + + return StdSupport(log, info, config) +} + +// StdSupport configures a new std ILM support implementation. +func StdSupport(log *logp.Logger, info beat.Info, config *common.Config) (Supporter, error) { if log == nil { log = logp.NewLogger("ilm") } else { @@ -83,10 +99,6 @@ func DefaultSupport(log *logp.Logger, info beat.Info, config *common.Config) (Su } } - if cfg.Mode == ModeDisabled { - return NoopSupport(info, config) - } - name, err := applyStaticFmtstr(info, &cfg.PolicyName) if err != nil { return nil, errors.Wrap(err, "failed to read ilm policy name") @@ -115,8 +127,13 @@ func DefaultSupport(log *logp.Logger, info beat.Info, config *common.Config) (Su policy.Body = body } - log.Infof("Policy name: %v", name) - return NewDefaultSupport(log, cfg.Mode, alias, policy, cfg.Overwrite, cfg.CheckExists), nil + return NewStdSupport(log, cfg.Mode, alias, policy, cfg.Overwrite, cfg.CheckExists), nil +} + +// NoopSupport configures a new noop ILM support implementation, +// should be used when ILM is disabled +func NoopSupport(_ *logp.Logger, info beat.Info, config *common.Config) (Supporter, error) { + return NewNoopSupport(info, config) } func applyStaticFmtstr(info beat.Info, fmt *fmtstr.EventFormatString) (string, error) { diff --git a/libbeat/idxmgmt/ilm/ilm_test.go b/libbeat/idxmgmt/ilm/ilm_test.go index 0ca72c866730..9a860e04f64b 100644 --- a/libbeat/idxmgmt/ilm/ilm_test.go +++ b/libbeat/idxmgmt/ilm/ilm_test.go @@ -65,7 +65,7 @@ func TestDefaultSupport_Init(t *testing.T) { )) require.NoError(t, err) - s := tmp.(*ilmSupport) + s := tmp.(*stdSupport) assert := assert.New(t) assert.Equal(true, s.overwrite) assert.Equal(false, s.checkExists) diff --git a/libbeat/idxmgmt/ilm/noop.go b/libbeat/idxmgmt/ilm/noop.go index 779bd16c5eaa..eda57f246223 100644 --- a/libbeat/idxmgmt/ilm/noop.go +++ b/libbeat/idxmgmt/ilm/noop.go @@ -25,9 +25,9 @@ import ( type noopSupport struct{} type noopManager struct{} -// NoopSupport creates a noop ILM implementation with ILM support being always +// NewNoopSupport creates a noop ILM implementation with ILM support being always // disabled. Attempts to install a policy or create a write alias will fail. -func NoopSupport(info beat.Info, config *common.Config) (Supporter, error) { +func NewNoopSupport(info beat.Info, config *common.Config) (Supporter, error) { return (*noopSupport)(nil), nil } diff --git a/libbeat/idxmgmt/ilm/std.go b/libbeat/idxmgmt/ilm/std.go index c9622eb18472..fb057cbaac39 100644 --- a/libbeat/idxmgmt/ilm/std.go +++ b/libbeat/idxmgmt/ilm/std.go @@ -23,7 +23,7 @@ import ( "github.com/elastic/beats/libbeat/logp" ) -type ilmSupport struct { +type stdSupport struct { log *logp.Logger mode Mode @@ -34,8 +34,8 @@ type ilmSupport struct { policy Policy } -type singlePolicyManager struct { - *ilmSupport +type stdManager struct { + *stdSupport client ClientHandler // cached info @@ -49,15 +49,15 @@ type infoCache struct { var defaultCacheDuration = 5 * time.Minute -// NewDefaultSupport creates an instance of default ILM support implementation. -func NewDefaultSupport( +// NewStdSupport creates an instance of default ILM support implementation. +func NewStdSupport( log *logp.Logger, mode Mode, alias Alias, policy Policy, overwrite, checkExists bool, ) Supporter { - return &ilmSupport{ + return &stdSupport{ log: log, mode: mode, overwrite: overwrite, @@ -67,18 +67,18 @@ func NewDefaultSupport( } } -func (s *ilmSupport) Mode() Mode { return s.mode } -func (s *ilmSupport) Alias() Alias { return s.alias } -func (s *ilmSupport) Policy() Policy { return s.policy } +func (s *stdSupport) Mode() Mode { return s.mode } +func (s *stdSupport) Alias() Alias { return s.alias } +func (s *stdSupport) Policy() Policy { return s.policy } -func (s *ilmSupport) Manager(h ClientHandler) Manager { - return &singlePolicyManager{ +func (s *stdSupport) Manager(h ClientHandler) Manager { + return &stdManager{ client: h, - ilmSupport: s, + stdSupport: s, } } -func (m *singlePolicyManager) Enabled() (bool, error) { +func (m *stdManager) Enabled() (bool, error) { if m.mode == ModeDisabled { return false, nil } @@ -101,7 +101,7 @@ func (m *singlePolicyManager) Enabled() (bool, error) { return enabled, nil } -func (m *singlePolicyManager) EnsureAlias() error { +func (m *stdManager) EnsureAlias() error { b, err := m.client.HasAlias(m.alias.Name) if err != nil { return err @@ -114,7 +114,7 @@ func (m *singlePolicyManager) EnsureAlias() error { return m.client.CreateAlias(m.alias) } -func (m *singlePolicyManager) EnsurePolicy(overwrite bool) (bool, error) { +func (m *stdManager) EnsurePolicy(overwrite bool) (bool, error) { log := m.log overwrite = overwrite || m.overwrite diff --git a/libbeat/idxmgmt/loadmode_string.go b/libbeat/idxmgmt/loadmode_string.go index 0cb74b2242de..967b94abc022 100644 --- a/libbeat/idxmgmt/loadmode_string.go +++ b/libbeat/idxmgmt/loadmode_string.go @@ -26,14 +26,15 @@ func _() { // Re-run the stringer command to generate them again. var x [1]struct{} _ = x[LoadModeUnset-0] - _ = x[LoadModeEnabled-1] - _ = x[LoadModeForce-2] - _ = x[LoadModeDisabled-3] + _ = x[LoadModeDisabled-1] + _ = x[LoadModeEnabled-2] + _ = x[LoadModeOverwrite-3] + _ = x[LoadModeForce-4] } -const _LoadMode_name = "unsetenabledforcedisabled" +const _LoadMode_name = "unsetdisabledenabledoverwriteforce" -var _LoadMode_index = [...]uint8{0, 5, 12, 17, 25} +var _LoadMode_index = [...]uint8{0, 5, 13, 20, 29, 34} func (i LoadMode) String() string { if i >= LoadMode(len(_LoadMode_index)-1) { diff --git a/libbeat/idxmgmt/std.go b/libbeat/idxmgmt/std.go index 2159f1c87e0e..ea655bb71a8f 100644 --- a/libbeat/idxmgmt/std.go +++ b/libbeat/idxmgmt/std.go @@ -197,12 +197,12 @@ func (m *indexManager) Setup(loadTemplate, loadILM LoadMode) error { } } - if withILM && loadILM.Enabled() { + if loadILM == LoadModeForce || withILM && loadILM.Enabled() { // mark ILM as enabled in indexState if withILM is true m.support.st.withILM.CAS(false, true) // install ilm policy - policyCreated, err := m.ilm.EnsurePolicy(loadILM == LoadModeForce) + policyCreated, err := m.ilm.EnsurePolicy(loadILM >= LoadModeOverwrite) if err != nil { return err } @@ -210,7 +210,7 @@ func (m *indexManager) Setup(loadTemplate, loadILM LoadMode) error { // The template should be updated if a new policy is created. if policyCreated && loadTemplate.Enabled() { - loadTemplate = LoadModeForce + loadTemplate = LoadModeOverwrite } // create alias @@ -225,7 +225,7 @@ func (m *indexManager) Setup(loadTemplate, loadILM LoadMode) error { } // create and install template - if m.support.templateCfg.Enabled && loadTemplate.Enabled() { + if loadTemplate == LoadModeForce || m.support.templateCfg.Enabled && loadTemplate.Enabled() { tmplCfg := m.support.templateCfg if withILM { @@ -237,11 +237,12 @@ func (m *indexManager) Setup(loadTemplate, loadILM LoadMode) error { } if loadTemplate == LoadModeForce { + tmplCfg.Enabled = true + } + if loadTemplate >= LoadModeOverwrite { tmplCfg.Overwrite = true } - fields := m.assets.Fields(m.support.info.Beat) - err = m.clientHandler.Load(tmplCfg, m.support.info, fields, m.support.migration) if err != nil { return fmt.Errorf("error loading template: %v", err) diff --git a/libbeat/tests/system/base.py b/libbeat/tests/system/base.py index 65d96ae94624..7fd9f1dbb490 100644 --- a/libbeat/tests/system/base.py +++ b/libbeat/tests/system/base.py @@ -1,5 +1,6 @@ import os from beat.beat import TestCase +from elasticsearch import Elasticsearch, NotFoundError class BaseTest(TestCase): @@ -16,4 +17,12 @@ def setUpClass(self): "packetbeat", "winlogbeat" ] + self._es = None super(BaseTest, self).setUpClass() + + def es_client(self): + if self._es: + return self._es + + self._es = Elasticsearch([self.get_elasticsearch_url()]) + return self._es diff --git a/libbeat/tests/system/config/libbeat.yml.j2 b/libbeat/tests/system/config/libbeat.yml.j2 index 5ac42df84469..1a61a2258b1e 100644 --- a/libbeat/tests/system/config/libbeat.yml.j2 +++ b/libbeat/tests/system/config/libbeat.yml.j2 @@ -25,7 +25,9 @@ setup.template.pattern: "{{setup_template_pattern}}" {% if ilm %} setup.ilm: enabled: {{ ilm.enabled | default("auto") }} - policy_name: libbeat-test-default-policy + {% if ilm.policy_name %} + policy_name: {{ ilm.policy_name }} + {% endif %} {% if ilm.pattern %} pattern: {{ ilm.pattern }} {% endif %} diff --git a/libbeat/tests/system/config/mockbeat.yml.j2 b/libbeat/tests/system/config/mockbeat.yml.j2 index 55f2ec97d5f2..df185c8ca58d 100644 --- a/libbeat/tests/system/config/mockbeat.yml.j2 +++ b/libbeat/tests/system/config/mockbeat.yml.j2 @@ -82,7 +82,9 @@ setup.template: {% if ilm %} setup.ilm: enabled: {{ ilm.enabled | default("auto") }} - policy_name: libbeat-test-default-policy + {% if ilm.policy_name %} + policy_name: {{ ilm.policy_name }} + {% endif %} {% if ilm.pattern %} pattern: {{ ilm.pattern }} {% endif %} diff --git a/libbeat/tests/system/idxmgmt.py b/libbeat/tests/system/idxmgmt.py new file mode 100644 index 000000000000..caaa7d7d974f --- /dev/null +++ b/libbeat/tests/system/idxmgmt.py @@ -0,0 +1,112 @@ +from elasticsearch import NotFoundError +from nose.tools import raises +import datetime + + +class IdxMgmt(object): + + def __init__(self, client, index): + self._client = client + if index == "": + index == "mockbeat" + self._index = index + + def needs_init(self, s): + return s == '' or s == '*' + + def delete(self, index="", template="", policy=""): + self.delete_index_and_alias(index=index) + self.delete_template(template=template) + self.delete_policy(policy=policy) + + def delete_index_and_alias(self, index=""): + if self.needs_init(index): + index = self._index + + try: + self._client.transport.perform_request('DELETE', "/" + index + "*") + except NotFoundError: + pass + + def delete_template(self, template=""): + if self.needs_init(template): + template = self._index + + try: + self._client.transport.perform_request('DELETE', "/_template/" + template + "*") + except NotFoundError: + pass + + def delete_policy(self, policy=""): + if self.needs_init(policy): + policy = self._index + + # Delete any existing policy starting with given policy + policies = self._client.transport.perform_request('GET', "/_ilm/policy") + for p, _ in policies.items(): + if not p.startswith(policy): + continue + try: + self._client.transport.perform_request('DELETE', "/_ilm/policy/" + p) + except NotFoundError: + pass + + @raises(NotFoundError) + def assert_index_template_not_loaded(self, template): + self._client.transport.perform_request('GET', '/_template/' + template) + + def assert_index_template_loaded(self, template): + resp = self._client.transport.perform_request('GET', '/_template/' + template) + assert template in resp + assert "lifecycle" not in resp[template]["settings"]["index"] + + def assert_ilm_template_loaded(self, template, policy, alias): + resp = self._client.transport.perform_request('GET', '/_template/' + template) + assert resp[template]["settings"]["index"]["lifecycle"]["name"] == policy + assert resp[template]["settings"]["index"]["lifecycle"]["rollover_alias"] == alias + + def assert_index_template_index_pattern(self, template, index_pattern): + resp = self._client.transport.perform_request('GET', '/_template/' + template) + assert template in resp + assert resp[template]["index_patterns"] == index_pattern + + def assert_alias_not_created(self, alias): + resp = self._client.transport.perform_request('GET', '/_alias') + for name, entry in resp.items(): + if alias not in name: + continue + assert entry["aliases"] == {}, entry["aliases"] + + def assert_alias_created(self, alias, pattern=None): + if pattern is None: + pattern = self.default_pattern() + name = alias + "-" + pattern + resp = self._client.transport.perform_request('GET', '/_alias/' + alias) + assert name in resp + assert resp[name]["aliases"][alias]["is_write_index"] == True + + @raises(NotFoundError) + def assert_policy_not_created(self, policy): + self._client.transport.perform_request('GET', '/_ilm/policy/' + policy) + + def assert_policy_created(self, policy): + resp = self._client.transport.perform_request('GET', '/_ilm/policy/' + policy) + assert policy in resp + assert resp[policy]["policy"]["phases"]["hot"]["actions"]["rollover"]["max_size"] == "50gb" + assert resp[policy]["policy"]["phases"]["hot"]["actions"]["rollover"]["max_age"] == "30d" + + def assert_docs_written_to_alias(self, alias, pattern=None): + if pattern is None: + pattern = self.default_pattern() + name = alias + "-" + pattern + data = self._client.transport.perform_request('GET', '/' + name + '/_search') + assert data["hits"]["total"] > 0 + + def default_pattern(self): + d = datetime.datetime.now().strftime("%Y.%m.%d") + return d + "-000001" + + def index_for(self, alias, pattern=None): + if pattern is None: + pattern = self.default_pattern() + return "{}-{}".format(alias, pattern) diff --git a/libbeat/tests/system/test_cmd.py b/libbeat/tests/system/test_cmd.py deleted file mode 100644 index e29af7301db5..000000000000 --- a/libbeat/tests/system/test_cmd.py +++ /dev/null @@ -1,196 +0,0 @@ -from base import BaseTest -from nose.plugins.attrib import attr -from elasticsearch import Elasticsearch, TransportError - -import logging -import os -import shutil -import unittest - - -INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) - - -class TestCommands(BaseTest): - """ - Test beat subcommands - """ - - def setUp(self): - super(BaseTest, self).setUp() - - self.elasticsearch_url = self.get_elasticsearch_url() - print("Using elasticsearch: {}".format(self.elasticsearch_url)) - self.es = Elasticsearch([self.elasticsearch_url]) - logging.getLogger("urllib3").setLevel(logging.WARNING) - logging.getLogger("elasticsearch").setLevel(logging.ERROR) - - def test_version(self): - """ - Test version command - """ - exit_code = self.run_beat( - extra_args=["version"], logging_args=["-v", "-d", "*"]) - assert exit_code == 0 - - assert self.log_contains("mockbeat") is True - assert self.log_contains("version") is True - assert self.log_contains("9.9.9") is True - - @unittest.skipUnless(INTEGRATION_TESTS, "integration test") - @attr('integration') - def test_setup_template(self): - """ - Test setup -template command - """ - # Delete any existing template - try: - self.es.indices.delete_template('mockbeat-*') - except: - pass - - assert len(self.es.cat.templates(name='mockbeat-*', h='name')) == 0 - - shutil.copy(self.beat_path + "/_meta/config.yml", - os.path.join(self.working_dir, "libbeat.yml")) - shutil.copy(self.beat_path + "/fields.yml", - os.path.join(self.working_dir, "fields.yml")) - - exit_code = self.run_beat( - logging_args=["-v", "-d", "*"], - extra_args=["setup", - "-template", - "-path.config", self.working_dir, - "-E", "output.elasticsearch.hosts=['" + self.get_host() + "']"], - config="libbeat.yml") - - assert exit_code == 0 - assert len(self.es.cat.templates(name='mockbeat-*', h='name')) > 0 - - @unittest.skipUnless(INTEGRATION_TESTS, "integration test") - @attr('integration') - def test_test_config(self): - """ - Test test config command - """ - self.render_config_template("mockbeat", - os.path.join(self.working_dir, "libbeat.yml")) - - exit_code = self.run_beat( - logging_args=[], - extra_args=["test", "config"], - config="libbeat.yml") - - assert exit_code == 0 - assert self.log_contains("Config OK") - - def test_test_bad_config(self): - """ - Test test config command with bad config - """ - exit_code = self.run_beat( - logging_args=[], - extra_args=["test", "config"], - config="libbeat-missing.yml") - - assert exit_code == 1 - assert self.log_contains("Config OK") is False - - def test_export_config(self): - """ - Test export config works - """ - self.render_config_template("mockbeat", - os.path.join(self.working_dir, - "libbeat.yml"), - metrics_period=1234) - - exit_code = self.run_beat( - logging_args=[], - extra_args=["export", "config"], - config="libbeat.yml") - - assert exit_code == 0 - assert self.log_contains("filename: mockbeat") - assert self.log_contains("period: 1234") - - def test_export_config_environment_variable(self): - """ - Test export config works but doesn"t expose environment variable. - """ - self.render_config_template("mockbeat", - os.path.join(self.working_dir, - "libbeat.yml"), - metrics_period="${METRIC_PERIOD}") - - exit_code = self.run_beat( - logging_args=[], - extra_args=["export", "config"], - config="libbeat.yml", env={'METRIC_PERIOD': '1234'}) - - assert exit_code == 0 - assert self.log_contains("filename: mockbeat") - assert self.log_contains("period: ${METRIC_PERIOD}") - - def test_export_template(self): - """ - Test export template works - """ - self.render_config_template("mockbeat", - os.path.join(self.working_dir, - "mockbeat.yml"), - fields=os.path.join(self.working_dir, "fields.yml")) - shutil.copy(self.beat_path + "/fields.yml", - os.path.join(self.working_dir, "fields.yml")) - exit_code = self.run_beat( - logging_args=[], - extra_args=["export", "template"], - config="mockbeat.yml") - - assert exit_code == 0 - assert self.log_contains('"mockbeat-9.9.9-*"') - assert self.log_contains('"codec": "best_compression"') - - @unittest.skipUnless(INTEGRATION_TESTS, "integration test") - @attr('integration') - def test_test_output(self): - """ - Test test output works - """ - self.render_config_template("mockbeat", - os.path.join(self.working_dir, - "mockbeat.yml"), - elasticsearch={"hosts": '["{}"]'.format(self.get_host())}) - exit_code = self.run_beat( - extra_args=["test", "output"], - config="mockbeat.yml") - - assert exit_code == 0 - assert self.log_contains('parse url... OK') - assert self.log_contains('TLS... WARN secure connection disabled') - assert self.log_contains('talk to server... OK') - - def test_test_wrong_output(self): - """ - Test test wrong output works - """ - self.render_config_template("mockbeat", - os.path.join(self.working_dir, - "mockbeat.yml"), - elasticsearch={"hosts": '["badhost:9200"]'}) - exit_code = self.run_beat( - extra_args=["test", "output"], - config="mockbeat.yml") - - assert exit_code == 1 - assert self.log_contains('parse url... OK') - assert self.log_contains('dns lookup... ERROR') - - def get_host(self): - return os.getenv('ES_HOST', 'localhost') + ':' + os.getenv('ES_PORT', '9200') - - def get_kibana_host(self): - return os.getenv('KIBANA_HOST', 'localhost') - - def get_kibana_port(self): - return os.getenv('KIBANA_PORT', '5601') diff --git a/libbeat/tests/system/test_cmd_export_config.py b/libbeat/tests/system/test_cmd_export_config.py new file mode 100644 index 000000000000..954ee2edb068 --- /dev/null +++ b/libbeat/tests/system/test_cmd_export_config.py @@ -0,0 +1,40 @@ +import os +from base import BaseTest + +INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) + + +class TestCommandExportConfig(BaseTest): + """ + Test beat command `export config` + """ + + def setUp(self): + super(TestCommandExportConfig, self).setUp() + + self.config = "libbeat.yml" + self.output = os.path.join(self.working_dir, self.config) + + def test_default(self): + """ + Test export config works + """ + self.render_config_template(self.beat_name, self.output, metrics_period='1234') + exit_code = self.run_beat(extra_args=["export", "config"], config=self.config) + + assert exit_code == 0 + assert self.log_contains("filename: mockbeat") + assert self.log_contains("period: 1234") + + def test_config_environment_variable(self): + """ + Test export config works but doesn"t expose environment variable. + """ + self.render_config_template(self.beat_name, self.output, + metrics_period="${METRIC_PERIOD}") + exit_code = self.run_beat(extra_args=["export", "config"], config=self.config, + env={'METRIC_PERIOD': '1234'}) + + assert exit_code == 0 + assert self.log_contains("filename: mockbeat") + assert self.log_contains("period: ${METRIC_PERIOD}") diff --git a/libbeat/tests/system/test_cmd_test.py b/libbeat/tests/system/test_cmd_test.py new file mode 100644 index 000000000000..77b2d8f4b64f --- /dev/null +++ b/libbeat/tests/system/test_cmd_test.py @@ -0,0 +1,79 @@ +from base import BaseTest +import os +import logging +import unittest +from nose.plugins.attrib import attr + + +INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) + + +class TestCommandTest(BaseTest): + """ + Test beat subcommands + """ + + def test_config(self): + """ + Test test config command + """ + self.render_config_template("mockbeat", + os.path.join(self.working_dir, "libbeat.yml")) + + exit_code = self.run_beat( + logging_args=[], + extra_args=["test", "config"], + config="libbeat.yml") + + assert exit_code == 0 + assert self.log_contains("Config OK") + + def test_bad_config(self): + """ + Test test config command with bad config + """ + exit_code = self.run_beat( + logging_args=[], + extra_args=["test", "config"], + config="libbeat-missing.yml") + + assert exit_code == 1 + assert self.log_contains("Config OK") is False + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_output(self): + """ + Test test output works + """ + + self.es_client() + logging.getLogger("elasticsearch").setLevel(logging.ERROR) + + self.render_config_template("mockbeat", + os.path.join(self.working_dir, "mockbeat.yml"), + elasticsearch={"hosts": self.get_elasticsearch_url()}) + exit_code = self.run_beat( + extra_args=["test", "output"], + config="mockbeat.yml") + + assert exit_code == 0 + assert self.log_contains('parse url... OK') + assert self.log_contains('TLS... WARN secure connection disabled') + assert self.log_contains('talk to server... OK') + + def test_wrong_output(self): + """ + Test test wrong output works + """ + self.render_config_template("mockbeat", + os.path.join(self.working_dir, + "mockbeat.yml"), + elasticsearch={"hosts": '["badhost:9200"]'}) + exit_code = self.run_beat( + extra_args=["test", "output"], + config="mockbeat.yml") + + assert exit_code == 1 + assert self.log_contains('parse url... OK') + assert self.log_contains('dns lookup... ERROR') diff --git a/libbeat/tests/system/test_cmd_version.py b/libbeat/tests/system/test_cmd_version.py new file mode 100644 index 000000000000..240b8759668e --- /dev/null +++ b/libbeat/tests/system/test_cmd_version.py @@ -0,0 +1,35 @@ +from base import BaseTest +from elasticsearch import Elasticsearch, TransportError + +import logging +import os + + +INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) + + +class TestCommandVersion(BaseTest): + """ + Test beat subcommands + """ + + def setUp(self): + super(BaseTest, self).setUp() + + self.elasticsearch_url = self.get_elasticsearch_url() + print("Using elasticsearch: {}".format(self.elasticsearch_url)) + self.es = Elasticsearch([self.elasticsearch_url]) + logging.getLogger("urllib3").setLevel(logging.WARNING) + logging.getLogger("elasticsearch").setLevel(logging.ERROR) + + def test_version(self): + """ + Test version command + """ + exit_code = self.run_beat( + extra_args=["version"], logging_args=["-v", "-d", "*"]) + assert exit_code == 0 + + assert self.log_contains("mockbeat") + assert self.log_contains("version") + assert self.log_contains("9.9.9") diff --git a/libbeat/tests/system/test_ilm.py b/libbeat/tests/system/test_ilm.py index c765dce28cc6..c016fba71292 100644 --- a/libbeat/tests/system/test_ilm.py +++ b/libbeat/tests/system/test_ilm.py @@ -1,267 +1,334 @@ from base import BaseTest +from idxmgmt import IdxMgmt import os -from elasticsearch import Elasticsearch, TransportError from nose.plugins.attrib import attr import unittest import shutil -import logging import datetime +import logging INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) -testPolicyName = "libbeat-test-default-policy" - - -class Test(BaseTest): +class TestRunILM(BaseTest): def setUp(self): - super(BaseTest, self).setUp() - - self.elasticsearch_url = self.get_elasticsearch_url() - print("Using elasticsearch: {}".format(self.elasticsearch_url)) - self.es = Elasticsearch([self.elasticsearch_url]) - self.alias_name = "mockbeat-9.9.9" - self.policy_name = testPolicyName - logging.getLogger("urllib3").setLevel(logging.WARNING) - logging.getLogger("elasticsearch").setLevel(logging.ERROR) + super(TestRunILM, self).setUp() + + self.alias_name = self.policy_name = self.index_name = self.beat_name + "-9.9.9" + self.custom_alias = self.beat_name + "_foo" + self.custom_policy = self.beat_name + "_bar" + self.es = self.es_client() + self.idxmgmt = IdxMgmt(self.es, self.index_name) + self.idxmgmt.delete(index=self.custom_alias) + self.idxmgmt.delete(index=self.custom_policy) + self.idxmgmt.delete(index=self.index_name) + + def tearDown(self): + self.idxmgmt.delete(index=self.custom_alias) + self.idxmgmt.delete(index=self.custom_policy) + self.idxmgmt.delete(index=self.index_name) + + def render_config(self, **kwargs): + self.render_config_template( + elasticsearch={"hosts": self.get_elasticsearch_url()}, + es_template_name=self.index_name, + **kwargs + ) @unittest.skipUnless(INTEGRATION_TESTS, "integration test") @attr('integration') - def test_enabled(self): + def test_ilm_default(self): """ - Test ilm enabled + Test ilm default settings to load ilm policy, write alias and ilm template """ + self.render_config() + proc = self.start_beat() + self.wait_until(lambda: self.log_contains("mockbeat start running.")) + self.wait_until(lambda: self.log_contains("ILM policy successfully loaded")) + self.wait_until(lambda: self.log_contains("PublishEvents: 1 events have been published")) + proc.check_kill_and_wait() - self.render_config_template( - ilm={ - "enabled": True, - }, - elasticsearch={ - "hosts": self.get_elasticsearch_url(), - }, - ) + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_alias_created(self.alias_name) + self.idxmgmt.assert_policy_created(self.policy_name) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name) - self.clean() + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_ilm_disabled(self): + """ + Test ilm disabled to not load ilm related components + """ + self.render_config(ilm={"enabled": False}) proc = self.start_beat() self.wait_until(lambda: self.log_contains("mockbeat start running.")) - self.wait_until(lambda: self.log_contains("Set setup.template.name")) self.wait_until(lambda: self.log_contains("PublishEvents: 1 events have been published")) proc.check_kill_and_wait() - # Check if template is loaded with settings - template = self.es.transport.perform_request('GET', '/_template/' + self.alias_name) + self.idxmgmt.assert_index_template_loaded(self.index_name) + self.idxmgmt.assert_alias_not_created(self.alias_name) + self.idxmgmt.assert_policy_not_created(self.policy_name) - print(self.alias_name) - assert template[self.alias_name]["settings"]["index"]["lifecycle"]["name"] == testPolicyName - assert template[self.alias_name]["settings"]["index"]["lifecycle"]["rollover_alias"] == self.alias_name + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_policy_name(self): + """ + Test setting ilm policy name + """ - # Make sure the correct index + alias was created - alias = self.es.transport.perform_request('GET', '/_alias/' + self.alias_name) - d = datetime.datetime.now() - now = d.strftime("%Y.%m.%d") - index_name = self.alias_name + "-" + now + "-000001" - assert index_name in alias - assert alias[index_name]["aliases"][self.alias_name]["is_write_index"] == True + policy_name = self.beat_name + "_foo" + self.render_config(ilm={"enabled": True, "policy_name": policy_name}) - # Asserts that data is actually written to the ILM indices - self.wait_until(lambda: self.es.transport.perform_request( - 'GET', '/' + index_name + '/_search')["hits"]["total"] > 0) + proc = self.start_beat() + self.wait_until(lambda: self.log_contains("mockbeat start running.")) + self.wait_until(lambda: self.log_contains("ILM policy successfully loaded")) + self.wait_until(lambda: self.log_contains("PublishEvents: 1 events have been published")) + proc.check_kill_and_wait() - data = self.es.transport.perform_request('GET', '/' + index_name + '/_search') - assert data["hits"]["total"] > 0 + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, policy_name, self.alias_name) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name) + self.idxmgmt.assert_policy_created(policy_name) @unittest.skipUnless(INTEGRATION_TESTS, "integration test") @attr('integration') def test_rollover_alias(self): """ - Test ilm rollover alias setting + Test settings ilm rollover alias """ - alias_name = "foo" - self.render_config_template( - ilm={ - "enabled": True, - "pattern": "1", - "rollover_alias": alias_name - }, - elasticsearch={ - "hosts": self.get_elasticsearch_url(), - }, - ) - - self.clean(alias_name=alias_name) + self.render_config(ilm={"enabled": True, "rollover_alias": self.custom_alias}) proc = self.start_beat() self.wait_until(lambda: self.log_contains("mockbeat start running.")) - self.wait_until(lambda: self.log_contains("Set setup.template.name")) + self.wait_until(lambda: self.log_contains("ILM policy successfully loaded")) self.wait_until(lambda: self.log_contains("PublishEvents: 1 events have been published")) proc.check_kill_and_wait() - # Make sure the correct index + alias was created - print '/_alias/' + alias_name - logfile = self.beat_name + ".log" - with open(os.path.join(self.working_dir, logfile), "r") as f: - print f.read() - - alias = self.es.transport.perform_request('GET', '/_alias/' + alias_name) - index_name = alias_name + "-1" - assert index_name in alias + self.idxmgmt.assert_ilm_template_loaded(self.custom_alias, self.policy_name, self.custom_alias) + self.idxmgmt.assert_docs_written_to_alias(self.custom_alias) + self.idxmgmt.assert_alias_created(self.custom_alias) @unittest.skipUnless(INTEGRATION_TESTS, "integration test") @attr('integration') def test_pattern(self): """ - Test ilm pattern setting + Test setting ilm pattern """ - self.render_config_template( - ilm={ - "enabled": True, - "pattern": "1" - }, - elasticsearch={ - "hosts": self.get_elasticsearch_url(), - }, - ) - - self.clean() + pattern = "1" + self.render_config(ilm={"enabled": True, "pattern": pattern}) proc = self.start_beat() self.wait_until(lambda: self.log_contains("mockbeat start running.")) - self.wait_until(lambda: self.log_contains("Set setup.template.name")) + self.wait_until(lambda: self.log_contains("ILM policy successfully loaded")) self.wait_until(lambda: self.log_contains("PublishEvents: 1 events have been published")) proc.check_kill_and_wait() - # Make sure the correct index + alias was created - print '/_alias/' + self.alias_name - logfile = self.beat_name + ".log" - with open(os.path.join(self.working_dir, logfile), "r") as f: - print f.read() - - alias = self.es.transport.perform_request('GET', '/_alias/' + self.alias_name) - index_name = self.alias_name + "-1" - assert index_name in alias + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_alias_created(self.alias_name, pattern=pattern) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name, pattern=pattern) @unittest.skipUnless(INTEGRATION_TESTS, "integration test") @attr('integration') def test_pattern_date(self): """ - Test ilm pattern with date inside + Test setting ilm pattern with date """ - self.render_config_template( - ilm={ - "enabled": True, - "pattern": "'{now/d}'" - }, - elasticsearch={ - "hosts": self.get_elasticsearch_url(), - }, - ) - - self.clean() + pattern = "'{now/d}'" + self.render_config(ilm={"enabled": True, "pattern": pattern}) proc = self.start_beat() self.wait_until(lambda: self.log_contains("mockbeat start running.")) - self.wait_until(lambda: self.log_contains("Set setup.template.name")) + self.wait_until(lambda: self.log_contains("ILM policy successfully loaded")) self.wait_until(lambda: self.log_contains("PublishEvents: 1 events have been published")) proc.check_kill_and_wait() - # Make sure the correct index + alias was created - print '/_alias/' + self.alias_name - logfile = self.beat_name + ".log" - with open(os.path.join(self.working_dir, logfile), "r") as f: - print f.read() + resolved_pattern = datetime.datetime.now().strftime("%Y.%m.%d") + + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_alias_created(self.alias_name, pattern=resolved_pattern) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name, pattern=resolved_pattern) + + +class TestCommandSetupILMPolicy(BaseTest): + """ + Test beat command `setup` related to ILM policy + """ + + def setUp(self): + super(TestCommandSetupILMPolicy, self).setUp() + + self.setupCmd = "--ilm-policy" + + self.alias_name = self.policy_name = self.index_name = self.beat_name + "-9.9.9" + self.custom_alias = self.beat_name + "_foo" + self.custom_policy = self.beat_name + "_bar" + self.es = self.es_client() + self.idxmgmt = IdxMgmt(self.es, self.index_name) + self.idxmgmt.delete(index=self.custom_alias) + self.idxmgmt.delete(index=self.custom_policy) + self.idxmgmt.delete(index=self.index_name) + + logging.getLogger("urllib3").setLevel(logging.WARNING) + logging.getLogger("elasticsearch").setLevel(logging.ERROR) - # Make sure the correct index + alias was created - alias = self.es.transport.perform_request('GET', '/_alias/' + self.alias_name) - d = datetime.datetime.now() - now = d.strftime("%Y.%m.%d") - index_name = self.alias_name + "-" + now - assert index_name in alias - assert alias[index_name]["aliases"][self.alias_name]["is_write_index"] == True + def tearDown(self): + self.idxmgmt.delete(index=self.custom_alias) + self.idxmgmt.delete(index=self.custom_policy) + self.idxmgmt.delete(index=self.index_name) + + def render_config(self, **kwargs): + self.render_config_template( + elasticsearch={"hosts": self.get_elasticsearch_url()}, + es_template_name=self.index_name, + **kwargs + ) @unittest.skipUnless(INTEGRATION_TESTS, "integration test") @attr('integration') - def test_setup_ilm_policy(self): + def test_setup_ilm_policy_and_template(self): """ - Test ilm policy setup + Test combination of ilm policy and template setup """ + self.render_config() - self.clean() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, "--template"]) - shutil.copy(self.beat_path + "/_meta/config.yml", - os.path.join(self.working_dir, "libbeat.yml")) - shutil.copy(self.beat_path + "/fields.yml", - os.path.join(self.working_dir, "fields.yml")) + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name) + self.idxmgmt.assert_alias_created(self.alias_name) + self.idxmgmt.assert_policy_created(self.policy_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_ilm_default(self): + """ + Test ilm policy setup with default config + """ + self.render_config() - exit_code = self.run_beat( - logging_args=["-v", "-d", "*"], - extra_args=["setup", - "--ilm-policy", - "-path.config", self.working_dir, - "-E", "setup.ilm.policy_name=" + self.policy_name, - "-E", "output.elasticsearch.hosts=['" + self.get_elasticsearch_url() + "']"], - config="libbeat.yml") + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd]) assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name) + self.idxmgmt.assert_alias_created(self.alias_name) + self.idxmgmt.assert_policy_created(self.policy_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_ilm_disabled(self): + """ + Test ilm policy setup when ilm disabled + """ + self.render_config() + + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, + "-E", "setup.ilm.enabled=false"]) - policy = self.es.transport.perform_request('GET', "/_ilm/policy/" + self.policy_name) - assert self.policy_name in policy + assert exit_code == 0 + self.idxmgmt.assert_index_template_loaded(self.index_name) + self.idxmgmt.assert_alias_not_created(self.alias_name) + self.idxmgmt.assert_policy_not_created(self.policy_name) @unittest.skipUnless(INTEGRATION_TESTS, "integration test") @attr('integration') - def test_export_ilm_policy(self): + def test_policy_name(self): """ - Test ilm policy export + Test ilm policy setup when policy_name is configured """ + self.render_config() + + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, + "-E", "setup.ilm.policy_name=" + self.custom_policy]) - self.clean() + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.custom_policy, self.alias_name) + self.idxmgmt.assert_policy_created(self.custom_policy) - shutil.copy(self.beat_path + "/_meta/config.yml", - os.path.join(self.working_dir, "libbeat.yml")) - shutil.copy(self.beat_path + "/fields.yml", - os.path.join(self.working_dir, "fields.yml")) + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_rollover_alias(self): + """ + Test ilm policy setup when rollover_alias is configured + """ + self.render_config() - exit_code = self.run_beat( - logging_args=["-v", "-d", "*"], - extra_args=["export", - "ilm-policy", - ], - config="libbeat.yml") + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, + "-E", "setup.ilm.rollover_alias=" + self.custom_alias]) assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.custom_alias, self.policy_name, self.custom_alias) + self.idxmgmt.assert_docs_written_to_alias(self.custom_alias) + self.idxmgmt.assert_alias_created(self.custom_alias) + +class TestCommandExportILMPolicy(BaseTest): + """ + Test beat command `export ilm-policy` + """ + + def setUp(self): + super(TestCommandExportILMPolicy, self).setUp() + + self.config = "libbeat.yml" + self.output = os.path.join(self.working_dir, self.config) + shutil.copy(os.path.join(self.beat_path, "fields.yml"), self.output) + self.policy_name = self.beat_name + "-9.9.9" + self.cmd = "ilm-policy" + + def assert_log_contains_policy(self, policy): + assert self.log_contains('ILM policy successfully loaded.') + assert self.log_contains(policy) assert self.log_contains('"max_age": "30d"') assert self.log_contains('"max_size": "50gb"') - def clean(self, alias_name=""): - - if alias_name == "": - alias_name = self.alias_name - - # Delete existing indices and aliases with it policy - try: - self.es.transport.perform_request('DELETE', "/" + alias_name + "*") - except: - pass - - # Delete any existing policy - try: - self.es.transport.perform_request('DELETE', "/_ilm/policy/" + self.policy_name) - except: - pass - - # Delete templates - try: - self.es.transport.perform_request('DELETE', "/_template/mockbeat*") - except: - pass - - # Delete indices - try: - self.es.transport.perform_request('DELETE', "/foo*,mockbeat*") - except: - pass + def assert_log_contains_write_alias(self): + assert self.log_contains('Write alias successfully generated.') + + def test_default(self): + """ + Test ilm-policy export with default config + """ + + exit_code = self.run_beat(extra_args=["export", self.cmd], + config=self.config) + + assert exit_code == 0 + self.assert_log_contains_policy(self.policy_name) + self.assert_log_contains_write_alias() + + def test_load_disabled(self): + """ + Test ilm-policy export when ilm disabled in config + """ + + exit_code = self.run_beat(extra_args=["export", self.cmd, "-E", "setup.ilm.enabled=false"], + config=self.config) + + assert exit_code == 0 + self.assert_log_contains_policy(self.policy_name) + self.assert_log_contains_write_alias() + + def test_changed_policy_name(self): + """ + Test ilm-policy export when policy name is changed + + """ + policy_name = "foo" + + exit_code = self.run_beat(extra_args=["export", self.cmd, "-E", "setup.ilm.policy_name=" + policy_name], + config=self.config) + + assert exit_code == 0 + self.assert_log_contains_policy(policy_name) + self.assert_log_contains_write_alias() diff --git a/libbeat/tests/system/test_template.py b/libbeat/tests/system/test_template.py index 47e9162ac602..962f5aed4197 100644 --- a/libbeat/tests/system/test_template.py +++ b/libbeat/tests/system/test_template.py @@ -1,8 +1,10 @@ from base import BaseTest +from idxmgmt import IdxMgmt import os -from elasticsearch import Elasticsearch, TransportError from nose.plugins.attrib import attr import unittest +import shutil +import logging INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) @@ -21,7 +23,7 @@ def test_index_modified(self): assert exit_code == 1 assert self.log_contains( - "setup.template.name and setup.template.pattern have to be set if index name is modified") is True + "setup.template.name and setup.template.pattern have to be set if index name is modified") def test_index_not_modified(self): """ @@ -48,7 +50,7 @@ def test_index_modified_no_pattern(self): assert exit_code == 1 assert self.log_contains( - "setup.template.name and setup.template.pattern have to be set if index name is modified") is True + "setup.template.name and setup.template.pattern have to be set if index name is modified") def test_index_modified_no_name(self): """ @@ -63,7 +65,7 @@ def test_index_modified_no_name(self): assert exit_code == 1 assert self.log_contains( - "setup.template.name and setup.template.pattern have to be set if index name is modified") is True + "setup.template.name and setup.template.pattern have to be set if index name is modified") def test_index_with_pattern_name(self): """ @@ -105,9 +107,277 @@ def test_json_template(self): self.wait_until(lambda: self.log_contains("template with name 'bla' loaded")) proc.check_kill_and_wait() - es = Elasticsearch([self.get_elasticsearch_url()]) + es = self.es_client() result = es.transport.perform_request('GET', '/_template/bla') assert len(result) == 1 def get_host(self): return os.getenv('ES_HOST', 'localhost') + ':' + os.getenv('ES_PORT', '9200') + + +class TestRunTemplate(BaseTest): + """ + Test run cmd with focus on template setup + """ + + def setUp(self): + super(TestRunTemplate, self).setUp() + # auto-derived default settings, if nothing else is set + self.index_name = self.beat_name + "-9.9.9" + + self.es = self.es_client() + self.idxmgmt = IdxMgmt(self.es, self.index_name) + self.idxmgmt.delete(index=self.index_name) + + def tearDown(self): + self.idxmgmt.delete(index=self.index_name) + + def render_config(self, **kwargs): + self.render_config_template( + elasticsearch={"hosts": self.get_elasticsearch_url()}, + **kwargs + ) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_template_default(self): + """ + Test run cmd with default settings for template + """ + self.render_config() + proc = self.start_beat() + self.wait_until(lambda: self.log_contains("mockbeat start running.")) + self.wait_until(lambda: self.log_contains("template with name 'mockbeat-9.9.9' loaded")) + self.wait_until(lambda: self.log_contains("PublishEvents: 1 events have been published")) + proc.check_kill_and_wait() + + self.idxmgmt.assert_ilm_template_loaded(self.index_name, self.index_name, self.index_name) + self.idxmgmt.assert_alias_created(self.index_name) + self.idxmgmt.assert_docs_written_to_alias(self.index_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_template_disabled(self): + """ + Test run cmd does not load template when disabled in config + """ + self.render_config() + proc = self.start_beat(extra_args=["-E", "setup.template.enabled=false"]) + self.wait_until(lambda: self.log_contains("mockbeat start running.")) + self.wait_until(lambda: self.log_contains("PublishEvents: 1 events have been published")) + proc.check_kill_and_wait() + + self.idxmgmt.assert_index_template_not_loaded(self.index_name) + + +class TestCommandSetupTemplate(BaseTest): + """ + Test beat command `setup` with focus on template + """ + + def setUp(self): + super(TestCommandSetupTemplate, self).setUp() + + # auto-derived default settings, if nothing else is set + self.setupCmd = "--template" + self.index_name = self.beat_name + "-9.9.9" + self.custom_alias = self.beat_name + "_foo" + + self.es = self.es_client() + self.idxmgmt = IdxMgmt(self.es, self.index_name) + self.idxmgmt.delete(index=self.custom_alias) + self.idxmgmt.delete(index=self.index_name) + logging.getLogger("urllib3").setLevel(logging.WARNING) + logging.getLogger("elasticsearch").setLevel(logging.ERROR) + + def tearDown(self): + self.idxmgmt.delete(index=self.custom_alias) + self.idxmgmt.delete(index=self.index_name) + + def render_config(self, **kwargs): + self.render_config_template( + elasticsearch={"hosts": self.get_elasticsearch_url()}, + **kwargs + ) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup(self): + """ + Test setup cmd with template and ilm-policy subcommands + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, "--ilm-policy"]) + + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.index_name, self.index_name, self.index_name) + self.idxmgmt.assert_alias_created(self.index_name) + self.idxmgmt.assert_policy_created(self.index_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_template_default(self): + """ + Test template setup with default config + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd]) + + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.index_name, self.index_name, self.index_name) + self.idxmgmt.assert_index_template_index_pattern(self.index_name, [self.index_name + "-*"]) + + # when running `setup --template` + # write_alias and rollover_policy related to ILM are also created + self.idxmgmt.assert_alias_created(self.index_name) + self.idxmgmt.assert_policy_created(self.index_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_template_disabled(self): + """ + Test template setup when ilm disabled + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, + "-E", "setup.template.enabled=false"]) + + assert exit_code == 0 + self.idxmgmt.assert_index_template_not_loaded(self.index_name) + + # when running `setup --template` and `setup.template.enabled=false` + # write_alias and rollover_policy related to ILM are still created + self.idxmgmt.assert_alias_created(self.index_name) + self.idxmgmt.assert_policy_created(self.index_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_template_with_opts(self): + """ + Test template setup with config options + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, + "-E", "setup.ilm.enabled=false", + "-E", "setup.template.settings.index.number_of_shards=2"]) + + assert exit_code == 0 + self.idxmgmt.assert_index_template_loaded(self.index_name) + + # check that settings are overwritten + resp = self.es.transport.perform_request('GET', '/_template/' + self.index_name) + assert self.index_name in resp + index = resp[self.index_name]["settings"]["index"] + assert index["number_of_shards"] == "2", index["number_of_shards"] + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_template_with_ilm_changed_pattern(self): + """ + Test template setup with changed ilm.rollover_alias config + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, + "-E", "setup.ilm.rollover_alias=" + self.custom_alias]) + + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.custom_alias, self.index_name, self.custom_alias) + self.idxmgmt.assert_index_template_index_pattern(self.custom_alias, [self.custom_alias + "-*"]) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_template_created_on_ilm_policy_created(self): + """ + Test template setup overwrites template when new ilm policy is created + """ + + # ensure template with ilm rollover_alias name is created, but ilm policy not yet + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.setupCmd, + "-E", "setup.ilm.enabled=false", + "-E", "setup.template.name=" + self.custom_alias, + "-E", "setup.template.pattern=" + self.custom_alias + "*"]) + assert exit_code == 0 + self.idxmgmt.assert_index_template_loaded(self.custom_alias) + self.idxmgmt.assert_policy_not_created(self.index_name) + + # ensure ilm policy is created, triggering overwriting existing template + exit_code = self.run_beat(extra_args=["setup", self.setupCmd, + "-E", "setup.template.overwrite=false", + "-E", "setup.template.settings.index.number_of_shards=2", + "-E", "setup.ilm.rollover_alias=" + self.custom_alias]) + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.custom_alias, self.index_name, self.custom_alias) + self.idxmgmt.assert_policy_created(self.index_name) + # check that template was overwritten + resp = self.es.transport.perform_request('GET', '/_template/' + self.custom_alias) + assert self.custom_alias in resp + index = resp[self.custom_alias]["settings"]["index"] + assert index["number_of_shards"] == "2", index["number_of_shards"] + + +class TestCommandExportTemplate(BaseTest): + """ + Test beat command `export template` + """ + + def setUp(self): + super(TestCommandExportTemplate, self).setUp() + + self.config = "libbeat.yml" + self.output = os.path.join(self.working_dir, self.config) + shutil.copy(os.path.join(self.beat_path, "fields.yml"), self.output) + self.template_name = self.beat_name + "-9.9.9" + + def assert_log_contains_template(self, template, index_pattern): + assert self.log_contains('Loaded index template') + assert self.log_contains(template) + assert self.log_contains(index_pattern) + + def test_default(self): + """ + Test export template works + """ + self.render_config_template(self.beat_name, self.output, + fields=self.output) + exit_code = self.run_beat( + extra_args=["export", "template"], + config=self.config) + + assert exit_code == 0 + self.assert_log_contains_template(self.template_name, self.template_name + "-*") + + def test_changed_index_pattern(self): + """ + Test export template with changed index pattern + """ + self.render_config_template(self.beat_name, self.output, + fields=self.output) + alias_name = "mockbeat-ilm-index-pattern" + + exit_code = self.run_beat( + extra_args=["export", "template", + "-E", "setup.ilm.rollover_alias=" + alias_name], + config=self.config) + + assert exit_code == 0 + self.assert_log_contains_template(self.template_name, alias_name + "-*") + + def test_load_disabled(self): + """ + Test template also exported when disabled in config + """ + self.render_config_template(self.beat_name, self.output, + fields=self.output) + exit_code = self.run_beat( + extra_args=["export", "template", "-E", "setup.template.enabled=false"], + config=self.config) + + assert exit_code == 0 + self.assert_log_contains_template(self.template_name, self.template_name + "-*") From 683f4f774013f76560f72249100ff8f234983f48 Mon Sep 17 00:00:00 2001 From: Christoph Wurm Date: Wed, 8 May 2019 11:48:09 -0700 Subject: [PATCH 09/59] [Auditbeat] Login: Fix re-read of utmp files (#12028) The `login` dataset is not using the previous file offset when reading new entries in a utmp file. As a result, whenever a new login event occurs, all records are re-read. Also expands the documentation, moves test files to testdata/, and adds a test case that adds a utmp record to the test file and re-reads it to make sure this bug does not happen again. --- CHANGELOG.next.asciidoc | 1 + .../module/system/login/_meta/docs.asciidoc | 17 +++- .../module/system/login/login_test.go | 94 +++++++++++++++++- .../system/login/testdata}/btmp_ubuntu1804 | Bin .../system/login/testdata}/wtmp | Bin x-pack/auditbeat/module/system/login/utmp.go | 12 +-- .../auditbeat/tests/system/test_metricsets.py | 4 +- 7 files changed, 116 insertions(+), 12 deletions(-) rename x-pack/auditbeat/{tests/files => module/system/login/testdata}/btmp_ubuntu1804 (100%) rename x-pack/auditbeat/{tests/files => module/system/login/testdata}/wtmp (100%) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 78e16baf3775..457ab58c3deb 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -76,6 +76,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Package dataset: dlopen versioned librpm shared objects. {pull}11565[11565] - Package dataset: Nullify Librpm's rpmsqEnable. {pull}11628[11628] - Package dataset: Log error when Homebrew is not installed. {pull}11667[11667] +- Login dataset: Fix re-read of utmp files. {pull}12028[12028] *Filebeat* diff --git a/x-pack/auditbeat/module/system/login/_meta/docs.asciidoc b/x-pack/auditbeat/module/system/login/_meta/docs.asciidoc index 656dfa6dc3bb..e58daca5681f 100644 --- a/x-pack/auditbeat/module/system/login/_meta/docs.asciidoc +++ b/x-pack/auditbeat/module/system/login/_meta/docs.asciidoc @@ -4,7 +4,22 @@ beta[] This is the `login` dataset of the system module. -It is implemented for Linux only. +[float] +=== Implementation + +The `login` dataset is implemented for Linux only. + +On Linux, the dataset reads the https://en.wikipedia.org/wiki/Utmp[utmp] files +that keep track of logins and logouts to the system. They are usually located +at `/var/log/wtmp` (successful logins) and `/var/log/btmp` (failed logins). + +The file patterns used to locate the files can be configured using +`login.wtmp_file_pattern` and `login.btmp_file_pattern`. By default, +both the current files and any rotated files (e.g. `wtmp.1`, `wtmp.2`) +are read. + +utmp files are binary, but you can display their contents using the +`utmpdump` utility. [float] ==== Example dashboard diff --git a/x-pack/auditbeat/module/system/login/login_test.go b/x-pack/auditbeat/module/system/login/login_test.go index 6634c39e0a61..9bd977ac0e46 100644 --- a/x-pack/auditbeat/module/system/login/login_test.go +++ b/x-pack/auditbeat/module/system/login/login_test.go @@ -8,7 +8,11 @@ package login import ( "encoding/binary" + "io" + "io/ioutil" "net" + "os" + "path/filepath" "testing" "time" @@ -28,7 +32,7 @@ func TestData(t *testing.T) { defer abtest.SetupDataDir(t)() config := getBaseConfig() - config["login.wtmp_file_pattern"] = "../../../tests/files/wtmp" + config["login.wtmp_file_pattern"] = "./testdata/wtmp" config["login.btmp_file_pattern"] = "" f := mbtest.NewReportingMetricSetV2(t, config) defer f.(*MetricSet).utmpReader.bucket.DeleteBucket() @@ -56,8 +60,13 @@ func TestWtmp(t *testing.T) { defer abtest.SetupDataDir(t)() + dir := setupTestDir(t) + defer os.RemoveAll(dir) + + wtmpFilepath := filepath.Join(dir, "wtmp") + config := getBaseConfig() - config["login.wtmp_file_pattern"] = "../../../tests/files/wtmp" + config["login.wtmp_file_pattern"] = wtmpFilepath config["login.btmp_file_pattern"] = "" f := mbtest.NewReportingMetricSetV2(t, config) defer f.(*MetricSet).utmpReader.bucket.DeleteBucket() @@ -85,6 +94,40 @@ func TestWtmp(t *testing.T) { checkFieldValue(t, events[0].RootFields, "user.terminal", "pts/2") assert.True(t, events[0].Timestamp.Equal(time.Date(2019, 1, 24, 9, 51, 51, 367964000, time.UTC)), "Timestamp is not equal: %+v", events[0].Timestamp) + + // Append logout event to wtmp file and check that it's read + wtmpFile, err := os.OpenFile(wtmpFilepath, os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { + t.Fatalf("error opening %v: %v", wtmpFilepath, err) + } + + loginUtmp := utmpC{ + Type: DEAD_PROCESS, + } + copy(loginUtmp.Device[:], "pts/2") + + err = binary.Write(wtmpFile, byteOrder, loginUtmp) + if err != nil { + t.Fatalf("error writing to %v: %v", wtmpFilepath, err) + } + + events, errs = mbtest.ReportingFetchV2(f) + if len(errs) > 0 { + t.Fatalf("received error: %+v", errs[0]) + } + + if len(events) == 0 { + t.Fatal("no events were generated") + } else if len(events) != 1 { + t.Fatalf("only one event expected, got %d: %v", len(events), events) + } + + checkFieldValue(t, events[0].RootFields, "event.kind", "event") + checkFieldValue(t, events[0].RootFields, "event.action", "user_logout") + checkFieldValue(t, events[0].RootFields, "process.pid", 14962) + checkFieldValue(t, events[0].RootFields, "source.ip", "10.0.2.2") + checkFieldValue(t, events[0].RootFields, "user.name", "vagrant") + checkFieldValue(t, events[0].RootFields, "user.terminal", "pts/2") } func TestBtmp(t *testing.T) { @@ -96,7 +139,7 @@ func TestBtmp(t *testing.T) { config := getBaseConfig() config["login.wtmp_file_pattern"] = "" - config["login.btmp_file_pattern"] = "../../../tests/files/btmp_ubuntu1804" + config["login.btmp_file_pattern"] = "./testdata/btmp*" f := mbtest.NewReportingMetricSetV2(t, config) defer f.(*MetricSet).utmpReader.bucket.DeleteBucket() @@ -190,3 +233,48 @@ func getBaseConfig() map[string]interface{} { "datasets": []string{"login"}, } } + +// setupTestDir creates a temporary directory, copies the test files into it, +// and returns the path. +func setupTestDir(t *testing.T) string { + tmp, err := ioutil.TempDir("", "auditbeat-login-test-dir") + if err != nil { + t.Fatal("failed to create temp dir") + } + + copyDir(t, "./testdata", tmp) + + return tmp +} + +func copyDir(t *testing.T, src, dst string) { + files, err := ioutil.ReadDir(src) + if err != nil { + t.Fatalf("failed to read %v", src) + } + + for _, file := range files { + srcFile := filepath.Join(src, file.Name()) + dstFile := filepath.Join(dst, file.Name()) + copyFile(t, srcFile, dstFile) + } +} + +func copyFile(t *testing.T, src, dst string) { + in, err := os.Open(src) + if err != nil { + t.Fatalf("failed to open %v", src) + } + defer in.Close() + + out, err := os.Create(dst) + if err != nil { + t.Fatalf("failed to open %v", dst) + } + defer out.Close() + + _, err = io.Copy(out, in) + if err != nil { + t.Fatalf("failed to copy %v to %v", src, dst) + } +} diff --git a/x-pack/auditbeat/tests/files/btmp_ubuntu1804 b/x-pack/auditbeat/module/system/login/testdata/btmp_ubuntu1804 similarity index 100% rename from x-pack/auditbeat/tests/files/btmp_ubuntu1804 rename to x-pack/auditbeat/module/system/login/testdata/btmp_ubuntu1804 diff --git a/x-pack/auditbeat/tests/files/wtmp b/x-pack/auditbeat/module/system/login/testdata/wtmp similarity index 100% rename from x-pack/auditbeat/tests/files/wtmp rename to x-pack/auditbeat/module/system/login/testdata/wtmp diff --git a/x-pack/auditbeat/module/system/login/utmp.go b/x-pack/auditbeat/module/system/login/utmp.go index 11dddeb5862d..2b8d1f53303e 100644 --- a/x-pack/auditbeat/module/system/login/utmp.go +++ b/x-pack/auditbeat/module/system/login/utmp.go @@ -146,11 +146,10 @@ func (r *UtmpFileReader) findFiles(filePattern string, utmpType UtmpType) ([]Utm } utmpFiles = append(utmpFiles, UtmpFile{ - Inode: Inode(fileInfo.Sys().(*syscall.Stat_t).Ino), - Path: path, - Size: fileInfo.Size(), - Offset: 0, - Type: utmpType, + Inode: Inode(fileInfo.Sys().(*syscall.Stat_t).Ino), + Path: path, + Size: fileInfo.Size(), + Type: utmpType, }) } @@ -178,6 +177,7 @@ func (r *UtmpFileReader) readNewInFile(loginRecordC chan<- LoginRecord, errorC c if !isKnownFile { r.log.Debugf("Found new file: %v (utmpFile=%+v)", utmpFile.Path, utmpFile) } + utmpFile.Offset = savedUtmpFile.Offset size := utmpFile.Size oldSize := savedUtmpFile.Size @@ -211,7 +211,7 @@ func (r *UtmpFileReader) readNewInFile(loginRecordC chan<- LoginRecord, errorC c defer func() { // Once we start reading a file, we update the file record even if something fails - // otherwise we will just keep trying to re-read very frequently forever. - r.updateSavedUtmpFile(utmpFile, f) + err := r.updateSavedUtmpFile(utmpFile, f) if err != nil { errorC <- errors.Wrapf(err, "error updating file record for file %v", utmpFile.Path) } diff --git a/x-pack/auditbeat/tests/system/test_metricsets.py b/x-pack/auditbeat/tests/system/test_metricsets.py index a4956f77aa6a..47494d2ec4bf 100644 --- a/x-pack/auditbeat/tests/system/test_metricsets.py +++ b/x-pack/auditbeat/tests/system/test_metricsets.py @@ -34,8 +34,8 @@ def test_metricset_login(self): "user.name", "user.terminal"] config = { - "login.wtmp_file_pattern": os.path.abspath(os.path.join(self.beat_path, "tests/files/wtmp")), - "login.btmp_file_pattern": "-1" + "login.wtmp_file_pattern": os.path.abspath(os.path.join(self.beat_path, "module/system/login/testdata/wtmp*")), + "login.btmp_file_pattern": os.path.abspath(os.path.join(self.beat_path, "module/system/login/testdata/btmp*")), } # Metricset is beta and that generates a warning, TODO: remove later From 622377add18854e448af0d9585619ad5905e540a Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Wed, 8 May 2019 21:13:33 +0200 Subject: [PATCH 10/59] [Metricbeat][postgresql] Update lib/pq to fix #11393 (#12094) This updates github.com/lib/pq to the latest version to fix a socket leak when SSL is not enabled on the PostgreSQL server. Fixes #11393 --- CHANGELOG.next.asciidoc | 1 + NOTICE.txt | 2 +- .../vendor/github.com/lib/pq/README.md | 16 +- .../vendor/github.com/lib/pq/TESTS.md | 33 ++ .../vendor/github.com/lib/pq/array.go | 6 +- .../vendor/github.com/lib/pq/conn.go | 472 +++++++++++------- .../vendor/github.com/lib/pq/conn_go18.go | 64 ++- .../vendor/github.com/lib/pq/connector.go | 110 ++++ .../vendor/github.com/lib/pq/doc.go | 32 +- .../vendor/github.com/lib/pq/encode.go | 21 +- .../vendor/github.com/lib/pq/error.go | 9 +- .../vendor/github.com/lib/pq/go.mod | 1 + .../vendor/github.com/lib/pq/notify.go | 65 ++- .../vendor/github.com/lib/pq/oid/gen.go | 74 --- .../vendor/github.com/lib/pq/oid/types.go | 172 ++++++- .../vendor/github.com/lib/pq/rows.go | 93 ++++ .../vendor/github.com/lib/pq/scram/scram.go | 264 ++++++++++ .../vendor/github.com/lib/pq/ssl.go | 65 ++- .../vendor/github.com/lib/pq/ssl_go1.7.go | 14 - .../github.com/lib/pq/ssl_renegotiation.go | 8 - .../module/postgresql/vendor/vendor.json | 18 +- 21 files changed, 1157 insertions(+), 383 deletions(-) create mode 100644 metricbeat/module/postgresql/vendor/github.com/lib/pq/TESTS.md create mode 100644 metricbeat/module/postgresql/vendor/github.com/lib/pq/connector.go create mode 100644 metricbeat/module/postgresql/vendor/github.com/lib/pq/go.mod delete mode 100644 metricbeat/module/postgresql/vendor/github.com/lib/pq/oid/gen.go create mode 100644 metricbeat/module/postgresql/vendor/github.com/lib/pq/rows.go create mode 100644 metricbeat/module/postgresql/vendor/github.com/lib/pq/scram/scram.go delete mode 100644 metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl_go1.7.go delete mode 100644 metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl_renegotiation.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 457ab58c3deb..a9074f696d54 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -108,6 +108,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Call GetMetricData api per region instead of per instance. {issue}11820[11820] {pull}11882[11882] - Update documentation with cloudwatch:ListMetrics permission. {pull}11987[11987] - Avoid generating hints-based configuration with empty hosts when no exposed port is suitable for the hosts hint. {issue}8264[8264] {pull}12086[12086] +- Fixed a socket leak in the postgresql module under Windows when SSL is disabled on the server. {pull}11393[11393] *Packetbeat* diff --git a/NOTICE.txt b/NOTICE.txt index de395baa9df6..64555787564c 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1921,7 +1921,7 @@ Apache License 2.0 -------------------------------------------------------------------- Dependency: github.com/lib/pq -Revision: 2704adc878c21e1329f46f6e56a1c387d788ff94 +Revision: 2ff3cb3adc01768e0a552b3a02575a6df38a9bea License type (autodetected): MIT ./metricbeat/module/postgresql/vendor/github.com/lib/pq/LICENSE.md: -------------------------------------------------------------------- diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/README.md b/metricbeat/module/postgresql/vendor/github.com/lib/pq/README.md index 7670fc87a51e..385fe73508ea 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/README.md +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/README.md @@ -1,5 +1,6 @@ # pq - A pure Go postgres driver for Go's database/sql package +[![GoDoc](https://godoc.org/github.com/lib/pq?status.svg)](https://godoc.org/github.com/lib/pq) [![Build Status](https://travis-ci.org/lib/pq.svg?branch=master)](https://travis-ci.org/lib/pq) ## Install @@ -9,22 +10,11 @@ ## Docs For detailed documentation and basic usage examples, please see the package -documentation at . +documentation at . ## Tests -`go test` is used for testing. A running PostgreSQL server is -required, with the ability to log in. The default database to connect -to test with is "pqgotest," but it can be overridden using environment -variables. - -Example: - - PGHOST=/run/postgresql go test github.com/lib/pq - -Optionally, a benchmark suite can be run as part of the tests: - - PGHOST=/run/postgresql go test -bench . +`go test` is used for testing. See [TESTS.md](TESTS.md) for more details. ## Features diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/TESTS.md b/metricbeat/module/postgresql/vendor/github.com/lib/pq/TESTS.md new file mode 100644 index 000000000000..f05021115be2 --- /dev/null +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/TESTS.md @@ -0,0 +1,33 @@ +# Tests + +## Running Tests + +`go test` is used for testing. A running PostgreSQL +server is required, with the ability to log in. The +database to connect to test with is "pqgotest," on +"localhost" but these can be overridden using [environment +variables](https://www.postgresql.org/docs/9.3/static/libpq-envars.html). + +Example: + + PGHOST=/run/postgresql go test + +## Benchmarks + +A benchmark suite can be run as part of the tests: + + go test -bench . + +## Example setup (Docker) + +Run a postgres container: + +``` +docker run --expose 5432:5432 postgres +``` + +Run tests: + +``` +PGHOST=localhost PGPORT=5432 PGUSER=postgres PGSSLMODE=disable PGDATABASE=postgres go test +``` diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/array.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/array.go index e7b2145d67bd..e4933e227649 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/array.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/array.go @@ -13,7 +13,7 @@ import ( var typeByteSlice = reflect.TypeOf([]byte{}) var typeDriverValuer = reflect.TypeOf((*driver.Valuer)(nil)).Elem() -var typeSqlScanner = reflect.TypeOf((*sql.Scanner)(nil)).Elem() +var typeSQLScanner = reflect.TypeOf((*sql.Scanner)(nil)).Elem() // Array returns the optimal driver.Valuer and sql.Scanner for an array or // slice of any dimension. @@ -278,7 +278,7 @@ func (GenericArray) evaluateDestination(rt reflect.Type) (reflect.Type, func([]b // TODO calculate the assign function for other types // TODO repeat this section on the element type of arrays or slices (multidimensional) { - if reflect.PtrTo(rt).Implements(typeSqlScanner) { + if reflect.PtrTo(rt).Implements(typeSQLScanner) { // dest is always addressable because it is an element of a slice. assign = func(src []byte, dest reflect.Value) (err error) { ss := dest.Addr().Interface().(sql.Scanner) @@ -587,7 +587,7 @@ func appendArrayElement(b []byte, rv reflect.Value) ([]byte, string, error) { } } - var del string = "," + var del = "," var err error var iv interface{} = rv.Interface() diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/conn.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/conn.go index 3e3a5cabcd7e..012c8c7c8973 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/conn.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/conn.go @@ -2,7 +2,9 @@ package pq import ( "bufio" + "context" "crypto/md5" + "crypto/sha256" "database/sql" "database/sql/driver" "encoding/binary" @@ -20,6 +22,7 @@ import ( "unicode" "github.com/lib/pq/oid" + "github.com/lib/pq/scram" ) // Common error types @@ -27,16 +30,20 @@ var ( ErrNotSupported = errors.New("pq: Unsupported command") ErrInFailedTransaction = errors.New("pq: Could not complete operation in a failed transaction") ErrSSLNotSupported = errors.New("pq: SSL is not enabled on the server") - ErrSSLKeyHasWorldPermissions = errors.New("pq: Private key file has group or world access. Permissions should be u=rw (0600) or less.") - ErrCouldNotDetectUsername = errors.New("pq: Could not detect default username. Please provide one explicitly.") + ErrSSLKeyHasWorldPermissions = errors.New("pq: Private key file has group or world access. Permissions should be u=rw (0600) or less") + ErrCouldNotDetectUsername = errors.New("pq: Could not detect default username. Please provide one explicitly") errUnexpectedReady = errors.New("unexpected ReadyForQuery") errNoRowsAffected = errors.New("no RowsAffected available after the empty statement") - errNoLastInsertId = errors.New("no LastInsertId available after the empty statement") + errNoLastInsertID = errors.New("no LastInsertId available after the empty statement") ) +// Driver is the Postgres database driver. type Driver struct{} +// Open opens a new connection to the database. name is a connection string. +// Most users should only use it through database/sql package from the standard +// library. func (d *Driver) Open(name string) (driver.Conn, error) { return Open(name) } @@ -78,18 +85,31 @@ func (s transactionStatus) String() string { panic("not reached") } +// Dialer is the dialer interface. It can be used to obtain more control over +// how pq creates network connections. type Dialer interface { Dial(network, address string) (net.Conn, error) DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) } -type defaultDialer struct{} +type DialerContext interface { + DialContext(ctx context.Context, network, address string) (net.Conn, error) +} + +type defaultDialer struct { + d net.Dialer +} -func (d defaultDialer) Dial(ntw, addr string) (net.Conn, error) { - return net.Dial(ntw, addr) +func (d defaultDialer) Dial(network, address string) (net.Conn, error) { + return d.d.Dial(network, address) +} +func (d defaultDialer) DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) { + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + return d.DialContext(ctx, network, address) } -func (d defaultDialer) DialTimeout(ntw, addr string, timeout time.Duration) (net.Conn, error) { - return net.DialTimeout(ntw, addr, timeout) +func (d defaultDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) { + return d.d.DialContext(ctx, network, address) } type conn struct { @@ -131,7 +151,7 @@ type conn struct { } // Handle driver-side settings in parsed connection string. -func (c *conn) handleDriverSettings(o values) (err error) { +func (cn *conn) handleDriverSettings(o values) (err error) { boolSetting := func(key string, val *bool) error { if value, ok := o[key]; ok { if value == "yes" { @@ -145,18 +165,14 @@ func (c *conn) handleDriverSettings(o values) (err error) { return nil } - err = boolSetting("disable_prepared_binary_result", &c.disablePreparedBinaryResult) + err = boolSetting("disable_prepared_binary_result", &cn.disablePreparedBinaryResult) if err != nil { return err } - err = boolSetting("binary_parameters", &c.binaryParameters) - if err != nil { - return err - } - return nil + return boolSetting("binary_parameters", &cn.binaryParameters) } -func (c *conn) handlePgpass(o values) { +func (cn *conn) handlePgpass(o values) { // if a password was supplied, do not process .pgpass if _, ok := o["password"]; ok { return @@ -165,11 +181,16 @@ func (c *conn) handlePgpass(o values) { if filename == "" { // XXX this code doesn't work on Windows where the default filename is // XXX %APPDATA%\postgresql\pgpass.conf - user, err := user.Current() - if err != nil { - return + // Prefer $HOME over user.Current due to glibc bug: golang.org/issue/13470 + userHome := os.Getenv("HOME") + if userHome == "" { + user, err := user.Current() + if err != nil { + return + } + userHome = user.HomeDir } - filename = filepath.Join(user.HomeDir, ".pgpass") + filename = filepath.Join(userHome, ".pgpass") } fileinfo, err := os.Stat(filename) if err != nil { @@ -229,95 +250,43 @@ func (c *conn) handlePgpass(o values) { } } -func (c *conn) writeBuf(b byte) *writeBuf { - c.scratch[0] = b +func (cn *conn) writeBuf(b byte) *writeBuf { + cn.scratch[0] = b return &writeBuf{ - buf: c.scratch[:5], + buf: cn.scratch[:5], pos: 1, } } -func Open(name string) (_ driver.Conn, err error) { - return DialOpen(defaultDialer{}, name) +// Open opens a new connection to the database. dsn is a connection string. +// Most users should only use it through database/sql package from the standard +// library. +func Open(dsn string) (_ driver.Conn, err error) { + return DialOpen(defaultDialer{}, dsn) +} + +// DialOpen opens a new connection to the database using a dialer. +func DialOpen(d Dialer, dsn string) (_ driver.Conn, err error) { + c, err := NewConnector(dsn) + if err != nil { + return nil, err + } + c.dialer = d + return c.open(context.Background()) } -func DialOpen(d Dialer, name string) (_ driver.Conn, err error) { +func (c *Connector) open(ctx context.Context) (cn *conn, err error) { // Handle any panics during connection initialization. Note that we // specifically do *not* want to use errRecover(), as that would turn any // connection errors into ErrBadConns, hiding the real error message from // the user. defer errRecoverNoErrBadConn(&err) - o := make(values) - - // A number of defaults are applied here, in this order: - // - // * Very low precedence defaults applied in every situation - // * Environment variables - // * Explicitly passed connection information - o["host"] = "localhost" - o["port"] = "5432" - // N.B.: Extra float digits should be set to 3, but that breaks - // Postgres 8.4 and older, where the max is 2. - o["extra_float_digits"] = "2" - for k, v := range parseEnviron(os.Environ()) { - o[k] = v - } - - if strings.HasPrefix(name, "postgres://") || strings.HasPrefix(name, "postgresql://") { - name, err = ParseURL(name) - if err != nil { - return nil, err - } - } - - if err := parseOpts(name, o); err != nil { - return nil, err - } - - // Use the "fallback" application name if necessary - if fallback, ok := o["fallback_application_name"]; ok { - if _, ok := o["application_name"]; !ok { - o["application_name"] = fallback - } - } + o := c.opts - // We can't work with any client_encoding other than UTF-8 currently. - // However, we have historically allowed the user to set it to UTF-8 - // explicitly, and there's no reason to break such programs, so allow that. - // Note that the "options" setting could also set client_encoding, but - // parsing its value is not worth it. Instead, we always explicitly send - // client_encoding as a separate run-time parameter, which should override - // anything set in options. - if enc, ok := o["client_encoding"]; ok && !isUTF8(enc) { - return nil, errors.New("client_encoding must be absent or 'UTF8'") - } - o["client_encoding"] = "UTF8" - // DateStyle needs a similar treatment. - if datestyle, ok := o["datestyle"]; ok { - if datestyle != "ISO, MDY" { - panic(fmt.Sprintf("setting datestyle must be absent or %v; got %v", - "ISO, MDY", datestyle)) - } - } else { - o["datestyle"] = "ISO, MDY" - } - - // If a user is not provided by any other means, the last - // resort is to use the current operating system provided user - // name. - if _, ok := o["user"]; !ok { - u, err := userCurrent() - if err != nil { - return nil, err - } else { - o["user"] = u - } - } - - cn := &conn{ + cn = &conn{ opts: o, - dialer: d, + dialer: c.dialer, } err = cn.handleDriverSettings(o) if err != nil { @@ -325,11 +294,27 @@ func DialOpen(d Dialer, name string) (_ driver.Conn, err error) { } cn.handlePgpass(o) - cn.c, err = dial(d, o) + cn.c, err = dial(ctx, c.dialer, o) + if err != nil { + return nil, err + } + + err = cn.ssl(o) if err != nil { + if cn.c != nil { + cn.c.Close() + } return nil, err } - cn.ssl(o) + + // cn.startup panics on error. Make sure we don't leak cn.c. + panicking := true + defer func() { + if panicking { + cn.c.Close() + } + }() + cn.buf = bufio.NewReader(cn.c) cn.startup(o) @@ -337,13 +322,14 @@ func DialOpen(d Dialer, name string) (_ driver.Conn, err error) { if timeout, ok := o["connect_timeout"]; ok && timeout != "0" { err = cn.c.SetDeadline(time.Time{}) } + panicking = false return cn, err } -func dial(d Dialer, o values) (net.Conn, error) { - ntw, addr := network(o) +func dial(ctx context.Context, d Dialer, o values) (net.Conn, error) { + network, address := network(o) // SSL is not necessary or supported over UNIX domain sockets - if ntw == "unix" { + if network == "unix" { o["sslmode"] = "disable" } @@ -354,19 +340,30 @@ func dial(d Dialer, o values) (net.Conn, error) { return nil, fmt.Errorf("invalid value for parameter connect_timeout: %s", err) } duration := time.Duration(seconds) * time.Second + // connect_timeout should apply to the entire connection establishment // procedure, so we both use a timeout for the TCP connection // establishment and set a deadline for doing the initial handshake. // The deadline is then reset after startup() is done. deadline := time.Now().Add(duration) - conn, err := d.DialTimeout(ntw, addr, duration) + var conn net.Conn + if dctx, ok := d.(DialerContext); ok { + ctx, cancel := context.WithTimeout(ctx, duration) + defer cancel() + conn, err = dctx.DialContext(ctx, network, address) + } else { + conn, err = d.DialTimeout(network, address, duration) + } if err != nil { return nil, err } err = conn.SetDeadline(deadline) return conn, err } - return d.Dial(ntw, addr) + if dctx, ok := d.(DialerContext); ok { + return dctx.DialContext(ctx, network, address) + } + return d.Dial(network, address) } func network(o values) (string, string) { @@ -506,13 +503,17 @@ func (cn *conn) checkIsInTransaction(intxn bool) { } func (cn *conn) Begin() (_ driver.Tx, err error) { + return cn.begin("") +} + +func (cn *conn) begin(mode string) (_ driver.Tx, err error) { if cn.bad { return nil, driver.ErrBadConn } defer cn.errRecover(&err) cn.checkIsInTransaction(false) - _, commandTag, err := cn.simpleExec("BEGIN") + _, commandTag, err := cn.simpleExec("BEGIN" + mode) if err != nil { return nil, err } @@ -676,7 +677,7 @@ func (cn *conn) simpleQuery(q string) (res *rows, err error) { // res might be non-nil here if we received a previous // CommandComplete, but that's fine; just overwrite it res = &rows{cn: cn} - res.colNames, res.colFmts, res.colTyps = parsePortalRowDescribe(r) + res.rowsHeader = parsePortalRowDescribe(r) // To work around a bug in QueryRow in Go 1.2 and earlier, wait // until the first DataRow has been received. @@ -694,7 +695,7 @@ var emptyRows noRows var _ driver.Result = noRows{} func (noRows) LastInsertId() (int64, error) { - return 0, errNoLastInsertId + return 0, errNoLastInsertID } func (noRows) RowsAffected() (int64, error) { @@ -703,7 +704,7 @@ func (noRows) RowsAffected() (int64, error) { // Decides which column formats to use for a prepared statement. The input is // an array of type oids, one element per result column. -func decideColumnFormats(colTyps []oid.Oid, forceText bool) (colFmts []format, colFmtData []byte) { +func decideColumnFormats(colTyps []fieldDesc, forceText bool) (colFmts []format, colFmtData []byte) { if len(colTyps) == 0 { return nil, colFmtDataAllText } @@ -715,8 +716,8 @@ func decideColumnFormats(colTyps []oid.Oid, forceText bool) (colFmts []format, c allBinary := true allText := true - for i, o := range colTyps { - switch o { + for i, t := range colTyps { + switch t.OID { // This is the list of types to use binary mode for when receiving them // through a prepared statement. If a type appears in this list, it // must also be implemented in binaryDecode in encode.go. @@ -833,19 +834,16 @@ func (cn *conn) query(query string, args []driver.Value) (_ *rows, err error) { cn.readParseResponse() cn.readBindResponse() rows := &rows{cn: cn} - rows.colNames, rows.colFmts, rows.colTyps = cn.readPortalDescribeResponse() + rows.rowsHeader = cn.readPortalDescribeResponse() cn.postExecuteWorkaround() return rows, nil - } else { - st := cn.prepareTo(query, "") - st.exec(args) - return &rows{ - cn: cn, - colNames: st.colNames, - colTyps: st.colTyps, - colFmts: st.colFmts, - }, nil } + st := cn.prepareTo(query, "") + st.exec(args) + return &rows{ + cn: cn, + rowsHeader: st.rowsHeader, + }, nil } // Implement the optional "Execer" interface for one-shot queries @@ -872,17 +870,16 @@ func (cn *conn) Exec(query string, args []driver.Value) (res driver.Result, err cn.postExecuteWorkaround() res, _, err = cn.readExecuteResponse("Execute") return res, err - } else { - // Use the unnamed statement to defer planning until bind - // time, or else value-based selectivity estimates cannot be - // used. - st := cn.prepareTo(query, "") - r, err := st.Exec(args) - if err != nil { - panic(err) - } - return r, err } + // Use the unnamed statement to defer planning until bind + // time, or else value-based selectivity estimates cannot be + // used. + st := cn.prepareTo(query, "") + r, err := st.Exec(args) + if err != nil { + panic(err) + } + return r, err } func (cn *conn) send(m *writeBuf) { @@ -966,7 +963,6 @@ func (cn *conn) recv() (t byte, r *readBuf) { if err != nil { panic(err) } - switch t { case 'E': panic(parseError(r)) @@ -1007,30 +1003,35 @@ func (cn *conn) recv1() (t byte, r *readBuf) { return t, r } -func (cn *conn) ssl(o values) { - upgrade := ssl(o) +func (cn *conn) ssl(o values) error { + upgrade, err := ssl(o) + if err != nil { + return err + } + if upgrade == nil { // Nothing to do - return + return nil } w := cn.writeBuf(0) w.int32(80877103) - if err := cn.sendStartupPacket(w); err != nil { - panic(err) + if err = cn.sendStartupPacket(w); err != nil { + return err } b := cn.scratch[:1] - _, err := io.ReadFull(cn.c, b) + _, err = io.ReadFull(cn.c, b) if err != nil { - panic(err) + return err } if b[0] != 'S' { - panic(ErrSSLNotSupported) + return ErrSSLNotSupported } - cn.c = upgrade(cn.c) + cn.c, err = upgrade(cn.c) + return err } // isDriverSetting returns true iff a setting is purely for configuring the @@ -1132,6 +1133,55 @@ func (cn *conn) auth(r *readBuf, o values) { if r.int32() != 0 { errorf("unexpected authentication response: %q", t) } + case 10: + sc := scram.NewClient(sha256.New, o["user"], o["password"]) + sc.Step(nil) + if sc.Err() != nil { + errorf("SCRAM-SHA-256 error: %s", sc.Err().Error()) + } + scOut := sc.Out() + + w := cn.writeBuf('p') + w.string("SCRAM-SHA-256") + w.int32(len(scOut)) + w.bytes(scOut) + cn.send(w) + + t, r := cn.recv() + if t != 'R' { + errorf("unexpected password response: %q", t) + } + + if r.int32() != 11 { + errorf("unexpected authentication response: %q", t) + } + + nextStep := r.next(len(*r)) + sc.Step(nextStep) + if sc.Err() != nil { + errorf("SCRAM-SHA-256 error: %s", sc.Err().Error()) + } + + scOut = sc.Out() + w = cn.writeBuf('p') + w.bytes(scOut) + cn.send(w) + + t, r = cn.recv() + if t != 'R' { + errorf("unexpected password response: %q", t) + } + + if r.int32() != 12 { + errorf("unexpected authentication response: %q", t) + } + + nextStep = r.next(len(*r)) + sc.Step(nextStep) + if sc.Err() != nil { + errorf("SCRAM-SHA-256 error: %s", sc.Err().Error()) + } + default: errorf("unknown authentication response: %d", code) } @@ -1143,18 +1193,16 @@ const formatText format = 0 const formatBinary format = 1 // One result-column format code with the value 1 (i.e. all binary). -var colFmtDataAllBinary []byte = []byte{0, 1, 0, 1} +var colFmtDataAllBinary = []byte{0, 1, 0, 1} // No result-column format codes (i.e. all text). -var colFmtDataAllText []byte = []byte{0, 0} +var colFmtDataAllText = []byte{0, 0} type stmt struct { - cn *conn - name string - colNames []string - colFmts []format + cn *conn + name string + rowsHeader colFmtData []byte - colTyps []oid.Oid paramTyps []oid.Oid closed bool } @@ -1200,10 +1248,8 @@ func (st *stmt) Query(v []driver.Value) (r driver.Rows, err error) { st.exec(v) return &rows{ - cn: st.cn, - colNames: st.colNames, - colTyps: st.colTyps, - colFmts: st.colFmts, + cn: st.cn, + rowsHeader: st.rowsHeader, }, nil } @@ -1313,16 +1359,22 @@ func (cn *conn) parseComplete(commandTag string) (driver.Result, string) { return driver.RowsAffected(n), commandTag } -type rows struct { - cn *conn - finish func() +type rowsHeader struct { colNames []string - colTyps []oid.Oid + colTyps []fieldDesc colFmts []format - done bool - rb readBuf - result driver.Result - tag string +} + +type rows struct { + cn *conn + finish func() + rowsHeader + done bool + rb readBuf + result driver.Result + tag string + + next *rowsHeader } func (rs *rows) Close() error { @@ -1335,7 +1387,12 @@ func (rs *rows) Close() error { switch err { case nil: case io.EOF: - return nil + // rs.Next can return io.EOF on both 'Z' (ready for query) and 'T' (row + // description, used with HasNextResultSet). We need to fetch messages until + // we hit a 'Z', which is done by waiting for done to be set. + if rs.done { + return nil + } default: return err } @@ -1400,11 +1457,12 @@ func (rs *rows) Next(dest []driver.Value) (err error) { dest[i] = nil continue } - dest[i] = decode(&conn.parameterStatus, rs.rb.next(l), rs.colTyps[i], rs.colFmts[i]) + dest[i] = decode(&conn.parameterStatus, rs.rb.next(l), rs.colTyps[i].OID, rs.colFmts[i]) } return case 'T': - rs.colNames, rs.colFmts, rs.colTyps = parsePortalRowDescribe(&rs.rb) + next := parsePortalRowDescribe(&rs.rb) + rs.next = &next return io.EOF default: errorf("unexpected message after execute: %q", t) @@ -1413,10 +1471,16 @@ func (rs *rows) Next(dest []driver.Value) (err error) { } func (rs *rows) HasNextResultSet() bool { - return !rs.done + hasNext := rs.next != nil && !rs.done + return hasNext } func (rs *rows) NextResultSet() error { + if rs.next == nil { + return io.EOF + } + rs.rowsHeader = *rs.next + rs.next = nil return nil } @@ -1425,7 +1489,8 @@ func (rs *rows) NextResultSet() error { // // tblname := "my_table" // data := "my_data" -// err = db.Exec(fmt.Sprintf("INSERT INTO %s VALUES ($1)", pq.QuoteIdentifier(tblname)), data) +// quoted := pq.QuoteIdentifier(tblname) +// err := db.Exec(fmt.Sprintf("INSERT INTO %s VALUES ($1)", quoted), data) // // Any double quotes in name will be escaped. The quoted identifier will be // case sensitive when used in a query. If the input string contains a zero @@ -1438,6 +1503,39 @@ func QuoteIdentifier(name string) string { return `"` + strings.Replace(name, `"`, `""`, -1) + `"` } +// QuoteLiteral quotes a 'literal' (e.g. a parameter, often used to pass literal +// to DDL and other statements that do not accept parameters) to be used as part +// of an SQL statement. For example: +// +// exp_date := pq.QuoteLiteral("2023-01-05 15:00:00Z") +// err := db.Exec(fmt.Sprintf("CREATE ROLE my_user VALID UNTIL %s", exp_date)) +// +// Any single quotes in name will be escaped. Any backslashes (i.e. "\") will be +// replaced by two backslashes (i.e. "\\") and the C-style escape identifier +// that PostgreSQL provides ('E') will be prepended to the string. +func QuoteLiteral(literal string) string { + // This follows the PostgreSQL internal algorithm for handling quoted literals + // from libpq, which can be found in the "PQEscapeStringInternal" function, + // which is found in the libpq/fe-exec.c source file: + // https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/interfaces/libpq/fe-exec.c + // + // substitute any single-quotes (') with two single-quotes ('') + literal = strings.Replace(literal, `'`, `''`, -1) + // determine if the string has any backslashes (\) in it. + // if it does, replace any backslashes (\) with two backslashes (\\) + // then, we need to wrap the entire string with a PostgreSQL + // C-style escape. Per how "PQEscapeStringInternal" handles this case, we + // also add a space before the "E" + if strings.Contains(literal, `\`) { + literal = strings.Replace(literal, `\`, `\\`, -1) + literal = ` E'` + literal + `'` + } else { + // otherwise, we can just wrap the literal with a pair of single quotes + literal = `'` + literal + `'` + } + return literal +} + func md5s(s string) string { h := md5.New() h.Write([]byte(s)) @@ -1506,7 +1604,7 @@ func (cn *conn) sendBinaryModeQuery(query string, args []driver.Value) { cn.send(b) } -func (c *conn) processParameterStatus(r *readBuf) { +func (cn *conn) processParameterStatus(r *readBuf) { var err error param := r.string() @@ -1517,13 +1615,13 @@ func (c *conn) processParameterStatus(r *readBuf) { var minor int _, err = fmt.Sscanf(r.string(), "%d.%d.%d", &major1, &major2, &minor) if err == nil { - c.parameterStatus.serverVersion = major1*10000 + major2*100 + minor + cn.parameterStatus.serverVersion = major1*10000 + major2*100 + minor } case "TimeZone": - c.parameterStatus.currentLocation, err = time.LoadLocation(r.string()) + cn.parameterStatus.currentLocation, err = time.LoadLocation(r.string()) if err != nil { - c.parameterStatus.currentLocation = nil + cn.parameterStatus.currentLocation = nil } default: @@ -1531,8 +1629,8 @@ func (c *conn) processParameterStatus(r *readBuf) { } } -func (c *conn) processReadyForQuery(r *readBuf) { - c.txnStatus = transactionStatus(r.byte()) +func (cn *conn) processReadyForQuery(r *readBuf) { + cn.txnStatus = transactionStatus(r.byte()) } func (cn *conn) readReadyForQuery() { @@ -1547,9 +1645,9 @@ func (cn *conn) readReadyForQuery() { } } -func (c *conn) processBackendKeyData(r *readBuf) { - c.processID = r.int32() - c.secretKey = r.int32() +func (cn *conn) processBackendKeyData(r *readBuf) { + cn.processID = r.int32() + cn.secretKey = r.int32() } func (cn *conn) readParseResponse() { @@ -1567,7 +1665,7 @@ func (cn *conn) readParseResponse() { } } -func (cn *conn) readStatementDescribeResponse() (paramTyps []oid.Oid, colNames []string, colTyps []oid.Oid) { +func (cn *conn) readStatementDescribeResponse() (paramTyps []oid.Oid, colNames []string, colTyps []fieldDesc) { for { t, r := cn.recv1() switch t { @@ -1593,13 +1691,13 @@ func (cn *conn) readStatementDescribeResponse() (paramTyps []oid.Oid, colNames [ } } -func (cn *conn) readPortalDescribeResponse() (colNames []string, colFmts []format, colTyps []oid.Oid) { +func (cn *conn) readPortalDescribeResponse() rowsHeader { t, r := cn.recv1() switch t { case 'T': return parsePortalRowDescribe(r) case 'n': - return nil, nil, nil + return rowsHeader{} case 'E': err := parseError(r) cn.readReadyForQuery() @@ -1689,34 +1787,40 @@ func (cn *conn) readExecuteResponse(protocolState string) (res driver.Result, co } } -func parseStatementRowDescribe(r *readBuf) (colNames []string, colTyps []oid.Oid) { +func parseStatementRowDescribe(r *readBuf) (colNames []string, colTyps []fieldDesc) { n := r.int16() colNames = make([]string, n) - colTyps = make([]oid.Oid, n) + colTyps = make([]fieldDesc, n) for i := range colNames { colNames[i] = r.string() r.next(6) - colTyps[i] = r.oid() - r.next(6) + colTyps[i].OID = r.oid() + colTyps[i].Len = r.int16() + colTyps[i].Mod = r.int32() // format code not known when describing a statement; always 0 r.next(2) } return } -func parsePortalRowDescribe(r *readBuf) (colNames []string, colFmts []format, colTyps []oid.Oid) { +func parsePortalRowDescribe(r *readBuf) rowsHeader { n := r.int16() - colNames = make([]string, n) - colFmts = make([]format, n) - colTyps = make([]oid.Oid, n) + colNames := make([]string, n) + colFmts := make([]format, n) + colTyps := make([]fieldDesc, n) for i := range colNames { colNames[i] = r.string() r.next(6) - colTyps[i] = r.oid() - r.next(6) + colTyps[i].OID = r.oid() + colTyps[i].Len = r.int16() + colTyps[i].Mod = r.int32() colFmts[i] = format(r.int16()) } - return + return rowsHeader{ + colNames: colNames, + colFmts: colFmts, + colTyps: colTyps, + } } // parseEnviron tries to mimic some of libpq's environment handling diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/conn_go18.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/conn_go18.go index fa3755d99425..0fdd06a617c3 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/conn_go18.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/conn_go18.go @@ -1,13 +1,13 @@ -// +build go1.8 - package pq import ( "context" + "database/sql" "database/sql/driver" - "errors" + "fmt" "io" "io/ioutil" + "time" ) // Implement the "QueryerContext" interface @@ -19,6 +19,9 @@ func (cn *conn) QueryContext(ctx context.Context, query string, args []driver.Na finish := cn.watchCancel(ctx) r, err := cn.query(query, list) if err != nil { + if finish != nil { + finish() + } return nil, err } r.finish = finish @@ -41,13 +44,30 @@ func (cn *conn) ExecContext(ctx context.Context, query string, args []driver.Nam // Implement the "ConnBeginTx" interface func (cn *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) { - if opts.Isolation != 0 { - return nil, errors.New("isolation levels not supported") + var mode string + + switch sql.IsolationLevel(opts.Isolation) { + case sql.LevelDefault: + // Don't touch mode: use the server's default + case sql.LevelReadUncommitted: + mode = " ISOLATION LEVEL READ UNCOMMITTED" + case sql.LevelReadCommitted: + mode = " ISOLATION LEVEL READ COMMITTED" + case sql.LevelRepeatableRead: + mode = " ISOLATION LEVEL REPEATABLE READ" + case sql.LevelSerializable: + mode = " ISOLATION LEVEL SERIALIZABLE" + default: + return nil, fmt.Errorf("pq: isolation level not supported: %d", opts.Isolation) } + if opts.ReadOnly { - return nil, errors.New("read-only transactions not supported") + mode += " READ ONLY" + } else { + mode += " READ WRITE" } - tx, err := cn.Begin() + + tx, err := cn.begin(mode) if err != nil { return nil, err } @@ -55,13 +75,32 @@ func (cn *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, return tx, nil } +func (cn *conn) Ping(ctx context.Context) error { + if finish := cn.watchCancel(ctx); finish != nil { + defer finish() + } + rows, err := cn.simpleQuery("SELECT 'lib/pq ping test';") + if err != nil { + return driver.ErrBadConn // https://golang.org/pkg/database/sql/driver/#Pinger + } + rows.Close() + return nil +} + func (cn *conn) watchCancel(ctx context.Context) func() { if done := ctx.Done(); done != nil { finished := make(chan struct{}) go func() { select { case <-done: - _ = cn.cancel() + // At this point the function level context is canceled, + // so it must not be used for the additional network + // request to cancel the query. + // Create a new context to pass into the dial. + ctxCancel, cancel := context.WithTimeout(context.Background(), time.Second*10) + defer cancel() + + _ = cn.cancel(ctxCancel) finished <- struct{}{} case <-finished: } @@ -76,8 +115,8 @@ func (cn *conn) watchCancel(ctx context.Context) func() { return nil } -func (cn *conn) cancel() error { - c, err := dial(cn.dialer, cn.opts) +func (cn *conn) cancel(ctx context.Context) error { + c, err := dial(ctx, cn.dialer, cn.opts) if err != nil { return err } @@ -87,7 +126,10 @@ func (cn *conn) cancel() error { can := conn{ c: c, } - can.ssl(cn.opts) + err = can.ssl(cn.opts) + if err != nil { + return err + } w := can.writeBuf(0) w.int32(80877102) // cancel request code diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/connector.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/connector.go new file mode 100644 index 000000000000..2f8ced6737d1 --- /dev/null +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/connector.go @@ -0,0 +1,110 @@ +package pq + +import ( + "context" + "database/sql/driver" + "errors" + "fmt" + "os" + "strings" +) + +// Connector represents a fixed configuration for the pq driver with a given +// name. Connector satisfies the database/sql/driver Connector interface and +// can be used to create any number of DB Conn's via the database/sql OpenDB +// function. +// +// See https://golang.org/pkg/database/sql/driver/#Connector. +// See https://golang.org/pkg/database/sql/#OpenDB. +type Connector struct { + opts values + dialer Dialer +} + +// Connect returns a connection to the database using the fixed configuration +// of this Connector. Context is not used. +func (c *Connector) Connect(ctx context.Context) (driver.Conn, error) { + return c.open(ctx) +} + +// Driver returnst the underlying driver of this Connector. +func (c *Connector) Driver() driver.Driver { + return &Driver{} +} + +// NewConnector returns a connector for the pq driver in a fixed configuration +// with the given dsn. The returned connector can be used to create any number +// of equivalent Conn's. The returned connector is intended to be used with +// database/sql.OpenDB. +// +// See https://golang.org/pkg/database/sql/driver/#Connector. +// See https://golang.org/pkg/database/sql/#OpenDB. +func NewConnector(dsn string) (*Connector, error) { + var err error + o := make(values) + + // A number of defaults are applied here, in this order: + // + // * Very low precedence defaults applied in every situation + // * Environment variables + // * Explicitly passed connection information + o["host"] = "localhost" + o["port"] = "5432" + // N.B.: Extra float digits should be set to 3, but that breaks + // Postgres 8.4 and older, where the max is 2. + o["extra_float_digits"] = "2" + for k, v := range parseEnviron(os.Environ()) { + o[k] = v + } + + if strings.HasPrefix(dsn, "postgres://") || strings.HasPrefix(dsn, "postgresql://") { + dsn, err = ParseURL(dsn) + if err != nil { + return nil, err + } + } + + if err := parseOpts(dsn, o); err != nil { + return nil, err + } + + // Use the "fallback" application name if necessary + if fallback, ok := o["fallback_application_name"]; ok { + if _, ok := o["application_name"]; !ok { + o["application_name"] = fallback + } + } + + // We can't work with any client_encoding other than UTF-8 currently. + // However, we have historically allowed the user to set it to UTF-8 + // explicitly, and there's no reason to break such programs, so allow that. + // Note that the "options" setting could also set client_encoding, but + // parsing its value is not worth it. Instead, we always explicitly send + // client_encoding as a separate run-time parameter, which should override + // anything set in options. + if enc, ok := o["client_encoding"]; ok && !isUTF8(enc) { + return nil, errors.New("client_encoding must be absent or 'UTF8'") + } + o["client_encoding"] = "UTF8" + // DateStyle needs a similar treatment. + if datestyle, ok := o["datestyle"]; ok { + if datestyle != "ISO, MDY" { + return nil, fmt.Errorf("setting datestyle must be absent or %v; got %v", "ISO, MDY", datestyle) + } + } else { + o["datestyle"] = "ISO, MDY" + } + + // If a user is not provided by any other means, the last + // resort is to use the current operating system provided user + // name. + if _, ok := o["user"]; !ok { + u, err := userCurrent() + if err != nil { + return nil, err + } + o["user"] = u + } + + return &Connector{opts: o, dialer: defaultDialer{}}, nil +} diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/doc.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/doc.go index 6d252ecee217..2a60054e2e00 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/doc.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/doc.go @@ -11,7 +11,8 @@ using this package directly. For example: ) func main() { - db, err := sql.Open("postgres", "user=pqgotest dbname=pqgotest sslmode=verify-full") + connStr := "user=pqgotest dbname=pqgotest sslmode=verify-full" + db, err := sql.Open("postgres", connStr) if err != nil { log.Fatal(err) } @@ -23,7 +24,8 @@ using this package directly. For example: You can also connect to a database using a URL. For example: - db, err := sql.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full") + connStr := "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full" + db, err := sql.Open("postgres", connStr) Connection String Parameters @@ -43,21 +45,28 @@ supported: * dbname - The name of the database to connect to * user - The user to sign in as * password - The user's password - * host - The host to connect to. Values that start with / are for unix domain sockets. (default is localhost) + * host - The host to connect to. Values that start with / are for unix + domain sockets. (default is localhost) * port - The port to bind to. (default is 5432) - * sslmode - Whether or not to use SSL (default is require, this is not the default for libpq) + * sslmode - Whether or not to use SSL (default is require, this is not + the default for libpq) * fallback_application_name - An application_name to fall back to if one isn't provided. - * connect_timeout - Maximum wait for connection, in seconds. Zero or not specified means wait indefinitely. + * connect_timeout - Maximum wait for connection, in seconds. Zero or + not specified means wait indefinitely. * sslcert - Cert file location. The file must contain PEM encoded data. * sslkey - Key file location. The file must contain PEM encoded data. - * sslrootcert - The location of the root certificate file. The file must contain PEM encoded data. + * sslrootcert - The location of the root certificate file. The file + must contain PEM encoded data. Valid values for sslmode are: * disable - No SSL * require - Always SSL (skip verification) - * verify-ca - Always SSL (verify that the certificate presented by the server was signed by a trusted CA) - * verify-full - Always SSL (verify that the certification presented by the server was signed by a trusted CA and the server host name matches the one in the certificate) + * verify-ca - Always SSL (verify that the certificate presented by the + server was signed by a trusted CA) + * verify-full - Always SSL (verify that the certification presented by + the server was signed by a trusted CA and the server host name + matches the one in the certificate) See http://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING for more information about connection string parameters. @@ -68,7 +77,7 @@ Use single quotes for values that contain whitespace: A backslash will escape the next character in values: - "user=space\ man password='it\'s valid' + "user=space\ man password='it\'s valid'" Note that the connection parameter client_encoding (which sets the text encoding for the connection) may be set but must be "UTF8", @@ -129,7 +138,8 @@ This package returns the following types for values from the PostgreSQL backend: - integer types smallint, integer, and bigint are returned as int64 - floating-point types real and double precision are returned as float64 - character types char, varchar, and text are returned as string - - temporal types date, time, timetz, timestamp, and timestamptz are returned as time.Time + - temporal types date, time, timetz, timestamp, and timestamptz are + returned as time.Time - the boolean type is returned as bool - the bytea type is returned as []byte @@ -229,7 +239,7 @@ for more information). Note that the channel name will be truncated to 63 bytes by the PostgreSQL server. You can find a complete, working example of Listener usage at -http://godoc.org/github.com/lib/pq/listen_example. +https://godoc.org/github.com/lib/pq/example/listen. */ package pq diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/encode.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/encode.go index 88a322cda829..a6902fae615c 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/encode.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/encode.go @@ -117,11 +117,10 @@ func textDecode(parameterStatus *parameterStatus, s []byte, typ oid.Oid) interfa } return i case oid.T_float4, oid.T_float8: - bits := 64 - if typ == oid.T_float4 { - bits = 32 - } - f, err := strconv.ParseFloat(string(s), bits) + // We always use 64 bit parsing, regardless of whether the input text is for + // a float4 or float8, because clients expect float64s for all float datatypes + // and returning a 32-bit parsed float64 produces lossy results. + f, err := strconv.ParseFloat(string(s), 64) if err != nil { errorf("%s", err) } @@ -367,8 +366,15 @@ func ParseTimestamp(currentLocation *time.Location, str string) (time.Time, erro timeSep := daySep + 3 day := p.mustAtoi(str, daySep+1, timeSep) + minLen := monSep + len("01-01") + 1 + + isBC := strings.HasSuffix(str, " BC") + if isBC { + minLen += 3 + } + var hour, minute, second int - if len(str) > monSep+len("01-01")+1 { + if len(str) > minLen { p.expect(str, ' ', timeSep) minSep := timeSep + 3 p.expect(str, ':', minSep) @@ -424,7 +430,8 @@ func ParseTimestamp(currentLocation *time.Location, str string) (time.Time, erro tzOff = tzSign * ((tzHours * 60 * 60) + (tzMin * 60) + tzSec) } var isoYear int - if remainderIdx+3 <= len(str) && str[remainderIdx:remainderIdx+3] == " BC" { + + if isBC { isoYear = 1 - year remainderIdx += 3 } else { diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/error.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/error.go index b4bb44cee39d..96aae29c6579 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/error.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/error.go @@ -153,6 +153,7 @@ var errorCodeNames = map[ErrorCode]string{ "22004": "null_value_not_allowed", "22002": "null_value_no_indicator_parameter", "22003": "numeric_value_out_of_range", + "2200H": "sequence_generator_limit_exceeded", "22026": "string_data_length_mismatch", "22001": "string_data_right_truncation", "22011": "substring_error", @@ -459,6 +460,11 @@ func errorf(s string, args ...interface{}) { panic(fmt.Errorf("pq: %s", fmt.Sprintf(s, args...))) } +// TODO(ainar-g) Rename to errorf after removing panics. +func fmterrorf(s string, args ...interface{}) error { + return fmt.Errorf("pq: %s", fmt.Sprintf(s, args...)) +} + func errRecoverNoErrBadConn(err *error) { e := recover() if e == nil { @@ -487,7 +493,8 @@ func (c *conn) errRecover(err *error) { *err = v } case *net.OpError: - *err = driver.ErrBadConn + c.bad = true + *err = v case error: if v == io.EOF || v.(error).Error() == "remote error: handshake failure" { *err = driver.ErrBadConn diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/go.mod b/metricbeat/module/postgresql/vendor/github.com/lib/pq/go.mod new file mode 100644 index 000000000000..edf0b343fd17 --- /dev/null +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/go.mod @@ -0,0 +1 @@ +module github.com/lib/pq diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/notify.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/notify.go index 09f94244b9bb..850bb9040c30 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/notify.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/notify.go @@ -60,7 +60,7 @@ type ListenerConn struct { replyChan chan message } -// Creates a new ListenerConn. Use NewListener instead. +// NewListenerConn creates a new ListenerConn. Use NewListener instead. func NewListenerConn(name string, notificationChan chan<- *Notification) (*ListenerConn, error) { return newDialListenerConn(defaultDialer{}, name, notificationChan) } @@ -214,17 +214,17 @@ func (l *ListenerConn) listenerConnMain() { // this ListenerConn is done } -// Send a LISTEN query to the server. See ExecSimpleQuery. +// Listen sends a LISTEN query to the server. See ExecSimpleQuery. func (l *ListenerConn) Listen(channel string) (bool, error) { return l.ExecSimpleQuery("LISTEN " + QuoteIdentifier(channel)) } -// Send an UNLISTEN query to the server. See ExecSimpleQuery. +// Unlisten sends an UNLISTEN query to the server. See ExecSimpleQuery. func (l *ListenerConn) Unlisten(channel string) (bool, error) { return l.ExecSimpleQuery("UNLISTEN " + QuoteIdentifier(channel)) } -// Send `UNLISTEN *` to the server. See ExecSimpleQuery. +// UnlistenAll sends an `UNLISTEN *` query to the server. See ExecSimpleQuery. func (l *ListenerConn) UnlistenAll() (bool, error) { return l.ExecSimpleQuery("UNLISTEN *") } @@ -267,8 +267,8 @@ func (l *ListenerConn) sendSimpleQuery(q string) (err error) { return nil } -// Execute a "simple query" (i.e. one with no bindable parameters) on the -// connection. The possible return values are: +// ExecSimpleQuery executes a "simple query" (i.e. one with no bindable +// parameters) on the connection. The possible return values are: // 1) "executed" is true; the query was executed to completion on the // database server. If the query failed, err will be set to the error // returned by the database, otherwise err will be nil. @@ -333,6 +333,7 @@ func (l *ListenerConn) ExecSimpleQuery(q string) (executed bool, err error) { } } +// Close closes the connection. func (l *ListenerConn) Close() error { l.connectionLock.Lock() if l.err != nil { @@ -346,7 +347,7 @@ func (l *ListenerConn) Close() error { return l.cn.c.Close() } -// Err() returns the reason the connection was closed. It is not safe to call +// Err returns the reason the connection was closed. It is not safe to call // this function until l.Notify has been closed. func (l *ListenerConn) Err() error { return l.err @@ -354,32 +355,43 @@ func (l *ListenerConn) Err() error { var errListenerClosed = errors.New("pq: Listener has been closed") +// ErrChannelAlreadyOpen is returned from Listen when a channel is already +// open. var ErrChannelAlreadyOpen = errors.New("pq: channel is already open") + +// ErrChannelNotOpen is returned from Unlisten when a channel is not open. var ErrChannelNotOpen = errors.New("pq: channel is not open") +// ListenerEventType is an enumeration of listener event types. type ListenerEventType int const ( - // Emitted only when the database connection has been initially - // initialized. err will always be nil. + // ListenerEventConnected is emitted only when the database connection + // has been initially initialized. The err argument of the callback + // will always be nil. ListenerEventConnected ListenerEventType = iota - // Emitted after a database connection has been lost, either because of an - // error or because Close has been called. err will be set to the reason - // the database connection was lost. + // ListenerEventDisconnected is emitted after a database connection has + // been lost, either because of an error or because Close has been + // called. The err argument will be set to the reason the database + // connection was lost. ListenerEventDisconnected - // Emitted after a database connection has been re-established after - // connection loss. err will always be nil. After this event has been - // emitted, a nil pq.Notification is sent on the Listener.Notify channel. + // ListenerEventReconnected is emitted after a database connection has + // been re-established after connection loss. The err argument of the + // callback will always be nil. After this event has been emitted, a + // nil pq.Notification is sent on the Listener.Notify channel. ListenerEventReconnected - // Emitted after a connection to the database was attempted, but failed. - // err will be set to an error describing why the connection attempt did - // not succeed. + // ListenerEventConnectionAttemptFailed is emitted after a connection + // to the database was attempted, but failed. The err argument will be + // set to an error describing why the connection attempt did not + // succeed. ListenerEventConnectionAttemptFailed ) +// EventCallbackType is the event callback type. See also ListenerEventType +// constants' documentation. type EventCallbackType func(event ListenerEventType, err error) // Listener provides an interface for listening to notifications from a @@ -454,9 +466,9 @@ func NewDialListener(d Dialer, return l } -// Returns the notification channel for this listener. This is the same -// channel as Notify, and will not be recreated during the life time of the -// Listener. +// NotificationChannel returns the notification channel for this listener. +// This is the same channel as Notify, and will not be recreated during the +// life time of the Listener. func (l *Listener) NotificationChannel() <-chan *Notification { return l.Notify } @@ -625,7 +637,7 @@ func (l *Listener) disconnectCleanup() error { // after the connection has been established. func (l *Listener) resync(cn *ListenerConn, notificationChan <-chan *Notification) error { doneChan := make(chan error) - go func() { + go func(notificationChan <-chan *Notification) { for channel := range l.channels { // If we got a response, return that error to our caller as it's // going to be more descriptive than cn.Err(). @@ -639,14 +651,14 @@ func (l *Listener) resync(cn *ListenerConn, notificationChan <-chan *Notificatio // close and then return the error message from the connection, as // per ListenerConn's interface. if err != nil { - for _ = range notificationChan { + for range notificationChan { } doneChan <- cn.Err() return } } doneChan <- nil - }() + }(notificationChan) // Ignore notifications while synchronization is going on to avoid // deadlocks. We have to send a nil notification over Notify anyway as @@ -713,6 +725,9 @@ func (l *Listener) Close() error { } l.isClosed = true + // Unblock calls to Listen() + l.reconnectCond.Broadcast() + return nil } @@ -772,7 +787,7 @@ func (l *Listener) listenerConnLoop() { } l.emitEvent(ListenerEventDisconnected, err) - time.Sleep(nextReconnect.Sub(time.Now())) + time.Sleep(time.Until(nextReconnect)) } } diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/oid/gen.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/oid/gen.go deleted file mode 100644 index cd4aea808626..000000000000 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/oid/gen.go +++ /dev/null @@ -1,74 +0,0 @@ -// +build ignore - -// Generate the table of OID values -// Run with 'go run gen.go'. -package main - -import ( - "database/sql" - "fmt" - "log" - "os" - "os/exec" - - _ "github.com/lib/pq" -) - -func main() { - datname := os.Getenv("PGDATABASE") - sslmode := os.Getenv("PGSSLMODE") - - if datname == "" { - os.Setenv("PGDATABASE", "pqgotest") - } - - if sslmode == "" { - os.Setenv("PGSSLMODE", "disable") - } - - db, err := sql.Open("postgres", "") - if err != nil { - log.Fatal(err) - } - cmd := exec.Command("gofmt") - cmd.Stderr = os.Stderr - w, err := cmd.StdinPipe() - if err != nil { - log.Fatal(err) - } - f, err := os.Create("types.go") - if err != nil { - log.Fatal(err) - } - cmd.Stdout = f - err = cmd.Start() - if err != nil { - log.Fatal(err) - } - fmt.Fprintln(w, "// generated by 'go run gen.go'; do not edit") - fmt.Fprintln(w, "\npackage oid") - fmt.Fprintln(w, "const (") - rows, err := db.Query(` - SELECT typname, oid - FROM pg_type WHERE oid < 10000 - ORDER BY oid; - `) - if err != nil { - log.Fatal(err) - } - var name string - var oid int - for rows.Next() { - err = rows.Scan(&name, &oid) - if err != nil { - log.Fatal(err) - } - fmt.Fprintf(w, "T_%s Oid = %d\n", name, oid) - } - if err = rows.Err(); err != nil { - log.Fatal(err) - } - fmt.Fprintln(w, ")") - w.Close() - cmd.Wait() -} diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/oid/types.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/oid/types.go index a3390c23a8ad..ecc84c2c862d 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/oid/types.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/oid/types.go @@ -1,4 +1,4 @@ -// generated by 'go run gen.go'; do not edit +// Code generated by gen.go. DO NOT EDIT. package oid @@ -171,3 +171,173 @@ const ( T_regrole Oid = 4096 T__regrole Oid = 4097 ) + +var TypeName = map[Oid]string{ + T_bool: "BOOL", + T_bytea: "BYTEA", + T_char: "CHAR", + T_name: "NAME", + T_int8: "INT8", + T_int2: "INT2", + T_int2vector: "INT2VECTOR", + T_int4: "INT4", + T_regproc: "REGPROC", + T_text: "TEXT", + T_oid: "OID", + T_tid: "TID", + T_xid: "XID", + T_cid: "CID", + T_oidvector: "OIDVECTOR", + T_pg_ddl_command: "PG_DDL_COMMAND", + T_pg_type: "PG_TYPE", + T_pg_attribute: "PG_ATTRIBUTE", + T_pg_proc: "PG_PROC", + T_pg_class: "PG_CLASS", + T_json: "JSON", + T_xml: "XML", + T__xml: "_XML", + T_pg_node_tree: "PG_NODE_TREE", + T__json: "_JSON", + T_smgr: "SMGR", + T_index_am_handler: "INDEX_AM_HANDLER", + T_point: "POINT", + T_lseg: "LSEG", + T_path: "PATH", + T_box: "BOX", + T_polygon: "POLYGON", + T_line: "LINE", + T__line: "_LINE", + T_cidr: "CIDR", + T__cidr: "_CIDR", + T_float4: "FLOAT4", + T_float8: "FLOAT8", + T_abstime: "ABSTIME", + T_reltime: "RELTIME", + T_tinterval: "TINTERVAL", + T_unknown: "UNKNOWN", + T_circle: "CIRCLE", + T__circle: "_CIRCLE", + T_money: "MONEY", + T__money: "_MONEY", + T_macaddr: "MACADDR", + T_inet: "INET", + T__bool: "_BOOL", + T__bytea: "_BYTEA", + T__char: "_CHAR", + T__name: "_NAME", + T__int2: "_INT2", + T__int2vector: "_INT2VECTOR", + T__int4: "_INT4", + T__regproc: "_REGPROC", + T__text: "_TEXT", + T__tid: "_TID", + T__xid: "_XID", + T__cid: "_CID", + T__oidvector: "_OIDVECTOR", + T__bpchar: "_BPCHAR", + T__varchar: "_VARCHAR", + T__int8: "_INT8", + T__point: "_POINT", + T__lseg: "_LSEG", + T__path: "_PATH", + T__box: "_BOX", + T__float4: "_FLOAT4", + T__float8: "_FLOAT8", + T__abstime: "_ABSTIME", + T__reltime: "_RELTIME", + T__tinterval: "_TINTERVAL", + T__polygon: "_POLYGON", + T__oid: "_OID", + T_aclitem: "ACLITEM", + T__aclitem: "_ACLITEM", + T__macaddr: "_MACADDR", + T__inet: "_INET", + T_bpchar: "BPCHAR", + T_varchar: "VARCHAR", + T_date: "DATE", + T_time: "TIME", + T_timestamp: "TIMESTAMP", + T__timestamp: "_TIMESTAMP", + T__date: "_DATE", + T__time: "_TIME", + T_timestamptz: "TIMESTAMPTZ", + T__timestamptz: "_TIMESTAMPTZ", + T_interval: "INTERVAL", + T__interval: "_INTERVAL", + T__numeric: "_NUMERIC", + T_pg_database: "PG_DATABASE", + T__cstring: "_CSTRING", + T_timetz: "TIMETZ", + T__timetz: "_TIMETZ", + T_bit: "BIT", + T__bit: "_BIT", + T_varbit: "VARBIT", + T__varbit: "_VARBIT", + T_numeric: "NUMERIC", + T_refcursor: "REFCURSOR", + T__refcursor: "_REFCURSOR", + T_regprocedure: "REGPROCEDURE", + T_regoper: "REGOPER", + T_regoperator: "REGOPERATOR", + T_regclass: "REGCLASS", + T_regtype: "REGTYPE", + T__regprocedure: "_REGPROCEDURE", + T__regoper: "_REGOPER", + T__regoperator: "_REGOPERATOR", + T__regclass: "_REGCLASS", + T__regtype: "_REGTYPE", + T_record: "RECORD", + T_cstring: "CSTRING", + T_any: "ANY", + T_anyarray: "ANYARRAY", + T_void: "VOID", + T_trigger: "TRIGGER", + T_language_handler: "LANGUAGE_HANDLER", + T_internal: "INTERNAL", + T_opaque: "OPAQUE", + T_anyelement: "ANYELEMENT", + T__record: "_RECORD", + T_anynonarray: "ANYNONARRAY", + T_pg_authid: "PG_AUTHID", + T_pg_auth_members: "PG_AUTH_MEMBERS", + T__txid_snapshot: "_TXID_SNAPSHOT", + T_uuid: "UUID", + T__uuid: "_UUID", + T_txid_snapshot: "TXID_SNAPSHOT", + T_fdw_handler: "FDW_HANDLER", + T_pg_lsn: "PG_LSN", + T__pg_lsn: "_PG_LSN", + T_tsm_handler: "TSM_HANDLER", + T_anyenum: "ANYENUM", + T_tsvector: "TSVECTOR", + T_tsquery: "TSQUERY", + T_gtsvector: "GTSVECTOR", + T__tsvector: "_TSVECTOR", + T__gtsvector: "_GTSVECTOR", + T__tsquery: "_TSQUERY", + T_regconfig: "REGCONFIG", + T__regconfig: "_REGCONFIG", + T_regdictionary: "REGDICTIONARY", + T__regdictionary: "_REGDICTIONARY", + T_jsonb: "JSONB", + T__jsonb: "_JSONB", + T_anyrange: "ANYRANGE", + T_event_trigger: "EVENT_TRIGGER", + T_int4range: "INT4RANGE", + T__int4range: "_INT4RANGE", + T_numrange: "NUMRANGE", + T__numrange: "_NUMRANGE", + T_tsrange: "TSRANGE", + T__tsrange: "_TSRANGE", + T_tstzrange: "TSTZRANGE", + T__tstzrange: "_TSTZRANGE", + T_daterange: "DATERANGE", + T__daterange: "_DATERANGE", + T_int8range: "INT8RANGE", + T__int8range: "_INT8RANGE", + T_pg_shseclabel: "PG_SHSECLABEL", + T_regnamespace: "REGNAMESPACE", + T__regnamespace: "_REGNAMESPACE", + T_regrole: "REGROLE", + T__regrole: "_REGROLE", +} diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/rows.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/rows.go new file mode 100644 index 000000000000..c6aa5b9a36a5 --- /dev/null +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/rows.go @@ -0,0 +1,93 @@ +package pq + +import ( + "math" + "reflect" + "time" + + "github.com/lib/pq/oid" +) + +const headerSize = 4 + +type fieldDesc struct { + // The object ID of the data type. + OID oid.Oid + // The data type size (see pg_type.typlen). + // Note that negative values denote variable-width types. + Len int + // The type modifier (see pg_attribute.atttypmod). + // The meaning of the modifier is type-specific. + Mod int +} + +func (fd fieldDesc) Type() reflect.Type { + switch fd.OID { + case oid.T_int8: + return reflect.TypeOf(int64(0)) + case oid.T_int4: + return reflect.TypeOf(int32(0)) + case oid.T_int2: + return reflect.TypeOf(int16(0)) + case oid.T_varchar, oid.T_text: + return reflect.TypeOf("") + case oid.T_bool: + return reflect.TypeOf(false) + case oid.T_date, oid.T_time, oid.T_timetz, oid.T_timestamp, oid.T_timestamptz: + return reflect.TypeOf(time.Time{}) + case oid.T_bytea: + return reflect.TypeOf([]byte(nil)) + default: + return reflect.TypeOf(new(interface{})).Elem() + } +} + +func (fd fieldDesc) Name() string { + return oid.TypeName[fd.OID] +} + +func (fd fieldDesc) Length() (length int64, ok bool) { + switch fd.OID { + case oid.T_text, oid.T_bytea: + return math.MaxInt64, true + case oid.T_varchar, oid.T_bpchar: + return int64(fd.Mod - headerSize), true + default: + return 0, false + } +} + +func (fd fieldDesc) PrecisionScale() (precision, scale int64, ok bool) { + switch fd.OID { + case oid.T_numeric, oid.T__numeric: + mod := fd.Mod - headerSize + precision = int64((mod >> 16) & 0xffff) + scale = int64(mod & 0xffff) + return precision, scale, true + default: + return 0, 0, false + } +} + +// ColumnTypeScanType returns the value type that can be used to scan types into. +func (rs *rows) ColumnTypeScanType(index int) reflect.Type { + return rs.colTyps[index].Type() +} + +// ColumnTypeDatabaseTypeName return the database system type name. +func (rs *rows) ColumnTypeDatabaseTypeName(index int) string { + return rs.colTyps[index].Name() +} + +// ColumnTypeLength returns the length of the column type if the column is a +// variable length type. If the column is not a variable length type ok +// should return false. +func (rs *rows) ColumnTypeLength(index int) (length int64, ok bool) { + return rs.colTyps[index].Length() +} + +// ColumnTypePrecisionScale should return the precision and scale for decimal +// types. If not applicable, ok should be false. +func (rs *rows) ColumnTypePrecisionScale(index int) (precision, scale int64, ok bool) { + return rs.colTyps[index].PrecisionScale() +} diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/scram/scram.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/scram/scram.go new file mode 100644 index 000000000000..5d0358f8ffb5 --- /dev/null +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/scram/scram.go @@ -0,0 +1,264 @@ +// Copyright (c) 2014 - Gustavo Niemeyer +// +// All rights reserved. +// +// 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. +// +// 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. + +// Pacakage scram implements a SCRAM-{SHA-1,etc} client per RFC5802. +// +// http://tools.ietf.org/html/rfc5802 +// +package scram + +import ( + "bytes" + "crypto/hmac" + "crypto/rand" + "encoding/base64" + "fmt" + "hash" + "strconv" + "strings" +) + +// Client implements a SCRAM-* client (SCRAM-SHA-1, SCRAM-SHA-256, etc). +// +// A Client may be used within a SASL conversation with logic resembling: +// +// var in []byte +// var client = scram.NewClient(sha1.New, user, pass) +// for client.Step(in) { +// out := client.Out() +// // send out to server +// in := serverOut +// } +// if client.Err() != nil { +// // auth failed +// } +// +type Client struct { + newHash func() hash.Hash + + user string + pass string + step int + out bytes.Buffer + err error + + clientNonce []byte + serverNonce []byte + saltedPass []byte + authMsg bytes.Buffer +} + +// NewClient returns a new SCRAM-* client with the provided hash algorithm. +// +// For SCRAM-SHA-256, for example, use: +// +// client := scram.NewClient(sha256.New, user, pass) +// +func NewClient(newHash func() hash.Hash, user, pass string) *Client { + c := &Client{ + newHash: newHash, + user: user, + pass: pass, + } + c.out.Grow(256) + c.authMsg.Grow(256) + return c +} + +// Out returns the data to be sent to the server in the current step. +func (c *Client) Out() []byte { + if c.out.Len() == 0 { + return nil + } + return c.out.Bytes() +} + +// Err returns the error that ocurred, or nil if there were no errors. +func (c *Client) Err() error { + return c.err +} + +// SetNonce sets the client nonce to the provided value. +// If not set, the nonce is generated automatically out of crypto/rand on the first step. +func (c *Client) SetNonce(nonce []byte) { + c.clientNonce = nonce +} + +var escaper = strings.NewReplacer("=", "=3D", ",", "=2C") + +// Step processes the incoming data from the server and makes the +// next round of data for the server available via Client.Out. +// Step returns false if there are no errors and more data is +// still expected. +func (c *Client) Step(in []byte) bool { + c.out.Reset() + if c.step > 2 || c.err != nil { + return false + } + c.step++ + switch c.step { + case 1: + c.err = c.step1(in) + case 2: + c.err = c.step2(in) + case 3: + c.err = c.step3(in) + } + return c.step > 2 || c.err != nil +} + +func (c *Client) step1(in []byte) error { + if len(c.clientNonce) == 0 { + const nonceLen = 16 + buf := make([]byte, nonceLen+b64.EncodedLen(nonceLen)) + if _, err := rand.Read(buf[:nonceLen]); err != nil { + return fmt.Errorf("cannot read random SCRAM-SHA-256 nonce from operating system: %v", err) + } + c.clientNonce = buf[nonceLen:] + b64.Encode(c.clientNonce, buf[:nonceLen]) + } + c.authMsg.WriteString("n=") + escaper.WriteString(&c.authMsg, c.user) + c.authMsg.WriteString(",r=") + c.authMsg.Write(c.clientNonce) + + c.out.WriteString("n,,") + c.out.Write(c.authMsg.Bytes()) + return nil +} + +var b64 = base64.StdEncoding + +func (c *Client) step2(in []byte) error { + c.authMsg.WriteByte(',') + c.authMsg.Write(in) + + fields := bytes.Split(in, []byte(",")) + if len(fields) != 3 { + return fmt.Errorf("expected 3 fields in first SCRAM-SHA-256 server message, got %d: %q", len(fields), in) + } + if !bytes.HasPrefix(fields[0], []byte("r=")) || len(fields[0]) < 2 { + return fmt.Errorf("server sent an invalid SCRAM-SHA-256 nonce: %q", fields[0]) + } + if !bytes.HasPrefix(fields[1], []byte("s=")) || len(fields[1]) < 6 { + return fmt.Errorf("server sent an invalid SCRAM-SHA-256 salt: %q", fields[1]) + } + if !bytes.HasPrefix(fields[2], []byte("i=")) || len(fields[2]) < 6 { + return fmt.Errorf("server sent an invalid SCRAM-SHA-256 iteration count: %q", fields[2]) + } + + c.serverNonce = fields[0][2:] + if !bytes.HasPrefix(c.serverNonce, c.clientNonce) { + return fmt.Errorf("server SCRAM-SHA-256 nonce is not prefixed by client nonce: got %q, want %q+\"...\"", c.serverNonce, c.clientNonce) + } + + salt := make([]byte, b64.DecodedLen(len(fields[1][2:]))) + n, err := b64.Decode(salt, fields[1][2:]) + if err != nil { + return fmt.Errorf("cannot decode SCRAM-SHA-256 salt sent by server: %q", fields[1]) + } + salt = salt[:n] + iterCount, err := strconv.Atoi(string(fields[2][2:])) + if err != nil { + return fmt.Errorf("server sent an invalid SCRAM-SHA-256 iteration count: %q", fields[2]) + } + c.saltPassword(salt, iterCount) + + c.authMsg.WriteString(",c=biws,r=") + c.authMsg.Write(c.serverNonce) + + c.out.WriteString("c=biws,r=") + c.out.Write(c.serverNonce) + c.out.WriteString(",p=") + c.out.Write(c.clientProof()) + return nil +} + +func (c *Client) step3(in []byte) error { + var isv, ise bool + var fields = bytes.Split(in, []byte(",")) + if len(fields) == 1 { + isv = bytes.HasPrefix(fields[0], []byte("v=")) + ise = bytes.HasPrefix(fields[0], []byte("e=")) + } + if ise { + return fmt.Errorf("SCRAM-SHA-256 authentication error: %s", fields[0][2:]) + } else if !isv { + return fmt.Errorf("unsupported SCRAM-SHA-256 final message from server: %q", in) + } + if !bytes.Equal(c.serverSignature(), fields[0][2:]) { + return fmt.Errorf("cannot authenticate SCRAM-SHA-256 server signature: %q", fields[0][2:]) + } + return nil +} + +func (c *Client) saltPassword(salt []byte, iterCount int) { + mac := hmac.New(c.newHash, []byte(c.pass)) + mac.Write(salt) + mac.Write([]byte{0, 0, 0, 1}) + ui := mac.Sum(nil) + hi := make([]byte, len(ui)) + copy(hi, ui) + for i := 1; i < iterCount; i++ { + mac.Reset() + mac.Write(ui) + mac.Sum(ui[:0]) + for j, b := range ui { + hi[j] ^= b + } + } + c.saltedPass = hi +} + +func (c *Client) clientProof() []byte { + mac := hmac.New(c.newHash, c.saltedPass) + mac.Write([]byte("Client Key")) + clientKey := mac.Sum(nil) + hash := c.newHash() + hash.Write(clientKey) + storedKey := hash.Sum(nil) + mac = hmac.New(c.newHash, storedKey) + mac.Write(c.authMsg.Bytes()) + clientProof := mac.Sum(nil) + for i, b := range clientKey { + clientProof[i] ^= b + } + clientProof64 := make([]byte, b64.EncodedLen(len(clientProof))) + b64.Encode(clientProof64, clientProof) + return clientProof64 +} + +func (c *Client) serverSignature() []byte { + mac := hmac.New(c.newHash, c.saltedPass) + mac.Write([]byte("Server Key")) + serverKey := mac.Sum(nil) + + mac = hmac.New(c.newHash, serverKey) + mac.Write(c.authMsg.Bytes()) + serverSignature := mac.Sum(nil) + + encoded := make([]byte, b64.EncodedLen(len(serverSignature))) + b64.Encode(encoded, serverSignature) + return encoded +} diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl.go index 7deb304366f5..d9020845585a 100644 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl.go +++ b/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl.go @@ -12,7 +12,7 @@ import ( // ssl generates a function to upgrade a net.Conn based on the "sslmode" and // related settings. The function is nil when no upgrade should take place. -func ssl(o values) func(net.Conn) net.Conn { +func ssl(o values) (func(net.Conn) (net.Conn, error), error) { verifyCaOnly := false tlsConf := tls.Config{} switch mode := o["sslmode"]; mode { @@ -45,29 +45,44 @@ func ssl(o values) func(net.Conn) net.Conn { case "verify-full": tlsConf.ServerName = o["host"] case "disable": - return nil + return nil, nil default: - errorf(`unsupported sslmode %q; only "require" (default), "verify-full", "verify-ca", and "disable" supported`, mode) + return nil, fmterrorf(`unsupported sslmode %q; only "require" (default), "verify-full", "verify-ca", and "disable" supported`, mode) + } + + err := sslClientCertificates(&tlsConf, o) + if err != nil { + return nil, err + } + err = sslCertificateAuthority(&tlsConf, o) + if err != nil { + return nil, err } - sslClientCertificates(&tlsConf, o) - sslCertificateAuthority(&tlsConf, o) - sslRenegotiation(&tlsConf) + // Accept renegotiation requests initiated by the backend. + // + // Renegotiation was deprecated then removed from PostgreSQL 9.5, but + // the default configuration of older versions has it enabled. Redshift + // also initiates renegotiations and cannot be reconfigured. + tlsConf.Renegotiation = tls.RenegotiateFreelyAsClient - return func(conn net.Conn) net.Conn { + return func(conn net.Conn) (net.Conn, error) { client := tls.Client(conn, &tlsConf) if verifyCaOnly { - sslVerifyCertificateAuthority(client, &tlsConf) + err := sslVerifyCertificateAuthority(client, &tlsConf) + if err != nil { + return nil, err + } } - return client - } + return client, nil + }, nil } // sslClientCertificates adds the certificate specified in the "sslcert" and // "sslkey" settings, or if they aren't set, from the .postgresql directory // in the user's home directory. The configured files must exist and have // the correct permissions. -func sslClientCertificates(tlsConf *tls.Config, o values) { +func sslClientCertificates(tlsConf *tls.Config, o values) error { // user.Current() might fail when cross-compiling. We have to ignore the // error and continue without home directory defaults, since we wouldn't // know from where to load them. @@ -82,13 +97,13 @@ func sslClientCertificates(tlsConf *tls.Config, o values) { } // https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1045 if len(sslcert) == 0 { - return + return nil } // https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1050:L1054 if _, err := os.Stat(sslcert); os.IsNotExist(err) { - return + return nil } else if err != nil { - panic(err) + return err } // In libpq, the ssl key is only loaded if the setting is not blank. @@ -101,19 +116,21 @@ func sslClientCertificates(tlsConf *tls.Config, o values) { if len(sslkey) > 0 { if err := sslKeyPermissions(sslkey); err != nil { - panic(err) + return err } } cert, err := tls.LoadX509KeyPair(sslcert, sslkey) if err != nil { - panic(err) + return err } + tlsConf.Certificates = []tls.Certificate{cert} + return nil } // sslCertificateAuthority adds the RootCA specified in the "sslrootcert" setting. -func sslCertificateAuthority(tlsConf *tls.Config, o values) { +func sslCertificateAuthority(tlsConf *tls.Config, o values) error { // In libpq, the root certificate is only loaded if the setting is not blank. // // https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L950-L951 @@ -122,22 +139,24 @@ func sslCertificateAuthority(tlsConf *tls.Config, o values) { cert, err := ioutil.ReadFile(sslrootcert) if err != nil { - panic(err) + return err } if !tlsConf.RootCAs.AppendCertsFromPEM(cert) { - errorf("couldn't parse pem in sslrootcert") + return fmterrorf("couldn't parse pem in sslrootcert") } } + + return nil } // sslVerifyCertificateAuthority carries out a TLS handshake to the server and // verifies the presented certificate against the CA, i.e. the one specified in // sslrootcert or the system CA if sslrootcert was not specified. -func sslVerifyCertificateAuthority(client *tls.Conn, tlsConf *tls.Config) { +func sslVerifyCertificateAuthority(client *tls.Conn, tlsConf *tls.Config) error { err := client.Handshake() if err != nil { - panic(err) + return err } certs := client.ConnectionState().PeerCertificates opts := x509.VerifyOptions{ @@ -152,7 +171,5 @@ func sslVerifyCertificateAuthority(client *tls.Conn, tlsConf *tls.Config) { opts.Intermediates.AddCert(cert) } _, err = certs[0].Verify(opts) - if err != nil { - panic(err) - } + return err } diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl_go1.7.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl_go1.7.go deleted file mode 100644 index d7ba43b32a1c..000000000000 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl_go1.7.go +++ /dev/null @@ -1,14 +0,0 @@ -// +build go1.7 - -package pq - -import "crypto/tls" - -// Accept renegotiation requests initiated by the backend. -// -// Renegotiation was deprecated then removed from PostgreSQL 9.5, but -// the default configuration of older versions has it enabled. Redshift -// also initiates renegotiations and cannot be reconfigured. -func sslRenegotiation(conf *tls.Config) { - conf.Renegotiation = tls.RenegotiateFreelyAsClient -} diff --git a/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl_renegotiation.go b/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl_renegotiation.go deleted file mode 100644 index 85ed5e437fb6..000000000000 --- a/metricbeat/module/postgresql/vendor/github.com/lib/pq/ssl_renegotiation.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build !go1.7 - -package pq - -import "crypto/tls" - -// Renegotiation is not supported by crypto/tls until Go 1.7. -func sslRenegotiation(*tls.Config) {} diff --git a/metricbeat/module/postgresql/vendor/vendor.json b/metricbeat/module/postgresql/vendor/vendor.json index e93f617b403b..d078262d2115 100644 --- a/metricbeat/module/postgresql/vendor/vendor.json +++ b/metricbeat/module/postgresql/vendor/vendor.json @@ -3,16 +3,22 @@ "ignore": "test github.com/elastic/beats", "package": [ { - "checksumSHA1": "uTUsjF7bymOuKvXbW2BpkK/w4Vg=", + "checksumSHA1": "F6mCaMfANCOCP8pLnk94HmRyVpg=", "path": "github.com/lib/pq", - "revision": "2704adc878c21e1329f46f6e56a1c387d788ff94", - "revisionTime": "2017-03-24T20:46:54Z" + "revision": "2ff3cb3adc01768e0a552b3a02575a6df38a9bea", + "revisionTime": "2019-05-07T19:18:18Z" }, { - "checksumSHA1": "Gk3jTNQ5uGDUE0WMJFWcYz9PMps=", + "checksumSHA1": "AU3fA8Sm33Vj9PBoRPSeYfxLRuE=", "path": "github.com/lib/pq/oid", - "revision": "2704adc878c21e1329f46f6e56a1c387d788ff94", - "revisionTime": "2017-03-24T20:46:54Z" + "revision": "2ff3cb3adc01768e0a552b3a02575a6df38a9bea", + "revisionTime": "2019-05-07T19:18:18Z" + }, + { + "checksumSHA1": "ywel3wHXnu1eLhyT1/FolporeAc=", + "path": "github.com/lib/pq/scram", + "revision": "2ff3cb3adc01768e0a552b3a02575a6df38a9bea", + "revisionTime": "2019-05-07T19:18:18Z" } ], "rootPath": "github.com/elastic/beats/metricbeat/module/postgresql" From c17586aae24233e480512e5ad2493b59ed5a6696 Mon Sep 17 00:00:00 2001 From: DeDe Morton Date: Wed, 8 May 2019 16:35:45 -0700 Subject: [PATCH 11/59] Make breaking changes separate files (#12002) --- libbeat/docs/breaking-7.0.asciidoc | 66 ++++++++++++++++++++++++++++ libbeat/docs/breaking.asciidoc | 69 +----------------------------- 2 files changed, 67 insertions(+), 68 deletions(-) create mode 100644 libbeat/docs/breaking-7.0.asciidoc diff --git a/libbeat/docs/breaking-7.0.asciidoc b/libbeat/docs/breaking-7.0.asciidoc new file mode 100644 index 000000000000..24422eb2ff2f --- /dev/null +++ b/libbeat/docs/breaking-7.0.asciidoc @@ -0,0 +1,66 @@ +[[breaking-changes-7.0]] + +=== Breaking changes in 7.0 + +This section discusses the main changes that you should be aware of if you +upgrade the Beats to version 7.0. {see-relnotes} + +[float] +==== HTML escaping is disabled by default + +Starting with verion 7.0, embedded HTML or special symbols like `<` and `>` are +no longer escaped by default when publishing events. +To configure the old behavior of escaping HTML, set `escape_html: +true` in the output configuration. + +//tag::notable-breaking-changes[] +[float] +==== Filebeat registry + +Starting with version 7.0, Filebeat stores the registry in a sub-directory. +The directory is configured using the `filebeat.registry.path` setting. +If Filebeat finds an old registry file at the configured location, it will +automatically migrate the registry file to the new format. + +The settings `filebeat.registry_flush` and `filebeat.registry_file_permission` +have been renamed to `filebeat.registry.flush` and +`filebeat.registry.file_permission`. + +//end::notable-breaking-changes[] + +[float] +==== ILM support + +Support for Index Lifecycle Management is GA with Beats version 7.0. This +release moved most ILM settings from the `output.elasticsearch.ilm` namespace to +the `setup.ilm` namespace. + +//tag::notable-breaking-changes[] + +[float] +==== Filebeat apache2 module renamed + +The Filebeat `apache2` module is renamed to `apache` in 7.0. + +[float] +==== Field name changes + +include::./field-name-changes.asciidoc[] + +//end::notable-breaking-changes[] + +[float] +==== Auditbeat type changes + +The Auditbeat JSON data types produced by the output have been changed to align +with the data types used in the Elasticsearch index template. + +.Auditbeat Type Changes in 7.0 +[frame="topbot",options="header"] +|====================== +|Field|Old Type|New Type +|`file.gid` |number |string +|`file.uid` |number |string +|`process.pid` |string |number +|`process.ppid` |string |number +|====================== diff --git a/libbeat/docs/breaking.asciidoc b/libbeat/docs/breaking.asciidoc index 4ae933819220..fb0f4f5469d1 100644 --- a/libbeat/docs/breaking.asciidoc +++ b/libbeat/docs/breaking.asciidoc @@ -13,71 +13,4 @@ See the following topics for a description of breaking changes: * <> -[[breaking-changes-7.0]] - -=== Breaking changes in 7.0 - -This section discusses the main changes that you should be aware of if you -upgrade the Beats to version 7.0. {see-relnotes} - -[float] -==== HTML escaping is disabled by default - -Starting with verion 7.0, embedded HTML or special symbols like `<` and `>` are -no longer escaped by default when publishing events. -To configure the old behavior of escaping HTML, set `escape_html: -true` in the output configuration. - -//tag::notable-breaking-changes[] -[float] -==== Filebeat registry - -Starting with version 7.0, Filebeat stores the registry in a sub-directory. -The directory is configured using the `filebeat.registry.path` setting. -If Filebeat finds an old registry file at the configured location, it will -automatically migrate the registry file to the new format. - -The settings `filebeat.registry_flush` and `filebeat.registry_file_permission` -have been renamed to `filebeat.registry.flush` and -`filebeat.registry.file_permission`. - -//end::notable-breaking-changes[] - -[float] -==== ILM support - -Support for Index Lifecycle Management is GA with Beats version 7.0. This -release moved most ILM settings from the `output.elasticsearch.ilm` namespace to -the `setup.ilm` namespace. - -//tag::notable-breaking-changes[] - -[float] -==== Filebeat apache2 module renamed - -The Filebeat `apache2` module is renamed to `apache` in 7.0. - -[float] -==== Field name changes - -include::./field-name-changes.asciidoc[] - -//end::notable-breaking-changes[] - -[float] -==== Auditbeat type changes - -The Auditbeat JSON data types produced by the output have been changed to align -with the data types used in the Elasticsearch index template. - -.Auditbeat Type Changes in 7.0 -[frame="topbot",options="header"] -|====================== -|Field|Old Type|New Type -|`file.gid` |number |string -|`file.uid` |number |string -|`process.pid` |string |number -|`process.ppid` |string |number -|====================== - - +include::breaking-7.0.asciidoc[] From 043e60d039352627fd95fec8f130fcd03777348d Mon Sep 17 00:00:00 2001 From: DeDe Morton Date: Wed, 8 May 2019 18:13:09 -0700 Subject: [PATCH 12/59] Change image references to use block syntax not inline (#11911) * Change image references to use block syntax not inline * Fix format for inline links --- auditbeat/docs/getting-started.asciidoc | 2 +- docs/devguide/newbeat.asciidoc | 2 +- filebeat/docs/getting-started.asciidoc | 2 +- filebeat/docs/modules-getting-started.asciidoc | 2 +- filebeat/docs/overview.asciidoc | 2 +- heartbeat/docs/getting-started.asciidoc | 2 +- libbeat/docs/opendashboards.asciidoc | 4 ++-- libbeat/docs/overview.asciidoc | 2 +- libbeat/docs/shared-geoip.asciidoc | 2 +- metricbeat/docs/gettingstarted.asciidoc | 2 +- metricbeat/docs/how-metricbeat-works.asciidoc | 2 +- packetbeat/docs/filtering.asciidoc | 6 +++--- packetbeat/docs/gettingstarted.asciidoc | 2 +- packetbeat/docs/packetbeat-options.asciidoc | 6 +++--- packetbeat/docs/visualizing-data-packetbeat.asciidoc | 6 +++--- winlogbeat/docs/getting-started.asciidoc | 2 +- x-pack/auditbeat/docs/modules/system.asciidoc | 2 +- x-pack/auditbeat/module/system/_meta/docs.asciidoc | 2 +- x-pack/auditbeat/module/system/host/_meta/docs.asciidoc | 2 +- x-pack/auditbeat/module/system/login/_meta/docs.asciidoc | 2 +- x-pack/auditbeat/module/system/package/_meta/docs.asciidoc | 2 +- x-pack/auditbeat/module/system/process/_meta/docs.asciidoc | 2 +- x-pack/auditbeat/module/system/socket/_meta/docs.asciidoc | 2 +- x-pack/auditbeat/module/system/user/_meta/docs.asciidoc | 2 +- 24 files changed, 31 insertions(+), 31 deletions(-) diff --git a/auditbeat/docs/getting-started.asciidoc b/auditbeat/docs/getting-started.asciidoc index 04ee6a80586a..92d77abd0b65 100644 --- a/auditbeat/docs/getting-started.asciidoc +++ b/auditbeat/docs/getting-started.asciidoc @@ -282,4 +282,4 @@ The dashboards are provided as examples. We recommend that you {kibana-ref}/dashboard.html[customize] them to meet your needs. [role="screenshot"] -image:./images/auditbeat-file-integrity-dashboard.png[Auditbeat File Integrity Dashboard] +image::./images/auditbeat-file-integrity-dashboard.png[Auditbeat File Integrity Dashboard] diff --git a/docs/devguide/newbeat.asciidoc b/docs/devguide/newbeat.asciidoc index 78c568082cba..7c5f7004964f 100644 --- a/docs/devguide/newbeat.asciidoc +++ b/docs/devguide/newbeat.asciidoc @@ -74,7 +74,7 @@ specific to your Beat (the code that creates the event and sends it to the publi Libbeat also offers common services like configuration management, logging, daemonzing, and Windows service handling, and data processing modules. -image:./images/beat_overview.png[Beat overview architecture] +image::./images/beat_overview.png[Beat overview architecture] The event that you create is a JSON-like object (Go type `map[string]interface{}`) that contains the collected data to send to the publisher. At a minimum, the event object diff --git a/filebeat/docs/getting-started.asciidoc b/filebeat/docs/getting-started.asciidoc index 3336400cb6bb..3b556163f754 100644 --- a/filebeat/docs/getting-started.asciidoc +++ b/filebeat/docs/getting-started.asciidoc @@ -283,4 +283,4 @@ by the dashboards. Here is an example of the Filebeat system dashboard: [role="screenshot"] -image:./images/kibana-system.png[] +image::./images/kibana-system.png[] diff --git a/filebeat/docs/modules-getting-started.asciidoc b/filebeat/docs/modules-getting-started.asciidoc index 4cf4e52208e1..4cf94c6fbfbd 100644 --- a/filebeat/docs/modules-getting-started.asciidoc +++ b/filebeat/docs/modules-getting-started.asciidoc @@ -74,7 +74,7 @@ include::./include/visualize-data.asciidoc[] Here's an example of the syslog dashboard: -image:./images/kibana-system.png[Syslog dashboard] +image::./images/kibana-system.png[Syslog dashboard] [[setting-variables]] diff --git a/filebeat/docs/overview.asciidoc b/filebeat/docs/overview.asciidoc index f86f0e6b5cbe..5aae20010f5c 100644 --- a/filebeat/docs/overview.asciidoc +++ b/filebeat/docs/overview.asciidoc @@ -18,7 +18,7 @@ harvester reads a single log for new content and sends the new log data to libbeat, which aggregates the events and sends the aggregated data to the output that you've configured for {beatname_uc}. -image:./images/filebeat.png[Beats design] +image::./images/filebeat.png[Beats design] For more information about inputs and harvesters, see <>. diff --git a/heartbeat/docs/getting-started.asciidoc b/heartbeat/docs/getting-started.asciidoc index cb7f8e8bc07b..2d573d741e36 100644 --- a/heartbeat/docs/getting-started.asciidoc +++ b/heartbeat/docs/getting-started.asciidoc @@ -272,4 +272,4 @@ The dashboards are provided as examples. We recommend that you {kibana-ref}/dashboard.html[customize] them to meet your needs. [role="screenshot"] -image:./images/heartbeat-statistics.png[Heartbeat statistics] +image::./images/heartbeat-statistics.png[Heartbeat statistics] diff --git a/libbeat/docs/opendashboards.asciidoc b/libbeat/docs/opendashboards.asciidoc index 541a4497c3f7..aeb9c3a2f2d5 100644 --- a/libbeat/docs/opendashboards.asciidoc +++ b/libbeat/docs/opendashboards.asciidoc @@ -19,7 +19,7 @@ On the *Discover* page, make sure that the predefined +{beatname_lc}-*+ index pattern is selected to see {beatname_uc} data. [role="screenshot"] -image:./images/kibana-created-indexes.png[Discover tab with index selected] +image::./images/kibana-created-indexes.png[Discover tab with index selected] TIP: If you don’t see data in {kib}, try changing the date range to a larger range. By default, {kib} shows the last 15 minutes. @@ -27,5 +27,5 @@ range. By default, {kib} shows the last 15 minutes. Go to the *Dashboard* page and select the dashboard that you want to open. [role="screenshot"] -image:./images/kibana-navigation-vis.png[Navigation widget in Kibana] +image::./images/kibana-navigation-vis.png[Navigation widget in Kibana] diff --git a/libbeat/docs/overview.asciidoc b/libbeat/docs/overview.asciidoc index f3358182fbec..562c7dc51500 100644 --- a/libbeat/docs/overview.asciidoc +++ b/libbeat/docs/overview.asciidoc @@ -24,7 +24,7 @@ https://www.elastic.co/products/logstash[{ls}], where you can further process and enhance the data, before visualizing it in https://www.elastic.co/products/logstash[{kib}]. -image:./images/beats-platform.png[Beats Platform] +image::./images/beats-platform.png[Beats Platform] To get started, see <>. diff --git a/libbeat/docs/shared-geoip.asciidoc b/libbeat/docs/shared-geoip.asciidoc index eaf46680cff2..1a9f1c9c2846 100644 --- a/libbeat/docs/shared-geoip.asciidoc +++ b/libbeat/docs/shared-geoip.asciidoc @@ -139,4 +139,4 @@ location field, for example `client.geo.location` or `host.geo.location`, as the Geohash. [role="screenshot"] -image:./images/coordinate-map.png[Coordinate map in {kib}] +image::./images/coordinate-map.png[Coordinate map in {kib}] diff --git a/metricbeat/docs/gettingstarted.asciidoc b/metricbeat/docs/gettingstarted.asciidoc index 1214ab32b172..1d32e6990464 100644 --- a/metricbeat/docs/gettingstarted.asciidoc +++ b/metricbeat/docs/gettingstarted.asciidoc @@ -311,4 +311,4 @@ The dashboards are provided as examples. We recommend that you {kibana-ref}/dashboard.html[customize] them to meet your needs. [role="screenshot"] -image:./images/{beatname_lc}_system_dashboard.png[{beatname_uc} Dashboard] +image::./images/{beatname_lc}_system_dashboard.png[{beatname_uc} Dashboard] diff --git a/metricbeat/docs/how-metricbeat-works.asciidoc b/metricbeat/docs/how-metricbeat-works.asciidoc index 185abb543a16..03eb6e1262de 100644 --- a/metricbeat/docs/how-metricbeat-works.asciidoc +++ b/metricbeat/docs/how-metricbeat-works.asciidoc @@ -13,7 +13,7 @@ to the remote system. So, for example, the Redis module provides an `info` metricset that collects information and statistics from Redis by running the http://redis.io/commands/INFO[`INFO`] command and parsing the returned result. -image:./images/module-overview.png[Modules and metricsets] +image::./images/module-overview.png[Modules and metricsets] Likewise, the MySQL module provides a `status` metricset that collects data from MySQL by running a http://dev.mysql.com/doc/refman/5.7/en/show-status.html[`SHOW GLOBAL STATUS`] diff --git a/packetbeat/docs/filtering.asciidoc b/packetbeat/docs/filtering.asciidoc index ee1735259db5..51ef95776467 100644 --- a/packetbeat/docs/filtering.asciidoc +++ b/packetbeat/docs/filtering.asciidoc @@ -17,7 +17,7 @@ operators, wildcards, and field filtering. For example, if you want to find the HTTP redirects, you can search for `http.response.status_code: 302`. [role="screenshot"] -image:./images/kibana-query-filtering.png[Kibana query] +image::./images/kibana-query-filtering.png[Kibana query] [float] ==== String queries @@ -170,9 +170,9 @@ redirects coming from the IP and port, click the *Filter out value* image:./images/filteroutval_icon.png[] icon instead. [role="screenshot"] -image:./images/filter_from_context.png[Filter from context] +image::./images/filter_from_context.png[Filter from context] The selected filters appear under the search box. [role="screenshot"] -image:./images/kibana-filters.png[Kibana filters] +image::./images/kibana-filters.png[Kibana filters] diff --git a/packetbeat/docs/gettingstarted.asciidoc b/packetbeat/docs/gettingstarted.asciidoc index 791b6c7379bf..71ec88b6f06f 100644 --- a/packetbeat/docs/gettingstarted.asciidoc +++ b/packetbeat/docs/gettingstarted.asciidoc @@ -329,4 +329,4 @@ TIP: To populate the client locations map in the overview dashboard, follow the steps described in <<{beatname_lc}-geoip>>. [role="screenshot"] -image:./images/packetbeat-statistics.png[Packetbeat statistics] +image::./images/packetbeat-statistics.png[Packetbeat statistics] diff --git a/packetbeat/docs/packetbeat-options.asciidoc b/packetbeat/docs/packetbeat-options.asciidoc index 09922d629233..41a7d57f5859 100644 --- a/packetbeat/docs/packetbeat-options.asciidoc +++ b/packetbeat/docs/packetbeat-options.asciidoc @@ -226,7 +226,7 @@ For example, in the following scenario, you see a 3-server architecture where a Beat is installed on each server. t1 is the transaction exchanged between Server1 and Server2, and t2 is the transaction between Server2 and Server3. -image:./images/option_ignore_outgoing.png[Beats Architecture] +image::./images/option_ignore_outgoing.png[Beats Architecture] By default, each transaction is indexed twice because Beat2 sees both transactions. So you would see the following published transactions @@ -265,7 +265,7 @@ data. Here's an example of flow events visualized in the Flows dashboard: -image:./images/flows.png[] +image::./images/flows.png[] To configure flows, use the `packetbeat.flows` option in the +{beatname_lc}.yml+ config file. Flows are enabled by default. If this section is missing @@ -1007,7 +1007,7 @@ analytics and find the slow RPC calls. Here is an example performance dashboard: -image:./images/thrift-dashboard.png[Thrift-RPC dashboard] +image::./images/thrift-dashboard.png[Thrift-RPC dashboard] Thrift supports multiple http://en.wikipedia.org/wiki/Apache_Thrift[transport diff --git a/packetbeat/docs/visualizing-data-packetbeat.asciidoc b/packetbeat/docs/visualizing-data-packetbeat.asciidoc index 55f2fafc7a42..18659f0b0195 100644 --- a/packetbeat/docs/visualizing-data-packetbeat.asciidoc +++ b/packetbeat/docs/visualizing-data-packetbeat.asciidoc @@ -26,20 +26,20 @@ views on the *Discover* page. To use these searches, make sure you've Type `Packetbeat` in the Search field to filter the list of searches. [role="screenshot"] -image:./images/saved-packetbeat-searches.png[Saved Packetbeat Searches] +image::./images/saved-packetbeat-searches.png[Saved Packetbeat Searches] You can use the predefined searches to customize the columns in the Discover table. For example, select the *Packetbeat Search* to customize the columns in the Discover table: [role="screenshot"] -image:./images/discovery-packetbeat-transactions.png[Packetbeat Search] +image::./images/discovery-packetbeat-transactions.png[Packetbeat Search] Select the *Packetbeat Flows Search* to display the most important information for Packetbeat flows: [role="screenshot"] -image:./images/discovery-packetbeat-flows.png[Packetbeat Flows Search] +image::./images/discovery-packetbeat-flows.png[Packetbeat Flows Search] diff --git a/winlogbeat/docs/getting-started.asciidoc b/winlogbeat/docs/getting-started.asciidoc index edc69d96524b..f6244946d87a 100644 --- a/winlogbeat/docs/getting-started.asciidoc +++ b/winlogbeat/docs/getting-started.asciidoc @@ -170,4 +170,4 @@ The dashboards are provided as examples. We recommend that you {kibana-ref}/dashboard.html[customize] them to meet your needs. [role="screenshot"] -image:./images/winlogbeat-dashboard.png[Winlogbeat statistics] +image::./images/winlogbeat-dashboard.png[Winlogbeat statistics] diff --git a/x-pack/auditbeat/docs/modules/system.asciidoc b/x-pack/auditbeat/docs/modules/system.asciidoc index 92e8e4f663c1..d9ad27df6978 100644 --- a/x-pack/auditbeat/docs/modules/system.asciidoc +++ b/x-pack/auditbeat/docs/modules/system.asciidoc @@ -42,7 +42,7 @@ parameter. The module comes with a sample dashboard: [role="screenshot"] -image:./images/auditbeat-system-overview-dashboard.png[Auditbeat System Overview Dashboard] +image::./images/auditbeat-system-overview-dashboard.png[Auditbeat System Overview Dashboard] [float] === Configuration options diff --git a/x-pack/auditbeat/module/system/_meta/docs.asciidoc b/x-pack/auditbeat/module/system/_meta/docs.asciidoc index 4d173785571a..56e5cda147cb 100644 --- a/x-pack/auditbeat/module/system/_meta/docs.asciidoc +++ b/x-pack/auditbeat/module/system/_meta/docs.asciidoc @@ -37,7 +37,7 @@ parameter. The module comes with a sample dashboard: [role="screenshot"] -image:./images/auditbeat-system-overview-dashboard.png[Auditbeat System Overview Dashboard] +image::./images/auditbeat-system-overview-dashboard.png[Auditbeat System Overview Dashboard] [float] === Configuration options diff --git a/x-pack/auditbeat/module/system/host/_meta/docs.asciidoc b/x-pack/auditbeat/module/system/host/_meta/docs.asciidoc index 511f59ad46ce..eba8f200d5f5 100644 --- a/x-pack/auditbeat/module/system/host/_meta/docs.asciidoc +++ b/x-pack/auditbeat/module/system/host/_meta/docs.asciidoc @@ -12,4 +12,4 @@ It is implemented for Linux, macOS (Darwin), and Windows. This dataset comes with a sample dashboard: [role="screenshot"] -image:./images/auditbeat-system-host-dashboard.png[Auditbeat System Host Dashboard] +image::./images/auditbeat-system-host-dashboard.png[Auditbeat System Host Dashboard] diff --git a/x-pack/auditbeat/module/system/login/_meta/docs.asciidoc b/x-pack/auditbeat/module/system/login/_meta/docs.asciidoc index e58daca5681f..a276848a347d 100644 --- a/x-pack/auditbeat/module/system/login/_meta/docs.asciidoc +++ b/x-pack/auditbeat/module/system/login/_meta/docs.asciidoc @@ -27,4 +27,4 @@ utmp files are binary, but you can display their contents using the The dataset comes with a sample dashboard: [role="screenshot"] -image:./images/auditbeat-system-login-dashboard.png[Auditbeat System Login Dashboard] +image::./images/auditbeat-system-login-dashboard.png[Auditbeat System Login Dashboard] diff --git a/x-pack/auditbeat/module/system/package/_meta/docs.asciidoc b/x-pack/auditbeat/module/system/package/_meta/docs.asciidoc index 2c5d50a4e9f9..726e942424c3 100644 --- a/x-pack/auditbeat/module/system/package/_meta/docs.asciidoc +++ b/x-pack/auditbeat/module/system/package/_meta/docs.asciidoc @@ -13,4 +13,4 @@ manager, and for Homebrew on macOS (Darwin). The dataset comes with a sample dashboard: [role="screenshot"] -image:./images/auditbeat-system-package-dashboard.png[Auditbeat System Package Dashboard] +image::./images/auditbeat-system-package-dashboard.png[Auditbeat System Package Dashboard] diff --git a/x-pack/auditbeat/module/system/process/_meta/docs.asciidoc b/x-pack/auditbeat/module/system/process/_meta/docs.asciidoc index 45e148bb6e01..e1d930e1fbf3 100644 --- a/x-pack/auditbeat/module/system/process/_meta/docs.asciidoc +++ b/x-pack/auditbeat/module/system/process/_meta/docs.asciidoc @@ -12,4 +12,4 @@ It is implemented for Linux, macOS (Darwin), and Windows. The dataset comes with a sample dashboard: [role="screenshot"] -image:./images/auditbeat-system-process-dashboard.png[Auditbeat System Process Dashboard] +image::./images/auditbeat-system-process-dashboard.png[Auditbeat System Process Dashboard] diff --git a/x-pack/auditbeat/module/system/socket/_meta/docs.asciidoc b/x-pack/auditbeat/module/system/socket/_meta/docs.asciidoc index 36a830e739b8..7d6fdd949ede 100644 --- a/x-pack/auditbeat/module/system/socket/_meta/docs.asciidoc +++ b/x-pack/auditbeat/module/system/socket/_meta/docs.asciidoc @@ -24,4 +24,4 @@ the `socket.include_localhost` configuration option. The dataset comes with a sample dashboard: [role="screenshot"] -image:./images/auditbeat-system-socket-dashboard.png[Auditbeat System Socket Dashboard] +image::./images/auditbeat-system-socket-dashboard.png[Auditbeat System Socket Dashboard] diff --git a/x-pack/auditbeat/module/system/user/_meta/docs.asciidoc b/x-pack/auditbeat/module/system/user/_meta/docs.asciidoc index 243187bed6a4..5b31007e4d58 100644 --- a/x-pack/auditbeat/module/system/user/_meta/docs.asciidoc +++ b/x-pack/auditbeat/module/system/user/_meta/docs.asciidoc @@ -12,4 +12,4 @@ It is implemented for Linux only. The dataset comes with a sample dashboard: [role="screenshot"] -image:./images/auditbeat-system-user-dashboard.png[Auditbeat System User Dashboard] +image::./images/auditbeat-system-user-dashboard.png[Auditbeat System User Dashboard] From b39edc5179ecb97430f50fad39b9249ff28f34de Mon Sep 17 00:00:00 2001 From: DeDe Morton Date: Wed, 8 May 2019 18:32:08 -0700 Subject: [PATCH 13/59] Revert "Make breaking changes separate files (#12002)" (#12116) This reverts commit c17586aae24233e480512e5ad2493b59ed5a6696. --- libbeat/docs/breaking-7.0.asciidoc | 66 ---------------------------- libbeat/docs/breaking.asciidoc | 69 +++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 67 deletions(-) delete mode 100644 libbeat/docs/breaking-7.0.asciidoc diff --git a/libbeat/docs/breaking-7.0.asciidoc b/libbeat/docs/breaking-7.0.asciidoc deleted file mode 100644 index 24422eb2ff2f..000000000000 --- a/libbeat/docs/breaking-7.0.asciidoc +++ /dev/null @@ -1,66 +0,0 @@ -[[breaking-changes-7.0]] - -=== Breaking changes in 7.0 - -This section discusses the main changes that you should be aware of if you -upgrade the Beats to version 7.0. {see-relnotes} - -[float] -==== HTML escaping is disabled by default - -Starting with verion 7.0, embedded HTML or special symbols like `<` and `>` are -no longer escaped by default when publishing events. -To configure the old behavior of escaping HTML, set `escape_html: -true` in the output configuration. - -//tag::notable-breaking-changes[] -[float] -==== Filebeat registry - -Starting with version 7.0, Filebeat stores the registry in a sub-directory. -The directory is configured using the `filebeat.registry.path` setting. -If Filebeat finds an old registry file at the configured location, it will -automatically migrate the registry file to the new format. - -The settings `filebeat.registry_flush` and `filebeat.registry_file_permission` -have been renamed to `filebeat.registry.flush` and -`filebeat.registry.file_permission`. - -//end::notable-breaking-changes[] - -[float] -==== ILM support - -Support for Index Lifecycle Management is GA with Beats version 7.0. This -release moved most ILM settings from the `output.elasticsearch.ilm` namespace to -the `setup.ilm` namespace. - -//tag::notable-breaking-changes[] - -[float] -==== Filebeat apache2 module renamed - -The Filebeat `apache2` module is renamed to `apache` in 7.0. - -[float] -==== Field name changes - -include::./field-name-changes.asciidoc[] - -//end::notable-breaking-changes[] - -[float] -==== Auditbeat type changes - -The Auditbeat JSON data types produced by the output have been changed to align -with the data types used in the Elasticsearch index template. - -.Auditbeat Type Changes in 7.0 -[frame="topbot",options="header"] -|====================== -|Field|Old Type|New Type -|`file.gid` |number |string -|`file.uid` |number |string -|`process.pid` |string |number -|`process.ppid` |string |number -|====================== diff --git a/libbeat/docs/breaking.asciidoc b/libbeat/docs/breaking.asciidoc index fb0f4f5469d1..4ae933819220 100644 --- a/libbeat/docs/breaking.asciidoc +++ b/libbeat/docs/breaking.asciidoc @@ -13,4 +13,71 @@ See the following topics for a description of breaking changes: * <> -include::breaking-7.0.asciidoc[] +[[breaking-changes-7.0]] + +=== Breaking changes in 7.0 + +This section discusses the main changes that you should be aware of if you +upgrade the Beats to version 7.0. {see-relnotes} + +[float] +==== HTML escaping is disabled by default + +Starting with verion 7.0, embedded HTML or special symbols like `<` and `>` are +no longer escaped by default when publishing events. +To configure the old behavior of escaping HTML, set `escape_html: +true` in the output configuration. + +//tag::notable-breaking-changes[] +[float] +==== Filebeat registry + +Starting with version 7.0, Filebeat stores the registry in a sub-directory. +The directory is configured using the `filebeat.registry.path` setting. +If Filebeat finds an old registry file at the configured location, it will +automatically migrate the registry file to the new format. + +The settings `filebeat.registry_flush` and `filebeat.registry_file_permission` +have been renamed to `filebeat.registry.flush` and +`filebeat.registry.file_permission`. + +//end::notable-breaking-changes[] + +[float] +==== ILM support + +Support for Index Lifecycle Management is GA with Beats version 7.0. This +release moved most ILM settings from the `output.elasticsearch.ilm` namespace to +the `setup.ilm` namespace. + +//tag::notable-breaking-changes[] + +[float] +==== Filebeat apache2 module renamed + +The Filebeat `apache2` module is renamed to `apache` in 7.0. + +[float] +==== Field name changes + +include::./field-name-changes.asciidoc[] + +//end::notable-breaking-changes[] + +[float] +==== Auditbeat type changes + +The Auditbeat JSON data types produced by the output have been changed to align +with the data types used in the Elasticsearch index template. + +.Auditbeat Type Changes in 7.0 +[frame="topbot",options="header"] +|====================== +|Field|Old Type|New Type +|`file.gid` |number |string +|`file.uid` |number |string +|`process.pid` |string |number +|`process.ppid` |string |number +|====================== + + From 85757fdb1d2cc46d788bb76dbdace7b7da7867fc Mon Sep 17 00:00:00 2001 From: Gil Raphaelli Date: Wed, 8 May 2019 22:26:36 -0400 Subject: [PATCH 14/59] fix queue.spool.write.flush.events config type (#12080) --- CHANGELOG.next.asciidoc | 1 + libbeat/publisher/queue/spool/config.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index a9074f696d54..6627e8e71b91 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -70,6 +70,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Fix initialization of the TCP input logger. {pull}11605[11605] - Fix flaky service_integration_windows_test test by introducing a confidence factor and enriching the error message with more service details. {issue}8880[8880] and {issue}7977[7977] - Replace wmi queries with win32 api calls as they were consuming CPU resources {issue}3249[3249] and {issue}11840[11840] +- Fix queue.spool.write.flush.events config type. {pull}12080[12080] *Auditbeat* diff --git a/libbeat/publisher/queue/spool/config.go b/libbeat/publisher/queue/spool/config.go index acff07f77d95..e936bae1f7bf 100644 --- a/libbeat/publisher/queue/spool/config.go +++ b/libbeat/publisher/queue/spool/config.go @@ -46,7 +46,7 @@ type pathConfig struct { type writeConfig struct { BufferSize cfgtype.ByteSize `config:"buffer_size"` - FlushEvents time.Duration `config:"flush.events"` + FlushEvents int `config:"flush.events"` FlushTimeout time.Duration `config:"flush.timeout"` Codec codecID `config:"codec"` } From 5cf48bf018ee8cc8527da838689ae6f9772ee644 Mon Sep 17 00:00:00 2001 From: Silvia Mitter Date: Thu, 9 May 2019 09:22:11 +0200 Subject: [PATCH 15/59] Revert printing template and policy name on export. (#12067) Ensures behavior on running the `export` cmd does not change compared to last released version. --- CHANGELOG-developer.next.asciidoc | 2 +- libbeat/cmd/export/export.go | 15 ++++++++------- libbeat/idxmgmt/client_handler.go | 2 +- libbeat/idxmgmt/ilm/client_handler.go | 7 +++---- .../ilm/client_handler_integration_test.go | 13 +++++++------ libbeat/idxmgmt/ilm/ilm.go | 2 +- libbeat/idxmgmt/ilm/ilm_test.go | 6 ++---- libbeat/template/load.go | 7 +++---- libbeat/template/load_test.go | 10 +++++----- libbeat/tests/system/test_ilm.py | 9 ++++----- metricbeat/tests/system/test_template.py | 4 +--- 11 files changed, 36 insertions(+), 41 deletions(-) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index de7da05de5b8..c0a07bcd80e5 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -35,5 +35,5 @@ The list below covers the major changes between 7.0.0-rc2 and master only. by `make` and `mage`. Example: `export PYTHON_EXE=python2.7`. {pull}11212[11212] - Prometheus helper for metricbeat contains now `Namespace` field for `prometheus.MetricsMappings` {pull}11424[11424] - Update Jinja2 version to 2.10.1. {pull}11817[11817] -- Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777], {pull}12065[12065] +- Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777], {pull}12065[12065], {pull}12067[12067] - Update urllib3 version to 1.24.2 {pull}11930[11930] diff --git a/libbeat/cmd/export/export.go b/libbeat/cmd/export/export.go index d7acacf97539..07ec27edf087 100644 --- a/libbeat/cmd/export/export.go +++ b/libbeat/cmd/export/export.go @@ -71,10 +71,7 @@ func newFileClient(dir string, ver string) (*fileClient, error) { if err != nil { return nil, err } - err = os.MkdirAll(path, os.ModePerm) - if err != nil { - return nil, err - } + fmt.Println(fmt.Sprintf("Writing to directory %s", path)) return &fileClient{ver: *common.MustNewVersion(ver), dir: path}, nil } @@ -82,7 +79,7 @@ func (c *stdoutClient) GetVersion() common.Version { return c.ver } -func (c *stdoutClient) Write(_ string, body string) error { +func (c *stdoutClient) Write(_ string, _ string, body string) error { _, err := c.f.WriteString(body) return err } @@ -91,8 +88,12 @@ func (c *fileClient) GetVersion() common.Version { return c.ver } -func (c *fileClient) Write(name string, body string) error { - f, err := os.Create(filepath.Join(c.dir, fmt.Sprintf("%s.json", name))) +func (c *fileClient) Write(component string, name string, body string) error { + path := filepath.Join(c.dir, component) + if err := os.MkdirAll(path, os.ModePerm); err != nil { + return err + } + f, err := os.Create(filepath.Join(path, fmt.Sprintf("%s.json", name))) defer f.Close() if err != nil { return err diff --git a/libbeat/idxmgmt/client_handler.go b/libbeat/idxmgmt/client_handler.go index c4665ce0ecbb..9feba65ebd78 100644 --- a/libbeat/idxmgmt/client_handler.go +++ b/libbeat/idxmgmt/client_handler.go @@ -45,7 +45,7 @@ type ESClient interface { // prepare a policy and write alias. type FileClient interface { GetVersion() common.Version - Write(name string, body string) error + Write(component string, name string, body string) error } // NewClientHandler initializes and returns a new instance of ClientHandler diff --git a/libbeat/idxmgmt/ilm/client_handler.go b/libbeat/idxmgmt/ilm/client_handler.go index 1cc8456c21d5..99daa4aaae33 100644 --- a/libbeat/idxmgmt/ilm/client_handler.go +++ b/libbeat/idxmgmt/ilm/client_handler.go @@ -63,7 +63,7 @@ type FileClientHandler struct { // prepare a policy and write alias. type FileClient interface { GetVersion() common.Version - Write(name string, body string) error + Write(component string, name string, body string) error } const ( @@ -243,9 +243,8 @@ func (h *FileClientHandler) CheckILMEnabled(mode Mode) (bool, error) { // CreateILMPolicy writes given policy to the configured file. func (h *FileClientHandler) CreateILMPolicy(policy Policy) error { - p := common.MapStr{policy.Name: policy.Body} - str := fmt.Sprintf("%s\n", p.StringToPrint()) - if err := h.client.Write(policy.Name, str); err != nil { + str := fmt.Sprintf("%s\n", policy.Body.StringToPrint()) + if err := h.client.Write("policy", policy.Name, str); err != nil { return fmt.Errorf("error printing policy : %v", err) } return nil diff --git a/libbeat/idxmgmt/ilm/client_handler_integration_test.go b/libbeat/idxmgmt/ilm/client_handler_integration_test.go index 8d328cbca2f1..960436b4a05b 100644 --- a/libbeat/idxmgmt/ilm/client_handler_integration_test.go +++ b/libbeat/idxmgmt/ilm/client_handler_integration_test.go @@ -256,18 +256,19 @@ func TestFileClientHandler_CreateILMPolicy(t *testing.T) { c := newMockClient("") h := ilm.NewFileClientHandler(c) name := "test-policy" - body := map[string]interface{}{"foo": "bar"} + body := common.MapStr{"foo": "bar"} h.CreateILMPolicy(ilm.Policy{Name: name, Body: body}) assert.Equal(t, name, c.name) + assert.Equal(t, "policy", c.component) var out common.MapStr json.Unmarshal([]byte(c.body), &out) - assert.Equal(t, common.MapStr{name: body}, out) + assert.Equal(t, body, out) } type mockClient struct { - v common.Version - name, body string + v common.Version + component, name, body string } func newMockClient(v string) *mockClient { @@ -281,7 +282,7 @@ func (c *mockClient) GetVersion() common.Version { return c.v } -func (c *mockClient) Write(name string, body string) error { - c.name, c.body = name, body +func (c *mockClient) Write(component string, name string, body string) error { + c.component, c.name, c.body = component, name, body return nil } diff --git a/libbeat/idxmgmt/ilm/ilm.go b/libbeat/idxmgmt/ilm/ilm.go index 3ecc85d8c409..ee2c203289bb 100644 --- a/libbeat/idxmgmt/ilm/ilm.go +++ b/libbeat/idxmgmt/ilm/ilm.go @@ -59,7 +59,7 @@ type Manager interface { // See: [Policy phases and actions documentation](https://www.elastic.co/guide/en/elasticsearch/reference/master/ilm-policy-definition.html). type Policy struct { Name string - Body map[string]interface{} + Body common.MapStr } // Alias describes the alias to be created in Elasticsearch. diff --git a/libbeat/idxmgmt/ilm/ilm_test.go b/libbeat/idxmgmt/ilm/ilm_test.go index 9a860e04f64b..2d457010050a 100644 --- a/libbeat/idxmgmt/ilm/ilm_test.go +++ b/libbeat/idxmgmt/ilm/ilm_test.go @@ -76,12 +76,10 @@ func TestDefaultSupport_Init(t *testing.T) { t.Run("load external policy", func(t *testing.T) { s, err := DefaultSupport(nil, info, common.MustNewConfigFrom( - map[string]interface{}{ - "policy_file": "testfiles/custom.json", - }, + common.MapStr{"policy_file": "testfiles/custom.json"}, )) require.NoError(t, err) - assert.Equal(t, map[string]interface{}{"hello": "world"}, s.Policy().Body) + assert.Equal(t, common.MapStr{"hello": "world"}, s.Policy().Body) }) } diff --git a/libbeat/template/load.go b/libbeat/template/load.go index d9fe54897a6c..2d8fdbf6607e 100644 --- a/libbeat/template/load.go +++ b/libbeat/template/load.go @@ -55,7 +55,7 @@ type FileLoader struct { // FileClient defines the minimal interface required for the FileLoader type FileClient interface { GetVersion() common.Version - Write(name string, body string) error + Write(component string, name string, body string) error } // NewESLoader creates a new template loader for ES @@ -145,9 +145,8 @@ func (l *FileLoader) Load(config TemplateConfig, info beat.Info, fields []byte, return err } - p := common.MapStr{tmpl.name: body} - str := fmt.Sprintf("%s\n", p.StringToPrint()) - if err := l.client.Write(tmpl.name, str); err != nil { + str := fmt.Sprintf("%s\n", body.StringToPrint()) + if err := l.client.Write("template", tmpl.name, str); err != nil { return fmt.Errorf("error printing template: %v", err) } return nil diff --git a/libbeat/template/load_test.go b/libbeat/template/load_test.go index 22566229ab94..07f0ca7ad5ba 100644 --- a/libbeat/template/load_test.go +++ b/libbeat/template/load_test.go @@ -63,14 +63,14 @@ func TestFileLoader_Load(t *testing.T) { require.NoError(t, err) body, err := buildBody(tmpl, test.cfg, test.fields) require.NoError(t, err) - assert.Equal(t, common.MapStr{test.name: body}.StringToPrint()+"\n", fc.body) + assert.Equal(t, body.StringToPrint()+"\n", fc.body) }) } } type fileClient struct { - ver common.Version - body string + ver common.Version + kind, name, body string } func newFileClient(ver string) (*fileClient, error) { @@ -88,7 +88,7 @@ func (c *fileClient) GetVersion() common.Version { return c.ver } -func (c *fileClient) Write(name string, body string) error { - c.body = body +func (c *fileClient) Write(component string, name string, body string) error { + c.kind, c.name, c.body = component, name, body return nil } diff --git a/libbeat/tests/system/test_ilm.py b/libbeat/tests/system/test_ilm.py index c016fba71292..2dcc11edd6f4 100644 --- a/libbeat/tests/system/test_ilm.py +++ b/libbeat/tests/system/test_ilm.py @@ -286,9 +286,8 @@ def setUp(self): self.policy_name = self.beat_name + "-9.9.9" self.cmd = "ilm-policy" - def assert_log_contains_policy(self, policy): + def assert_log_contains_policy(self): assert self.log_contains('ILM policy successfully loaded.') - assert self.log_contains(policy) assert self.log_contains('"max_age": "30d"') assert self.log_contains('"max_size": "50gb"') @@ -304,7 +303,7 @@ def test_default(self): config=self.config) assert exit_code == 0 - self.assert_log_contains_policy(self.policy_name) + self.assert_log_contains_policy() self.assert_log_contains_write_alias() def test_load_disabled(self): @@ -316,7 +315,7 @@ def test_load_disabled(self): config=self.config) assert exit_code == 0 - self.assert_log_contains_policy(self.policy_name) + self.assert_log_contains_policy() self.assert_log_contains_write_alias() def test_changed_policy_name(self): @@ -330,5 +329,5 @@ def test_changed_policy_name(self): config=self.config) assert exit_code == 0 - self.assert_log_contains_policy(policy_name) + self.assert_log_contains_policy() self.assert_log_contains_write_alias() diff --git a/metricbeat/tests/system/test_template.py b/metricbeat/tests/system/test_template.py index 335c435119cd..5899796524d6 100644 --- a/metricbeat/tests/system/test_template.py +++ b/metricbeat/tests/system/test_template.py @@ -41,9 +41,7 @@ def test_export_template(self): break t = json.loads(template_content) - keys = [k for k, v in t.iteritems() if k.startswith("metricbeat")] - assert len(keys) == 1 - properties = t[keys[0]]["mappings"]["properties"] + properties = t["mappings"]["properties"] # Check libbeat fields assert properties["@timestamp"] == {"type": "date"} From ccbf05ac75058551bf1c2347e3f6f637df2bdcb4 Mon Sep 17 00:00:00 2001 From: Nicolas Ruflin Date: Thu, 9 May 2019 10:31:47 +0200 Subject: [PATCH 16/59] [Filebeat] Add -expected files by default (#12041) So far expected files in Filebeat tests were only generated and compared when a file exists. This changes to create a generated for all example logs. This will add a few more files to the repository but I think there the benefits outweight the costs as it means the modules are tested in more detail. Also minor changes will be detected easier. --- .../test/darwin-2.4.23.log-expected.json | 118 + .../test/ubuntu-2.2.22.log-expected.json | 233 ++ .../test/darwin-2.4.23.log-expected.json | 30 + .../test/ubuntu-2.2.22.log-expected.json | 98 + .../log/test/audit-rhel7.log-expected.json | 2433 ++++++++++++++++ .../gc/test/gc.log-expected.json | 1538 ++++++++++ .../test/elasticsearch.624.log-expected.json | 831 ++++++ .../test/controller-2.0.0.log-expected.json | 313 ++ .../log/test/server-2.0.0.log-expected.json | 1407 +++++++++ .../kibana/log/test/log.624.log-expected.json | 2434 ++++++++++++++++ .../test/log.verbose.624.log-expected.json | 2243 ++++++++++++++ ...mysql-darwin-brew-5.7.10.log-expected.json | 1297 +++++++++ .../mysql-ubuntu-5.5.53.log-expected.json | 1107 +++++++ .../mysql-ubuntu-8.0.15.log-expected.json | 158 + .../test/mariadb-10.3.13.log-expected.json | 39 + ...mysql-darwin-brew-5.7.10.log-expected.json | 24 + .../mysql-debian-5.7.17.log-expected.json | 71 + .../mysql-debian-5.7.19.log-expected.json | 24 + .../mysql-ubuntu-5.5.53.log-expected.json | 297 ++ .../percona-ubuntu-5.7.19.log-expected.json | 338 +++ .../access/test/access.log-expected.json | 382 +++ .../test/osquery.rootkit.log-expected.json | 1698 +++++++++++ .../osqueryd.results.darwin.log-expected.json | 2435 ++++++++++++++++ .../osqueryd.results.sample.log-expected.json | 2575 +++++++++++++++++ .../postgresql-ubuntu-9.5.log-expected.json | 1248 ++++++++ .../test/redis-darwin-3.0.2.log-expected.json | 232 ++ .../test/redis-debian-1.2.6.log-expected.json | 1102 +++++++ .../redis-windows-2.4.6.log-expected.json | 376 +++ .../test/auth-ubuntu1204.log-expected.json | 1327 +++++++++ .../auth/test/secure-rhel7.log-expected.json | 1792 ++++++++++++ .../system/auth/test/test.log-expected.json | 26 +- .../test/darwin-syslog.log-expected.json | 1302 +++++++++ filebeat/tests/system/test_modules.py | 3 +- 33 files changed, 29516 insertions(+), 15 deletions(-) create mode 100644 filebeat/module/apache/access/test/darwin-2.4.23.log-expected.json create mode 100644 filebeat/module/apache/access/test/ubuntu-2.2.22.log-expected.json create mode 100644 filebeat/module/apache/error/test/darwin-2.4.23.log-expected.json create mode 100644 filebeat/module/apache/error/test/ubuntu-2.2.22.log-expected.json create mode 100644 filebeat/module/auditd/log/test/audit-rhel7.log-expected.json create mode 100644 filebeat/module/elasticsearch/gc/test/gc.log-expected.json create mode 100644 filebeat/module/elasticsearch/server/test/elasticsearch.624.log-expected.json create mode 100644 filebeat/module/kafka/log/test/controller-2.0.0.log-expected.json create mode 100644 filebeat/module/kafka/log/test/server-2.0.0.log-expected.json create mode 100644 filebeat/module/kibana/log/test/log.624.log-expected.json create mode 100644 filebeat/module/kibana/log/test/log.verbose.624.log-expected.json create mode 100644 filebeat/module/mysql/error/test/mysql-darwin-brew-5.7.10.log-expected.json create mode 100644 filebeat/module/mysql/error/test/mysql-ubuntu-5.5.53.log-expected.json create mode 100644 filebeat/module/mysql/error/test/mysql-ubuntu-8.0.15.log-expected.json create mode 100644 filebeat/module/mysql/slowlog/test/mariadb-10.3.13.log-expected.json create mode 100644 filebeat/module/mysql/slowlog/test/mysql-darwin-brew-5.7.10.log-expected.json create mode 100644 filebeat/module/mysql/slowlog/test/mysql-debian-5.7.17.log-expected.json create mode 100644 filebeat/module/mysql/slowlog/test/mysql-debian-5.7.19.log-expected.json create mode 100644 filebeat/module/mysql/slowlog/test/mysql-ubuntu-5.5.53.log-expected.json create mode 100644 filebeat/module/mysql/slowlog/test/percona-ubuntu-5.7.19.log-expected.json create mode 100644 filebeat/module/nginx/access/test/access.log-expected.json create mode 100644 filebeat/module/osquery/result/test/osquery.rootkit.log-expected.json create mode 100644 filebeat/module/osquery/result/test/osqueryd.results.darwin.log-expected.json create mode 100644 filebeat/module/osquery/result/test/osqueryd.results.sample.log-expected.json create mode 100644 filebeat/module/postgresql/log/test/postgresql-ubuntu-9.5.log-expected.json create mode 100644 filebeat/module/redis/log/test/redis-darwin-3.0.2.log-expected.json create mode 100644 filebeat/module/redis/log/test/redis-debian-1.2.6.log-expected.json create mode 100644 filebeat/module/redis/log/test/redis-windows-2.4.6.log-expected.json create mode 100644 filebeat/module/system/auth/test/auth-ubuntu1204.log-expected.json create mode 100644 filebeat/module/system/auth/test/secure-rhel7.log-expected.json create mode 100644 filebeat/module/system/syslog/test/darwin-syslog.log-expected.json diff --git a/filebeat/module/apache/access/test/darwin-2.4.23.log-expected.json b/filebeat/module/apache/access/test/darwin-2.4.23.log-expected.json new file mode 100644 index 000000000000..48a909e07855 --- /dev/null +++ b/filebeat/module/apache/access/test/darwin-2.4.23.log-expected.json @@ -0,0 +1,118 @@ +[ + { + "@timestamp": "2016-12-26T14:16:28.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.response.body.bytes": 45, + "http.response.status_code": 200, + "http.version": "1.1", + "input.type": "log", + "log.offset": 0, + "service.type": "apache", + "source.address": "::1", + "source.ip": "::1", + "url.original": "/", + "user.name": "-" + }, + { + "@timestamp": "2016-12-26T14:16:29.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.response.body.bytes": 209, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 61, + "service.type": "apache", + "source.address": "::1", + "source.ip": "::1", + "url.original": "/favicon.ico", + "user.name": "-" + }, + { + "@timestamp": "2016-12-26T14:16:48.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.response.status_code": 408, + "input.type": "log", + "log.offset": 134, + "service.type": "apache", + "source.address": "::1", + "source.ip": "::1", + "user.name": "-" + }, + { + "@timestamp": "2016-12-26T16:23:35.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.response.body.bytes": 45, + "http.response.status_code": 200, + "http.version": "1.1", + "input.type": "log", + "log.offset": 181, + "service.type": "apache", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/", + "user.name": "-" + }, + { + "@timestamp": "2016-12-26T16:23:41.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.response.body.bytes": 206, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 252, + "service.type": "apache", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/notfound", + "user.name": "-" + }, + { + "@timestamp": "2016-12-26T16:23:45.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.response.body.bytes": 201, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 332, + "service.type": "apache", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/hmm", + "user.name": "-" + } +] \ No newline at end of file diff --git a/filebeat/module/apache/access/test/ubuntu-2.2.22.log-expected.json b/filebeat/module/apache/access/test/ubuntu-2.2.22.log-expected.json new file mode 100644 index 000000000000..d8ec80fd8a3b --- /dev/null +++ b/filebeat/module/apache/access/test/ubuntu-2.2.22.log-expected.json @@ -0,0 +1,233 @@ +[ + { + "@timestamp": "2016-12-26T16:18:09.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 491, + "http.response.status_code": 200, + "http.version": "1.1", + "input.type": "log", + "log.offset": 0, + "service.type": "apache", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Wget", + "user_agent.original": "Wget/1.13.4 (linux-gnu)", + "user_agent.version": "1.13.4" + }, + { + "@timestamp": "2016-12-26T16:22:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 484, + "http.response.status_code": 200, + "http.version": "1.1", + "input.type": "log", + "log.offset": 98, + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1", + "url.original": "/", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-26T16:22:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "http://192.168.33.72/", + "http.response.body.bytes": 504, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 296, + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1", + "url.original": "/favicon.ico", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-26T16:22:08.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 484, + "http.response.status_code": 200, + "http.version": "1.1", + "input.type": "log", + "log.offset": 525, + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1", + "url.original": "/", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "50.0" + }, + { + "@timestamp": "2016-12-26T16:22:08.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 504, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 685, + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1", + "url.original": "/favicon.ico", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "50.0" + }, + { + "@timestamp": "2016-12-26T16:22:08.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 504, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 856, + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1", + "url.original": "/favicon.ico", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "50.0" + }, + { + "@timestamp": "2016-12-26T16:22:10.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 498, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 1027, + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1", + "url.original": "/test", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "50.0" + }, + { + "@timestamp": "2016-12-26T16:22:13.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 499, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 1191, + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1", + "url.original": "/hello", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "50.0" + }, + { + "@timestamp": "2016-12-26T16:22:17.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.access", + "event.module": "apache", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 499, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 1356, + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1", + "url.original": "/crap", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "50.0" + } +] \ No newline at end of file diff --git a/filebeat/module/apache/error/test/darwin-2.4.23.log-expected.json b/filebeat/module/apache/error/test/darwin-2.4.23.log-expected.json new file mode 100644 index 000000000000..02b509dd1922 --- /dev/null +++ b/filebeat/module/apache/error/test/darwin-2.4.23.log-expected.json @@ -0,0 +1,30 @@ +[ + { + "@timestamp": "2016-12-26T16:15:55.103Z", + "apache.error.module": "mpm_prefork", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "notice", + "log.offset": 0, + "message": "AH00163: Apache/2.4.23 (Unix) configured -- resuming normal operations", + "process.pid": 11379, + "service.type": "apache" + }, + { + "@timestamp": "2016-12-26T16:15:55.103Z", + "apache.error.module": "core", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "notice", + "log.offset": 138, + "message": "AH00094: Command line: '/usr/local/Cellar/httpd24/2.4.23_2/bin/httpd'", + "process.pid": 11379, + "service.type": "apache" + } +] \ No newline at end of file diff --git a/filebeat/module/apache/error/test/ubuntu-2.2.22.log-expected.json b/filebeat/module/apache/error/test/ubuntu-2.2.22.log-expected.json new file mode 100644 index 000000000000..4610af38dd77 --- /dev/null +++ b/filebeat/module/apache/error/test/ubuntu-2.2.22.log-expected.json @@ -0,0 +1,98 @@ +[ + { + "@timestamp": "2016-12-26T16:17:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "notice", + "log.offset": 0, + "message": "Apache/2.2.22 (Ubuntu) configured -- resuming normal operations", + "service.type": "apache" + }, + { + "@timestamp": "2016-12-26T16:22:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "error", + "log.offset": 100, + "message": "File does not exist: /var/www/favicon.ico, referer: http://192.168.33.72/", + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1" + }, + { + "@timestamp": "2016-12-26T16:22:08.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "error", + "log.offset": 231, + "message": "File does not exist: /var/www/favicon.ico", + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1" + }, + { + "@timestamp": "2016-12-26T16:22:08.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "error", + "log.offset": 330, + "message": "File does not exist: /var/www/favicon.ico", + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1" + }, + { + "@timestamp": "2016-12-26T16:22:10.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "error", + "log.offset": 429, + "message": "File does not exist: /var/www/test", + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1" + }, + { + "@timestamp": "2016-12-26T16:22:13.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "error", + "log.offset": 521, + "message": "File does not exist: /var/www/hello", + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1" + }, + { + "@timestamp": "2016-12-26T16:22:17.000Z", + "ecs.version": "1.0.0", + "event.dataset": "apache.error", + "event.module": "apache", + "fileset.name": "error", + "input.type": "log", + "log.level": "error", + "log.offset": 614, + "message": "File does not exist: /var/www/crap", + "service.type": "apache", + "source.address": "192.168.33.1", + "source.ip": "192.168.33.1" + } +] \ No newline at end of file diff --git a/filebeat/module/auditd/log/test/audit-rhel7.log-expected.json b/filebeat/module/auditd/log/test/audit-rhel7.log-expected.json new file mode 100644 index 000000000000..c2d854fd084e --- /dev/null +++ b/filebeat/module/auditd/log/test/audit-rhel7.log-expected.json @@ -0,0 +1,2433 @@ +[ + { + "@timestamp": "2016-12-07T02:16:23.819Z", + "auditd.log.format": "raw", + "auditd.log.kernel": "3.10.0-327.36.3.el7.x86_64", + "auditd.log.sequence": 7798, + "auditd.log.subj": "system_u:system_r:auditd_t:s0", + "auditd.log.ver": "2.4.1", + "ecs.version": "1.0.0", + "event.action": "daemon_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 0, + "process.pid": 251, + "service.type": "auditd", + "user.audit.id": "4294967295" + }, + { + "@timestamp": "2016-12-07T02:16:23.864Z", + "auditd.log.sequence": 6, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 190, + "message": "unit=auditd", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:23.876Z", + "auditd.log.sequence": 7, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "system_boot", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 419, + "process.executable": "/usr/lib/systemd/systemd-update-utmp", + "process.name": "systemd-update-utmp", + "process.pid": 273, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:23.879Z", + "auditd.log.sequence": 8, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 661, + "message": "unit=systemd-update-utmp", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.075Z", + "auditd.log.sequence": 9, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 903, + "message": "unit=systemd-hwdb-update", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.088Z", + "auditd.log.sequence": 10, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 1145, + "message": "unit=systemd-update-done", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.163Z", + "auditd.log.sequence": 11, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 1388, + "message": "unit=systemd-udev-trigger", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.212Z", + "auditd.log.sequence": 12, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 1632, + "message": "unit=irqbalance", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.521Z", + "auditd.log.sequence": 13, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 1866, + "message": "unit=avahi-daemon", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.521Z", + "auditd.log.sequence": 14, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 2102, + "message": "unit=dbus", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.526Z", + "auditd.log.sequence": 15, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 2330, + "message": "unit=rsyslog", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.534Z", + "auditd.log.sequence": 16, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_stop", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 2561, + "message": "unit=irqbalance", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.827Z", + "auditd.log.entries": "0", + "auditd.log.family": "2", + "auditd.log.sequence": 17, + "auditd.log.table": "filter", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 2794, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:24.827Z", + "auditd.log.a0": "0", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 17, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 2875, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 391, + "process.ppid": 390, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.858Z", + "auditd.log.entries": "0", + "auditd.log.family": "2", + "auditd.log.sequence": 18, + "auditd.log.table": "raw", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 3193, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:24.858Z", + "auditd.log.a0": "0", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 18, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 3271, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 396, + "process.ppid": 395, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.870Z", + "auditd.log.entries": "0", + "auditd.log.family": "2", + "auditd.log.sequence": 19, + "auditd.log.table": "security", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 3589, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:24.870Z", + "auditd.log.a0": "0", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 19, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 3672, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 399, + "process.ppid": 398, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.877Z", + "auditd.log.entries": "0", + "auditd.log.family": "2", + "auditd.log.sequence": 20, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 3990, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:24.877Z", + "auditd.log.a0": "0", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 20, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 4071, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 402, + "process.ppid": 401, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.931Z", + "auditd.log.entries": "0", + "auditd.log.family": "2", + "auditd.log.sequence": 21, + "auditd.log.table": "nat", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 4389, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:24.931Z", + "auditd.log.a0": "3", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "3", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 21, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 4467, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 407, + "process.ppid": 406, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.939Z", + "auditd.log.sequence": 22, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 4785, + "message": "unit=yum-cron", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.945Z", + "auditd.log.sequence": 23, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 5017, + "message": "unit=rhel-dmesg", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.953Z", + "auditd.log.sequence": 24, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 5251, + "message": "unit=acpid", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.954Z", + "auditd.log.sequence": 25, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 5480, + "message": "unit=systemd-user-sessions", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.960Z", + "auditd.log.sequence": 26, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 5725, + "message": "unit=ntpd", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:24.982Z", + "auditd.log.entries": "0", + "auditd.log.family": "10", + "auditd.log.sequence": 27, + "auditd.log.table": "filter", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 5953, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:24.982Z", + "auditd.log.a0": "0", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 27, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 6035, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 423, + "process.ppid": 422, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.012Z", + "auditd.log.sequence": 28, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 6353, + "message": "unit=systemd-logind", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.031Z", + "auditd.log.sequence": 29, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 6591, + "message": "unit=crond", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.043Z", + "auditd.log.sequence": 30, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 6820, + "message": "unit=expand-root", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.044Z", + "auditd.log.sequence": 31, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_stop", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 7055, + "message": "unit=expand-root", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.069Z", + "auditd.log.entries": "0", + "auditd.log.family": "10", + "auditd.log.sequence": 32, + "auditd.log.table": "raw", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 7289, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.069Z", + "auditd.log.a0": "0", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 32, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 7368, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 440, + "process.ppid": 439, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.104Z", + "auditd.log.sequence": 33, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 7686, + "message": "unit=sshd-keygen", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.099Z", + "auditd.log.entries": "0", + "auditd.log.family": "10", + "auditd.log.sequence": 34, + "auditd.log.table": "security", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 7921, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.099Z", + "auditd.log.a0": "0", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 34, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 8005, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 446, + "process.ppid": 445, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.128Z", + "auditd.log.entries": "0", + "auditd.log.family": "10", + "auditd.log.sequence": 35, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 8323, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.128Z", + "auditd.log.a0": "0", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 35, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 8405, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 450, + "process.ppid": 449, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.164Z", + "auditd.log.sequence": 36, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 8723, + "message": "unit=plymouth-quit", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.166Z", + "auditd.log.sequence": 37, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_stop", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 8960, + "message": "unit=plymouth-quit", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.167Z", + "auditd.log.sequence": 38, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 9196, + "message": "unit=plymouth-start", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.168Z", + "auditd.log.sequence": 39, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_stop", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 9434, + "message": "unit=plymouth-start", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.170Z", + "auditd.log.sequence": 40, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 9671, + "message": "unit=plymouth-quit-wait", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.170Z", + "auditd.log.sequence": 41, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_stop", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 9913, + "message": "unit=plymouth-quit-wait", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.180Z", + "auditd.log.sequence": 42, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 10154, + "message": "unit=serial-getty@ttyS0", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.187Z", + "auditd.log.sequence": 43, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 10396, + "message": "unit=getty@tty1", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.191Z", + "auditd.log.entries": "0", + "auditd.log.family": "10", + "auditd.log.sequence": 44, + "auditd.log.table": "nat", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 10630, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.191Z", + "auditd.log.a0": "1", + "auditd.log.a1": "41a15c", + "auditd.log.a2": "0", + "auditd.log.a3": "1", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 44, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:insmod_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "313", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 10709, + "process.executable": "/usr/bin/kmod", + "process.name": "modprobe", + "process.pid": 453, + "process.ppid": 452, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.511Z", + "auditd.log.sequence": 45, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:init_t:s0", + "ecs.version": "1.0.0", + "event.action": "service_start", + "event.dataset": "auditd.log", + "event.module": "auditd", + "event.outcome": "success", + "fileset.name": "log", + "input.type": "log", + "log.offset": 11027, + "message": "unit=firewalld", + "process.executable": "/usr/lib/systemd/systemd", + "process.name": "systemd", + "process.pid": 1, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.528Z", + "auditd.log.entries": "5", + "auditd.log.family": "2", + "auditd.log.sequence": 46, + "auditd.log.table": "nat", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 11260, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.528Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "25be720", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 46, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 11338, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 476, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.532Z", + "auditd.log.entries": "5", + "auditd.log.family": "2", + "auditd.log.sequence": 47, + "auditd.log.table": "nat", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 11669, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.532Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "1819720", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 47, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 11747, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 478, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.534Z", + "auditd.log.entries": "6", + "auditd.log.family": "2", + "auditd.log.sequence": 48, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 12078, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.534Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "13d0850", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 48, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 12159, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 479, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.537Z", + "auditd.log.entries": "6", + "auditd.log.family": "2", + "auditd.log.sequence": 49, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 12490, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.537Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "1125850", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 49, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 12571, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 481, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.538Z", + "auditd.log.entries": "4", + "auditd.log.family": "2", + "auditd.log.sequence": 50, + "auditd.log.table": "security", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 12902, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.538Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "20a3600", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 50, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 12985, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 482, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.542Z", + "auditd.log.entries": "4", + "auditd.log.family": "2", + "auditd.log.sequence": 51, + "auditd.log.table": "security", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 13316, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.542Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "9f0600", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 51, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 13399, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 484, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.543Z", + "auditd.log.entries": "3", + "auditd.log.family": "2", + "auditd.log.sequence": 52, + "auditd.log.table": "raw", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 13729, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.543Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "232e4d0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 52, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 13807, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 485, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.546Z", + "auditd.log.entries": "3", + "auditd.log.family": "2", + "auditd.log.sequence": 53, + "auditd.log.table": "raw", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 14138, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.546Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "14404d0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 53, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 14216, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 487, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.548Z", + "auditd.log.entries": "4", + "auditd.log.family": "2", + "auditd.log.sequence": 54, + "auditd.log.table": "filter", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 14547, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.548Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "c31600", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 54, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 14628, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 488, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.552Z", + "auditd.log.entries": "4", + "auditd.log.family": "2", + "auditd.log.sequence": 55, + "auditd.log.table": "filter", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 14958, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.552Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "143a600", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 55, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 15039, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 490, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.553Z", + "auditd.log.entries": "5", + "auditd.log.family": "10", + "auditd.log.sequence": 56, + "auditd.log.table": "nat", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 15370, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.553Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "109b880", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 56, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 15449, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 491, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.556Z", + "auditd.log.entries": "5", + "auditd.log.family": "10", + "auditd.log.sequence": 57, + "auditd.log.table": "nat", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 15782, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.556Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "b53880", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 57, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 15861, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 493, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.557Z", + "auditd.log.entries": "6", + "auditd.log.family": "10", + "auditd.log.sequence": 58, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 16193, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.557Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "17b09e0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 58, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 16275, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 494, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.560Z", + "auditd.log.entries": "6", + "auditd.log.family": "10", + "auditd.log.sequence": 59, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 16608, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.560Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "25cc9e0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 59, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 16690, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 496, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.562Z", + "auditd.log.entries": "4", + "auditd.log.family": "10", + "auditd.log.sequence": 60, + "auditd.log.table": "security", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 17023, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.562Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "14db720", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 60, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 17107, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 497, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.566Z", + "auditd.log.entries": "4", + "auditd.log.family": "10", + "auditd.log.sequence": 61, + "auditd.log.table": "security", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 17440, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.566Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "9d2720", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 61, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 17524, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 499, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.569Z", + "auditd.log.entries": "3", + "auditd.log.family": "10", + "auditd.log.sequence": 62, + "auditd.log.table": "raw", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 17856, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.569Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "fae5c0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 62, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 17935, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 500, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.573Z", + "auditd.log.entries": "3", + "auditd.log.family": "10", + "auditd.log.sequence": 63, + "auditd.log.table": "raw", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 18267, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.573Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "19545c0", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 63, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 18346, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 502, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.575Z", + "auditd.log.entries": "4", + "auditd.log.family": "10", + "auditd.log.sequence": 64, + "auditd.log.table": "filter", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 18679, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.575Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "23a3720", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 64, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 18761, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 503, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.578Z", + "auditd.log.entries": "4", + "auditd.log.family": "10", + "auditd.log.sequence": 65, + "auditd.log.table": "filter", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 19094, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.578Z", + "auditd.log.a0": "4", + "auditd.log.a1": "29", + "auditd.log.a2": "40", + "auditd.log.a3": "162d720", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 65, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 19176, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "ip6tables", + "process.pid": 505, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.580Z", + "auditd.log.entries": "6", + "auditd.log.family": "2", + "auditd.log.sequence": 66, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 19509, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.580Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "14b0850", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 66, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 19590, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 506, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.582Z", + "auditd.log.entries": "6", + "auditd.log.family": "2", + "auditd.log.sequence": 67, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 19921, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.582Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "2398850", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 67, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 20002, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 507, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.583Z", + "auditd.log.entries": "6", + "auditd.log.family": "2", + "auditd.log.sequence": 68, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 20333, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.583Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "2679850", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 68, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 20414, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 508, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.585Z", + "auditd.log.entries": "6", + "auditd.log.family": "2", + "auditd.log.sequence": 69, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 20745, + "service.type": "auditd" + }, + { + "@timestamp": "2016-12-07T02:16:25.585Z", + "auditd.log.a0": "4", + "auditd.log.a1": "0", + "auditd.log.a2": "40", + "auditd.log.a3": "1715850", + "auditd.log.exit": "0", + "auditd.log.items": "0", + "auditd.log.sequence": 69, + "auditd.log.ses": "4294967295", + "auditd.log.subj": "system_u:system_r:iptables_t:s0", + "auditd.log.success": "yes", + "auditd.log.syscall": "54", + "auditd.log.tty": "(none)", + "ecs.version": "1.0.0", + "event.action": "syscall", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "host.architecture": "x86_64", + "input.type": "log", + "log.offset": 20826, + "process.executable": "/usr/sbin/xtables-multi", + "process.name": "iptables", + "process.pid": 509, + "process.ppid": 296, + "service.type": "auditd", + "user.audit.id": "4294967295", + "user.effective.group.id": "0", + "user.effective.id": "0", + "user.filesystem.group.id": "0", + "user.filesystem.id": "0", + "user.group.id": "0", + "user.id": "0", + "user.saved.group.id": "0", + "user.saved.id": "0" + }, + { + "@timestamp": "2016-12-07T02:16:25.587Z", + "auditd.log.entries": "6", + "auditd.log.family": "2", + "auditd.log.sequence": 70, + "auditd.log.table": "mangle", + "ecs.version": "1.0.0", + "event.action": "netfilter_cfg", + "event.dataset": "auditd.log", + "event.module": "auditd", + "fileset.name": "log", + "input.type": "log", + "log.offset": 21157, + "service.type": "auditd" + } +] \ No newline at end of file diff --git a/filebeat/module/elasticsearch/gc/test/gc.log-expected.json b/filebeat/module/elasticsearch/gc/test/gc.log-expected.json new file mode 100644 index 000000000000..af0c8fbe66d5 --- /dev/null +++ b/filebeat/module/elasticsearch/gc/test/gc.log-expected.json @@ -0,0 +1,1538 @@ +[ + { + "@timestamp": "2018-06-13T07:44:22.647Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 0, + "message": "Using Concurrent Mark Sweep", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:22.647Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "heap", + "coops" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 70, + "message": "Heap address: 0x00000000c0000000, size: 1024 MB, Compressed Oops mode: 32-bit", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:22.725Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 201, + "message": "Application time: 0,0011068 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:22.725Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 290, + "message": "Total time for which application threads were stopped: 0,0000563 seconds, Stopping threads took: 0,0000092 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:22.813Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 458, + "message": "Application time: 0,0884133 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:22.813Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 547, + "message": "Total time for which application threads were stopped: 0,0000755 seconds, Stopping threads took: 0,0000103 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:22.836Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 715, + "message": "Application time: 0,0226148 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:22.836Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 804, + "message": "Total time for which application threads were stopped: 0,0000736 seconds, Stopping threads took: 0,0000115 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.016Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 972, + "message": "Application time: 0,1804640 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.017Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 1061, + "message": "Total time for which application threads were stopped: 0,0001712 seconds, Stopping threads took: 0,0000212 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.059Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 1229, + "message": "Application time: 0,0427365 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.060Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 1318, + "message": "Total time for which application threads were stopped: 0,0000910 seconds, Stopping threads took: 0,0000104 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.072Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 1486, + "message": "Application time: 0,0120864 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.072Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 1575, + "message": "Total time for which application threads were stopped: 0,0002664 seconds, Stopping threads took: 0,0000334 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.105Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 1743, + "message": "Application time: 0,0328884 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.105Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 1832, + "message": "Total time for which application threads were stopped: 0,0001472 seconds, Stopping threads took: 0,0000279 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.245Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 2000, + "message": "Application time: 0,1401198 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.245Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 2089, + "message": "Total time for which application threads were stopped: 0,0001774 seconds, Stopping threads took: 0,0000166 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.526Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 2257, + "message": "Application time: 0,2803587 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.526Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 2346, + "message": "Total time for which application threads were stopped: 0,0002301 seconds, Stopping threads took: 0,0000177 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.550Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 2514, + "message": "Application time: 0,0243595 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.551Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 2603, + "message": "Total time for which application threads were stopped: 0,0001740 seconds, Stopping threads took: 0,0000114 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.768Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 2771, + "message": "Application time: 0,2175677 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.768Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 2860, + "message": "Total time for which application threads were stopped: 0,0002329 seconds, Stopping threads took: 0,0000205 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.804Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 3028, + "message": "Application time: 0,0356169 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.804Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 3117, + "message": "Total time for which application threads were stopped: 0,0002034 seconds, Stopping threads took: 0,0000405 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.820Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 3285, + "message": "Application time: 0,0157189 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.820Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 3374, + "message": "Total time for which application threads were stopped: 0,0002240 seconds, Stopping threads took: 0,0000540 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.838Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 3542, + "message": "Application time: 0,0177385 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.838Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 3631, + "message": "Total time for which application threads were stopped: 0,0002886 seconds, Stopping threads took: 0,0000213 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.868Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 3799, + "message": "Application time: 0,0295439 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:23.868Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 3888, + "message": "Total time for which application threads were stopped: 0,0001937 seconds, Stopping threads took: 0,0000221 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.091Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 4056, + "message": "Application time: 0,2231589 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.092Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 4145, + "message": "Total time for which application threads were stopped: 0,0002032 seconds, Stopping threads took: 0,0000222 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.112Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 4313, + "message": "Application time: 0,0201046 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.112Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 4402, + "message": "Total time for which application threads were stopped: 0,0001069 seconds, Stopping threads took: 0,0000242 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.126Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 4570, + "message": "Application time: 0,0144240 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.126Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 4659, + "message": "Total time for which application threads were stopped: 0,0001276 seconds, Stopping threads took: 0,0000219 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.210Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 4827, + "message": "Application time: 0,0833044 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.210Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 4916, + "message": "Total time for which application threads were stopped: 0,0001685 seconds, Stopping threads took: 0,0000201 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.330Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5084, + "message": "Application time: 0,1200701 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.330Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "start" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5173, + "message": "GC(0) Pause Young (Allocation Failure)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.330Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "task" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5265, + "message": "GC(0) Using 8 workers of 8 for evacuation", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "age" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5360, + "message": "GC(0) Desired survivor size 17891328 bytes, new threshold 6 (max threshold 6)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "age" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5491, + "message": "GC(0) Age table with threshold 6 (max threshold 6)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "age" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5595, + "message": "GC(0) - age 1: 17876816 bytes, 17876816 total", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "heap" + ], + "elasticsearch.gc.young_gen.size_kb": "314560", + "elasticsearch.gc.young_gen.used_kb": "17562", + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5700, + "message": "[2018-06-13T07:44:24.343+0000][32376][gc,heap ] GC(0) ParNew: 279616K->17562K(314560K)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "heap" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5792, + "message": "GC(0) CMS: 0K->0K(699072K)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "metaspace" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5872, + "message": "GC(0) Metaspace: 22819K->22819K(1071104K)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 5967, + "message": "GC(0) Pause Young (Allocation FailurGe) 273M->17M(989M) 13,344ms", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "cpu" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6085, + "message": "GC(0) User=0,07s Sys=0,00s Real=0,01s", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.343Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6176, + "message": "Total time for which application threads were stopped: 0,0135152 seconds, Stopping threads took: 0,0000320 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.344Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6344, + "message": "Application time: 0,0000687 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.344Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "start" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6433, + "message": "GC(1) Pause Initial Mark", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.346Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6511, + "message": "GC(1) Pause Initial Mark 22M->22M(989M) 2,829ms", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.347Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "cpu" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6612, + "message": "GC(1) User=0,01s Sys=0,00s Real=0,00s", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.347Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6703, + "message": "Total time for which application threads were stopped: 0,0029891 seconds, Stopping threads took: 0,0000406 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.347Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6871, + "message": "GC(1) Concurrent Mark", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.347Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "task" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 6946, + "message": "GC(1) Using 2 workers of 2 for marking", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.348Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7038, + "message": "GC(1) Concurrent Mark 0,937ms", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.348Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "cpu" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7121, + "message": "GC(1) User=0,00s Sys=0,00s Real=0,00s", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.348Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7212, + "message": "GC(1) Concurrent Preclean", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.350Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7291, + "message": "GC(1) Concurrent Preclean 2,067ms", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.350Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "cpu" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7378, + "message": "GC(1) User=0,00s Sys=0,00s Real=0,00s", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.350Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7469, + "message": "GC(1) Concurrent Abortable Preclean", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.595Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7558, + "message": "Application time: 0,2479945 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.595Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7647, + "message": "Total time for which application threads were stopped: 0,0001480 seconds, Stopping threads took: 0,0000175 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.595Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7815, + "message": "GC(1) Concurrent Abortable Preclean 245,156ms", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.595Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "cpu" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 7914, + "message": "GC(1) User=1,18s Sys=0,02s Real=0,25s", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.595Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8005, + "message": "Application time: 0,0001310 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.595Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "start" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8094, + "message": "GC(1) Pause Remark", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.618Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8166, + "message": "GC(1) Pause Remark 169M->169M(989M) 23,325ms", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.618Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "cpu" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8264, + "message": "GC(1) User=0,14s Sys=0,00s Real=0,02s", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.618Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8355, + "message": "Total time for which application threads were stopped: 0,0234535 seconds, Stopping threads took: 0,0000128 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.618Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8523, + "message": "GC(1) Concurrent Sweep", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.618Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8599, + "message": "GC(1) Concurrent Sweep 0,034ms", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.618Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "cpu" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8683, + "message": "GC(1) User=0,00s Sys=0,00s Real=0,00s", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.618Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8774, + "message": "GC(1) Concurrent Reset", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.619Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8850, + "message": "GC(1) Concurrent Reset 0,636ms", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.619Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "cpu" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 8934, + "message": "GC(1) User=0,00s Sys=0,00s Real=0,00s", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.619Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.old_gen.size_kb": "699072", + "elasticsearch.gc.old_gen.used_kb": "0", + "elasticsearch.gc.tags": [ + "gc", + "heap" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9025, + "message": "[2018-06-13T07:44:24.619+0000][32376][gc,heap ] GC(1) Old: 0K->0K(699072K)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.763Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9105, + "message": "Application time: 0,1444854 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.763Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9194, + "message": "Total time for which application threads were stopped: 0,0003334 seconds, Stopping threads took: 0,0000230 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.777Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9362, + "message": "Application time: 0,0132824 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.777Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9451, + "message": "Total time for which application threads were stopped: 0,0003048 seconds, Stopping threads took: 0,0000297 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.784Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9619, + "message": "Application time: 0,0066508 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.784Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9708, + "message": "Total time for which application threads were stopped: 0,0004138 seconds, Stopping threads took: 0,0000365 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.808Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9876, + "message": "Application time: 0,0239448 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:24.808Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 9965, + "message": "Total time for which application threads were stopped: 0,0003185 seconds, Stopping threads took: 0,0000191 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.072Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 10133, + "message": "Application time: 0,2640511 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.074Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 10222, + "message": "Total time for which application threads were stopped: 0,0012229 seconds, Stopping threads took: 0,0000654 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.139Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "safepoint" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 10390, + "message": "Application time: 0,0649277 seconds", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.139Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "start" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 10479, + "message": "GC(2) Pause Young (Allocation Failure)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.139Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "task" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 10571, + "message": "GC(2) Using 8 workers of 8 for evacuation", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.167Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "age" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 10666, + "message": "GC(2) Desired survivor size 17891328 bytes, new threshold 2 (max threshold 6)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.167Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "age" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 10797, + "message": "GC(2) Age table with threshold 2 (max threshold 6)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.167Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "age" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 10901, + "message": "GC(2) - age 1: 17302064 bytes, 17302064 total", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.167Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "age" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 11006, + "message": "GC(2) - age 2: 7206808 bytes, 24508872 total", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.167Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "heap" + ], + "elasticsearch.gc.young_gen.size_kb": "314560", + "elasticsearch.gc.young_gen.used_kb": "25722", + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 11111, + "message": "[2018-06-13T07:44:25.167+0000][32376][gc,heap ] GC(2) ParNew: 297178K->25722K(314560K)", + "process.pid": "32376", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-06-13T07:44:25.167Z", + "ecs.version": "1.0.0", + "elasticsearch.gc.tags": [ + "gc", + "heap" + ], + "event.dataset": "elasticsearch.gc", + "event.module": "elasticsearch", + "fileset.name": "gc", + "input.type": "log", + "log.offset": 11203, + "message": "GC(2) CMS: 0K->0K(699072K)", + "process.pid": "32376", + "service.type": "elasticsearch" + } +] \ No newline at end of file diff --git a/filebeat/module/elasticsearch/server/test/elasticsearch.624.log-expected.json b/filebeat/module/elasticsearch/server/test/elasticsearch.624.log-expected.json new file mode 100644 index 000000000000..822c7c6a28e2 --- /dev/null +++ b/filebeat/module/elasticsearch/server/test/elasticsearch.624.log-expected.json @@ -0,0 +1,831 @@ +[ + { + "@timestamp": "2018-05-17T08:19:35.939Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "elasticsearch.node.name": "", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 0, + "message": "initializing ...", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:36.089Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.e.NodeEnvironment", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 80, + "message": "using [1] data paths, mounts [[/ (/dev/disk1s1)]], net usable_space [32.4gb], net total_space [233.5gb], types [apfs]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:36.090Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.e.NodeEnvironment", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 268, + "message": "heap size [990.7mb], compressed ordinary object pointers [true]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:36.116Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 402, + "message": "node name [vWNJsZ3] derived from node ID [vWNJsZ3nTIKh5a1ai-ftYQ]; set [node.name] to override", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:36.117Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 557, + "message": "version[6.2.4], pid[32981], build[ccec39f/2018-04-12T20:37:28.497551Z], OS[Mac OS X/10.13.4/x86_64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_144/25.144-b01]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:36.117Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 797, + "message": "JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/var/folders/k3/xlwbcsmj6dd7vjv2tg1d7c_40000gn/T/elasticsearch.CaIZtfV0, -XX:+HeapDumpOnOutOfMemoryError, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Des.path.home=/Users/ruflin/Downloads/elasticsearch-6.2.4, -Des.path.conf=/Users/ruflin/Downloads/elasticsearch-6.2.4/config]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.563Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 1747, + "message": "loaded module [aggs-matrix-stats]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.564Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 1851, + "message": "loaded module [analysis-common]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.564Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 1953, + "message": "loaded module [ingest-common]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.564Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2053, + "message": "loaded module [lang-expression]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.564Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2155, + "message": "loaded module [lang-mustache]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.564Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2255, + "message": "loaded module [lang-painless]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.565Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2355, + "message": "loaded module [mapper-extras]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.565Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2455, + "message": "loaded module [parent-join]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.565Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2553, + "message": "loaded module [percolator]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.565Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2650, + "message": "loaded module [rank-eval]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.566Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2746, + "message": "loaded module [reindex]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.566Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2840, + "message": "loaded module [repository-url]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.566Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 2941, + "message": "loaded module [transport-netty4]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.566Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 3044, + "message": "loaded module [tribe]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:37.567Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.p.PluginsService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 3136, + "message": "no plugins loaded", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:43.741Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.d.DiscoveryModule", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 3224, + "message": "using discovery type [zen]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:45.090Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 3321, + "message": "initialized", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:45.090Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 3393, + "message": "starting ...", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:45.482Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.t.TransportService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 3476, + "message": "publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:48.816Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.s.MasterService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 3627, + "message": "zen-disco-elected-as-master ([0] nodes joined), reason: new_master {vWNJsZ3}{vWNJsZ3nTIKh5a1ai-ftYQ}{WWQIkoohTtWqa2gfWhFq-w}{127.0.0.1}{127.0.0.1:9300}", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:48.826Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.s.ClusterApplierService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 3849, + "message": "new_master {vWNJsZ3}{vWNJsZ3nTIKh5a1ai-ftYQ}{WWQIkoohTtWqa2gfWhFq-w}{127.0.0.1}{127.0.0.1:9300}, reason: apply cluster state (from master [master {vWNJsZ3}{vWNJsZ3nTIKh5a1ai-ftYQ}{WWQIkoohTtWqa2gfWhFq-w}{127.0.0.1}{127.0.0.1:9300} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:48.895Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.h.n.Netty4HttpServerTransport", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 4234, + "message": "publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:48.895Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 4393, + "message": "started", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:49.354Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.g.GatewayService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 4471, + "message": "recovered [1] indices into cluster_state", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:19:50.077Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.AllocationService", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 4582, + "message": "Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[metricbeat-7.0.0-alpha1-2018.05.07][0]] ...]).", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:20:18.871Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 4781, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 32.4gb[13.9%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:20:19.467Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.m.MetaDataCreateIndexService", + "elasticsearch.index.name": "metricbeat-7.0.0-alpha1-2018.05.17", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 5049, + "message": "creating index, cause [auto(bulk api)], templates [metricbeat-7.0.0-alpha1], shards [1]/[1], mappings [doc]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:20:48.886Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 5273, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 32.4gb[13.9%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:21:18.895Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 5541, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:21:48.904Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 5809, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:22:18.911Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 6077, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:22:48.920Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 6345, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:23:18.932Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 6613, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:23:48.941Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 6881, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:24:18.956Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 7149, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:24:48.963Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 7417, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:25:18.976Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 7685, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:25:48.988Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 7953, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:26:18.997Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 8221, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:26:49.009Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 8489, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:27:19.024Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 8757, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:27:49.035Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 9025, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:28:19.048Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 9293, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:28:49.060Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 9561, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:09.245Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.m.MetaDataCreateIndexService", + "elasticsearch.index.name": "filebeat-test-input", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 9829, + "message": "creating index, cause [auto(bulk api)], templates [filebeat-test-input], shards [5]/[1], mappings [doc]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:09.576Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.m.MetaDataMappingService", + "elasticsearch.index.id": "aOGgDwbURfCV57AScqbCgw", + "elasticsearch.index.name": "filebeat-test-input", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 10034, + "message": "update_mapping [doc]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:12.177Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.m.MetaDataCreateIndexService", + "elasticsearch.index.name": "test-filebeat-modules", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 10175, + "message": "creating index, cause [auto(bulk api)], templates [test-filebeat-modules], shards [5]/[1], mappings [doc]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:12.660Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.m.MetaDataMappingService", + "elasticsearch.index.id": "npNY8YrBQtC7JpFOh1sB0w", + "elasticsearch.index.name": "test-filebeat-modules", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 10384, + "message": "update_mapping [doc]", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:19.114Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.c.r.a.DiskThresholdMonitor", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 10527, + "message": "low disk watermark [85%] exceeded on [vWNJsZ3nTIKh5a1ai-ftYQ][vWNJsZ3][/Users/ruflin/Downloads/elasticsearch-6.2.4/data/nodes/0] free: 33.4gb[14.3%], replicas will not be assigned to this node", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:25.418Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 10795, + "message": "stopping ...", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:25.598Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 10878, + "message": "stopped", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:25.598Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 10956, + "message": "closing ...", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2018-05-17T08:29:25.612Z", + "ecs.version": "1.0.0", + "elasticsearch.component": "o.e.n.Node", + "elasticsearch.node.name": "vWNJsZ3", + "event.dataset": "elasticsearch.server", + "event.module": "elasticsearch", + "fileset.name": "server", + "input.type": "log", + "log.level": "INFO", + "log.offset": 11038, + "message": "closed", + "service.type": "elasticsearch" + } +] \ No newline at end of file diff --git a/filebeat/module/kafka/log/test/controller-2.0.0.log-expected.json b/filebeat/module/kafka/log/test/controller-2.0.0.log-expected.json new file mode 100644 index 000000000000..6d70907a077a --- /dev/null +++ b/filebeat/module/kafka/log/test/controller-2.0.0.log-expected.json @@ -0,0 +1,313 @@ +[ + { + "@timestamp": "2018-10-31T15:03:32.474Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "TRACE", + "log.offset": 0, + "message": "Checking need to trigger auto leader balancing", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:03:32.474Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "DEBUG", + "log.offset": 133, + "message": "Preferred replicas by broker Map(20 -> Map(__consumer_offsets-22 -> Vector(20), __consumer_offsets-4 -> Vector(20), __consumer_offsets-7 -> Vector(20), __consumer_offsets-46 -> Vector(20), __consumer_offsets-25 -> Vector(20), __consumer_offsets-49 -> Vector(20), __consumer_offsets-16 -> Vector(20), test-0 -> Vector(20, 30, 10), __consumer_offsets-28 -> Vector(20), __consumer_offsets-31 -> Vector(20), test-2-2 -> Vector(20, 30), __consumer_offsets-37 -> Vector(20), filebeat-system-0 -> Vector(20), test-3-3 -> Vector(20, 30), __consumer_offsets-19 -> Vector(20), __consumer_offsets-13 -> Vector(20), __consumer_offsets-43 -> Vector(20), __consumer_offsets-1 -> Vector(20), __consumer_offsets-34 -> Vector(20), __consumer_offsets-10 -> Vector(20), test-3 -> Vector(20, 10, 30), __consumer_offsets-40 -> Vector(20)), 10 -> Map(__consumer_offsets-30 -> Vector(10), __consumer_offsets-21 -> Vector(10), __consumer_offsets-27 -> Vector(10), __consumer_offsets-9 -> Vector(10), __consumer_offsets-33 -> Vector(10), __consumer_offsets-36 -> Vector(10), __consumer_offsets-42 -> Vector(10), __consumer_offsets-3 -> Vector(10), __consumer_offsets-18 -> Vector(10), test-5 -> Vector(10, 30, 20), __consumer_offsets-15 -> Vector(10), __consumer_offsets-24 -> Vector(10), test-3-1 -> Vector(10, 20), __consumer_offsets-48 -> Vector(10), filebeat-kafka-0 -> Vector(10), __consumer_offsets-6 -> Vector(10), test-2-1 -> Vector(10, 20), test-3-2 -> Vector(10, 30), __consumer_offsets-0 -> Vector(10), __consumer_offsets-39 -> Vector(10), __consumer_offsets-12 -> Vector(10), __consumer_offsets-45 -> Vector(10), test-2 -> Vector(10, 20, 30)), 30 -> Map(__consumer_offsets-8 -> Vector(30), __consumer_offsets-35 -> Vector(30), __consumer_offsets-41 -> Vector(30), __consumer_offsets-23 -> Vector(30), __consumer_offsets-47 -> Vector(30), metricbeat-0 -> Vector(30), test-3-0 -> Vector(30, 10), metricbeat-kafka-0 -> Vector(30), filebeat-0 -> Vector(30), test-2-0 -> Vector(30, 10), __consumer_offsets-38 -> Vector(30), __consumer_offsets-17 -> Vector(30), test-1 -> Vector(30, 10, 20), test-2-3 -> Vector(30, 20), __consumer_offsets-11 -> Vector(30), __consumer_offsets-2 -> Vector(30), __consumer_offsets-14 -> Vector(30), test-4 -> Vector(30, 20, 10), metricbeat-system-0 -> Vector(30), __consumer_offsets-20 -> Vector(30), __consumer_offsets-44 -> Vector(30), __consumer_offsets-5 -> Vector(30), __consumer_offsets-26 -> Vector(30), __consumer_offsets-29 -> Vector(30), __consumer_offsets-32 -> Vector(30)))", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:03:32.474Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "DEBUG", + "log.offset": 2717, + "message": "Topics not in preferred replica for broker 20 Map()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:03:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "TRACE", + "log.offset": 2855, + "message": "Leader imbalance ratio for broker 20 is 0.0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:03:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "DEBUG", + "log.offset": 2985, + "message": "Topics not in preferred replica for broker 10 Map(test-3-1 -> Vector(10, 20))", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:03:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "TRACE", + "log.offset": 3149, + "message": "Leader imbalance ratio for broker 10 is 0.043478260869565216", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:03:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "DEBUG", + "log.offset": 3296, + "message": "Topics not in preferred replica for broker 30 Map()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:03:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "TRACE", + "log.offset": 3434, + "message": "Leader imbalance ratio for broker 30 is 0.0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:08:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "TRACE", + "log.offset": 3564, + "message": "Checking need to trigger auto leader balancing", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:08:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "DEBUG", + "log.offset": 3697, + "message": "Preferred replicas by broker Map(20 -> Map(__consumer_offsets-22 -> Vector(20), __consumer_offsets-4 -> Vector(20), __consumer_offsets-7 -> Vector(20), __consumer_offsets-46 -> Vector(20), __consumer_offsets-25 -> Vector(20), __consumer_offsets-49 -> Vector(20), __consumer_offsets-16 -> Vector(20), test-0 -> Vector(20, 30, 10), __consumer_offsets-28 -> Vector(20), __consumer_offsets-31 -> Vector(20), test-2-2 -> Vector(20, 30), __consumer_offsets-37 -> Vector(20), filebeat-system-0 -> Vector(20), test-3-3 -> Vector(20, 30), __consumer_offsets-19 -> Vector(20), __consumer_offsets-13 -> Vector(20), __consumer_offsets-43 -> Vector(20), __consumer_offsets-1 -> Vector(20), __consumer_offsets-34 -> Vector(20), __consumer_offsets-10 -> Vector(20), test-3 -> Vector(20, 10, 30), __consumer_offsets-40 -> Vector(20)), 10 -> Map(__consumer_offsets-30 -> Vector(10), __consumer_offsets-21 -> Vector(10), __consumer_offsets-27 -> Vector(10), __consumer_offsets-9 -> Vector(10), __consumer_offsets-33 -> Vector(10), __consumer_offsets-36 -> Vector(10), __consumer_offsets-42 -> Vector(10), __consumer_offsets-3 -> Vector(10), __consumer_offsets-18 -> Vector(10), test-5 -> Vector(10, 30, 20), __consumer_offsets-15 -> Vector(10), __consumer_offsets-24 -> Vector(10), test-3-1 -> Vector(10, 20), __consumer_offsets-48 -> Vector(10), filebeat-kafka-0 -> Vector(10), __consumer_offsets-6 -> Vector(10), test-2-1 -> Vector(10, 20), test-3-2 -> Vector(10, 30), __consumer_offsets-0 -> Vector(10), __consumer_offsets-39 -> Vector(10), __consumer_offsets-12 -> Vector(10), __consumer_offsets-45 -> Vector(10), test-2 -> Vector(10, 20, 30)), 30 -> Map(__consumer_offsets-8 -> Vector(30), __consumer_offsets-35 -> Vector(30), __consumer_offsets-41 -> Vector(30), __consumer_offsets-23 -> Vector(30), __consumer_offsets-47 -> Vector(30), metricbeat-0 -> Vector(30), test-3-0 -> Vector(30, 10), metricbeat-kafka-0 -> Vector(30), filebeat-0 -> Vector(30), test-2-0 -> Vector(30, 10), __consumer_offsets-38 -> Vector(30), __consumer_offsets-17 -> Vector(30), test-1 -> Vector(30, 10, 20), test-2-3 -> Vector(30, 20), __consumer_offsets-11 -> Vector(30), __consumer_offsets-2 -> Vector(30), __consumer_offsets-14 -> Vector(30), test-4 -> Vector(30, 20, 10), metricbeat-system-0 -> Vector(30), __consumer_offsets-20 -> Vector(30), __consumer_offsets-44 -> Vector(30), __consumer_offsets-5 -> Vector(30), __consumer_offsets-26 -> Vector(30), __consumer_offsets-29 -> Vector(30), __consumer_offsets-32 -> Vector(30)))", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:08:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "DEBUG", + "log.offset": 6281, + "message": "Topics not in preferred replica for broker 20 Map()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:08:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "TRACE", + "log.offset": 6419, + "message": "Leader imbalance ratio for broker 20 is 0.0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:08:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "DEBUG", + "log.offset": 6549, + "message": "Topics not in preferred replica for broker 10 Map(test-3-1 -> Vector(10, 20))", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:08:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "TRACE", + "log.offset": 6713, + "message": "Leader imbalance ratio for broker 10 is 0.043478260869565216", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:08:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "DEBUG", + "log.offset": 6860, + "message": "Topics not in preferred replica for broker 30 Map()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:08:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "TRACE", + "log.offset": 6998, + "message": "Leader imbalance ratio for broker 30 is 0.0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:09:30.306Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "INFO", + "log.offset": 7128, + "message": "New topics: [Set(foo)], deleted topics: [Set()], new partition replica assignment [Map(foo-0 -> Vector(20))]", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:09:30.307Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.level": "INFO", + "log.offset": 7322, + "message": "New partition creation callback for foo-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:09:30.396Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.RequestSendThread", + "kafka.log.component": "RequestSendThread controllerId=10", + "log.level": "INFO", + "log.offset": 7449, + "message": "Controller 10 connected to 10.122.220.20:9094 (id: 20 rack: null) for sending state change requests", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:09:30.397Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.RequestSendThread", + "kafka.log.component": "RequestSendThread controllerId=10", + "log.level": "INFO", + "log.offset": 7653, + "message": "Controller 10 connected to 10.122.220.20:9093 (id: 10 rack: null) for sending state change requests", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:09:30.396Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.RequestSendThread", + "kafka.log.component": "RequestSendThread controllerId=10", + "log.level": "INFO", + "log.offset": 7857, + "message": "Controller 10 connected to 10.122.220.20:9095 (id: 30 rack: null) for sending state change requests", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-31T15:13:32.475Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.controller.KafkaController", + "kafka.log.component": "Controller id=10", + "log.flags": [ + "multiline" + ], + "log.level": "TRACE", + "log.offset": 8061, + "message": "Checking need to trigger auto leader balancing", + "service.type": "kafka" + } +] \ No newline at end of file diff --git a/filebeat/module/kafka/log/test/server-2.0.0.log-expected.json b/filebeat/module/kafka/log/test/server-2.0.0.log-expected.json new file mode 100644 index 000000000000..6fa2ebd1ec8d --- /dev/null +++ b/filebeat/module/kafka/log/test/server-2.0.0.log-expected.json @@ -0,0 +1,1407 @@ +[ + { + "@timestamp": "2018-10-17T12:04:41.718Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.coordinator.group.GroupMetadataManager", + "kafka.log.component": "GroupMetadataManager brokerId=10", + "log.level": "INFO", + "log.offset": 0, + "message": "Removed 0 expired offsets in 0 milliseconds.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:14:41.719Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.coordinator.group.GroupMetadataManager", + "kafka.log.component": "GroupMetadataManager brokerId=10", + "log.level": "INFO", + "log.offset": 158, + "message": "Removed 0 expired offsets in 1 milliseconds.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:24:41.719Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.coordinator.group.GroupMetadataManager", + "kafka.log.component": "GroupMetadataManager brokerId=10", + "log.level": "INFO", + "log.offset": 316, + "message": "Removed 0 expired offsets in 1 milliseconds.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:34:41.719Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.coordinator.group.GroupMetadataManager", + "kafka.log.component": "GroupMetadataManager brokerId=10", + "log.level": "INFO", + "log.offset": 474, + "message": "Removed 0 expired offsets in 0 milliseconds.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:44:41.719Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.coordinator.group.GroupMetadataManager", + "kafka.log.component": "GroupMetadataManager brokerId=10", + "log.level": "INFO", + "log.offset": 632, + "message": "Removed 0 expired offsets in 1 milliseconds.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.313Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 790, + "message": "Removed fetcher for partitions test-3", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.314Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-3 broker=10", + "log.level": "INFO", + "log.offset": 933, + "message": "test-3 starts at Leader Epoch 1 from offset 0. Previous Leader Epoch was: 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.321Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 1095, + "message": "Removed fetcher for partitions test-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.322Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 1238, + "message": "Added fetcher for partitions List([test-0, initOffset 0 to broker BrokerEndPoint(30,10.122.220.20,9095)] )", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.322Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 1450, + "message": "Added fetcher for partitions List()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.323Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 1601, + "message": "Shutting down", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.323Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "org.apache.kafka.clients.FetchSessionHandler", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 1738, + "message": "Error sending fetch request (sessionId=1901923426, epoch=30531) to node 20: java.nio.channels.ClosedSelectorException.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.324Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 1991, + "message": "Stopped", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.331Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 2122, + "message": "Shutdown completed", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.348Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 2264, + "message": "Removed fetcher for partitions test-5,test-2,test-2-1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.348Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-5 broker=10", + "log.level": "INFO", + "log.offset": 2423, + "message": "test-5 starts at Leader Epoch 1 from offset 0. Previous Leader Epoch was: 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.350Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-2 broker=10", + "log.level": "INFO", + "log.offset": 2585, + "message": "test-2 starts at Leader Epoch 1 from offset 0. Previous Leader Epoch was: 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.351Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-2-1 broker=10", + "log.level": "INFO", + "log.offset": 2747, + "message": "test-2-1 starts at Leader Epoch 1 from offset 0. Previous Leader Epoch was: 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.355Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 2913, + "message": "Removed fetcher for partitions ", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.360Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 3050, + "message": "Added fetcher for partitions List()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.361Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 3191, + "message": "Added fetcher for partitions List()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.421Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=30, fetcherId=0", + "log.level": "WARN", + "log.offset": 3342, + "message": "Based on follower's leader epoch, leader replied with an unknown offset in test-0. The initial fetch offset 0 will be used for truncation.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:23.421Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.Log", + "kafka.log.component": "Log partition=test-0, dir=/tmp/kafka-logs-10", + "log.level": "INFO", + "log.offset": 3604, + "message": "Truncating to 0 has no effect as the largest offset in the log is -1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:50:24.508Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 3767, + "message": "Added fetcher for partitions List()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:51:56.064Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-5 broker=10", + "log.level": "INFO", + "log.offset": 3918, + "message": "Expanding ISR from 10,30 to 10,30,20", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:51:56.091Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-3 broker=10", + "log.level": "INFO", + "log.offset": 4041, + "message": "Expanding ISR from 10,30 to 10,30,20", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:51:56.098Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-2 broker=10", + "log.level": "INFO", + "log.offset": 4164, + "message": "Expanding ISR from 10,30 to 10,30,20", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:51:56.104Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-2-1 broker=10", + "log.level": "INFO", + "log.offset": 4287, + "message": "Expanding ISR from 10 to 10,20", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.461Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 4406, + "message": "Removed fetcher for partitions test-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.481Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 4549, + "message": "Added fetcher for partitions List([test-0, initOffset 0 to broker BrokerEndPoint(20,10.122.220.20,9094)] )", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.482Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 4761, + "message": "Added fetcher for partitions List()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.483Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 4912, + "message": "Starting", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.501Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "WARN", + "log.offset": 5044, + "message": "Based on follower's leader epoch, leader replied with an unknown offset in test-0. The initial fetch offset 0 will be used for truncation.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.504Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.Log", + "kafka.log.component": "Log partition=test-0, dir=/tmp/kafka-logs-10", + "log.level": "INFO", + "log.offset": 5306, + "message": "Truncating to 0 has no effect as the largest offset in the log is -1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.504Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 5469, + "message": "Removed fetcher for partitions test-3", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.508Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 5612, + "message": "Added fetcher for partitions List([test-3, initOffset 0 to broker BrokerEndPoint(20,10.122.220.20,9094)] )", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:31.510Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 5824, + "message": "Added fetcher for partitions List()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:32.043Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "WARN", + "log.offset": 5975, + "message": "Based on follower's leader epoch, leader replied with an unknown offset in test-3. The initial fetch offset 0 will be used for truncation.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:32.044Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.Log", + "kafka.log.component": "Log partition=test-3, dir=/tmp/kafka-logs-10", + "log.level": "INFO", + "log.offset": 6237, + "message": "Truncating to 0 has no effect as the largest offset in the log is -1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:54:41.719Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.coordinator.group.GroupMetadataManager", + "kafka.log.component": "GroupMetadataManager brokerId=10", + "log.level": "INFO", + "log.offset": 6400, + "message": "Removed 0 expired offsets in 0 milliseconds.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.790Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 6558, + "message": "Removed fetcher for partitions test-3-2", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.809Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.Log", + "kafka.log.component": "Log partition=test-3-2, dir=/tmp/kafka-logs-10", + "log.level": "INFO", + "log.offset": 6703, + "message": "Loading producer state till offset 0 with message format version 2", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.810Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.Log", + "kafka.log.component": "Log partition=test-3-2, dir=/tmp/kafka-logs-10", + "log.level": "INFO", + "log.offset": 6866, + "message": "Completed load of log with 1 segments, log start offset 0 and log end offset 0 in 2 ms", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.812Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.LogManager", + "kafka.log.component": "delete", + "log.level": "INFO", + "log.offset": 7049, + "message": "flush.ms -> 9223372036854775807, segment.ms -> 604800000, segment.bytes -> 1073741824, retention.ms -> 604800000, message.timestamp.difference.max.ms -> 9223372036854775807, segment.index.bytes -> 10485760, flush.messages -> 9223372036854775807}.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.816Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-3-2 broker=10", + "log.level": "INFO", + "log.offset": 7916, + "message": "No checkpointed highwatermark is found for partition test-3-2", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.816Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Replica", + "kafka.log.component": "unknown", + "log.level": "INFO", + "log.offset": 8066, + "message": "Replica loaded for partition test-3-2 with initial high watermark 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.816Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Replica", + "kafka.log.component": "unknown", + "log.level": "INFO", + "log.offset": 8189, + "message": "Replica loaded for partition test-3-2 with initial high watermark 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.816Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-3-2 broker=10", + "log.level": "INFO", + "log.offset": 8312, + "message": "test-3-2 starts at Leader Epoch 0 from offset 0. Previous Leader Epoch was: -1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.817Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Replica", + "kafka.log.component": "unknown", + "log.level": "INFO", + "log.offset": 8479, + "message": "Replica loaded for partition test-3-0 with initial high watermark 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.833Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.Log", + "kafka.log.component": "Log partition=test-3-0, dir=/tmp/kafka-logs-10", + "log.level": "INFO", + "log.offset": 8602, + "message": "Loading producer state till offset 0 with message format version 2", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.833Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.Log", + "kafka.log.component": "Log partition=test-3-0, dir=/tmp/kafka-logs-10", + "log.level": "INFO", + "log.offset": 8765, + "message": "Completed load of log with 1 segments, log start offset 0 and log end offset 0 in 5 ms", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.835Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.LogManager", + "kafka.log.component": "delete", + "log.level": "INFO", + "log.offset": 8948, + "message": "flush.ms -> 9223372036854775807, segment.ms -> 604800000, segment.bytes -> 1073741824, retention.ms -> 604800000, message.timestamp.difference.max.ms -> 9223372036854775807, segment.index.bytes -> 10485760, flush.messages -> 9223372036854775807}.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.836Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Partition", + "kafka.log.component": "Partition test-3-0 broker=10", + "log.level": "INFO", + "log.offset": 9815, + "message": "No checkpointed highwatermark is found for partition test-3-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.836Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.cluster.Replica", + "kafka.log.component": "unknown", + "log.level": "INFO", + "log.offset": 9965, + "message": "Replica loaded for partition test-3-0 with initial high watermark 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.837Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 10088, + "message": "Removed fetcher for partitions test-3-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.838Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 10233, + "message": "Added fetcher for partitions List([test-3-0, initOffset 0 to broker BrokerEndPoint(30,10.122.220.20,9095)] )", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.839Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 10447, + "message": "Added fetcher for partitions List()", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.896Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=30, fetcherId=0", + "log.level": "WARN", + "log.offset": 10598, + "message": "Based on follower's leader epoch, leader replied with an unknown offset in test-3-0. The initial fetch offset 0 will be used for truncation.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:17.897Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.log.Log", + "kafka.log.component": "Log partition=test-3-0, dir=/tmp/kafka-logs-10", + "log.level": "INFO", + "log.offset": 10862, + "message": "Truncating to 0 has no effect as the largest offset in the log is -1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:57:18.400Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=30, fetcherId=0", + "kafka.log.trace.class": "org.apache.kafka.common.errors.UnknownTopicOrPartitionException", + "kafka.log.trace.message": "This server does not host this topic-partition.", + "log.flags": [ + "multiline" + ], + "log.level": "ERROR", + "log.offset": 11027, + "message": "Error for partition test-3-0 at offset 0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.490Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "org.apache.kafka.common.utils.LoggingSignalHandler", + "kafka.log.component": "unknown", + "log.level": "INFO", + "log.offset": 11305, + "message": "Terminating process due to signal SIGTERM", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.492Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.KafkaServer", + "kafka.log.component": "KafkaServer id=10", + "log.level": "INFO", + "log.offset": 11431, + "message": "shutting down", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.494Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.KafkaServer", + "kafka.log.component": "KafkaServer id=10", + "log.level": "INFO", + "log.offset": 11523, + "message": "Starting controlled shutdown", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.547Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 11630, + "message": "Removed fetcher for partitions ", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.550Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 11767, + "message": "Removed fetcher for partitions ", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.556Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 11914, + "message": "Removed fetcher for partitions test-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.556Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 12057, + "message": "Removed fetcher for partitions test-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.558Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 12210, + "message": "Removed fetcher for partitions test-3-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.558Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 12355, + "message": "Removed fetcher for partitions test-3-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.561Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 12510, + "message": "Removed fetcher for partitions test-2-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.561Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 12655, + "message": "Removed fetcher for partitions test-2-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.567Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 12810, + "message": "Removed fetcher for partitions test-1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.567Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 12953, + "message": "Removed fetcher for partitions test-1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.568Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 13106, + "message": "Removed fetcher for partitions test-4", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.568Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 13249, + "message": "Removed fetcher for partitions test-4", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.568Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=30, fetcherId=0", + "log.level": "INFO", + "log.offset": 13402, + "message": "Shutting down", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.577Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "org.apache.kafka.clients.FetchSessionHandler", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=30, fetcherId=0", + "log.level": "INFO", + "log.offset": 13539, + "message": "Error sending fetch request (sessionId=461323381, epoch=31537) to node 30: java.nio.channels.ClosedSelectorException.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.577Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=30, fetcherId=0", + "log.level": "INFO", + "log.offset": 13791, + "message": "Stopped", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.583Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=30, fetcherId=0", + "log.level": "INFO", + "log.offset": 13922, + "message": "Shutdown completed", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.585Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 14064, + "message": "Removed fetcher for partitions test-3", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.586Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 14207, + "message": "Removed fetcher for partitions test-3", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.594Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 14360, + "message": "Shutting down", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.601Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "org.apache.kafka.clients.FetchSessionHandler", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 14497, + "message": "Error sending fetch request (sessionId=1016438239, epoch=510) to node 20: java.nio.channels.ClosedSelectorException.", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.602Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 14748, + "message": "Stopped", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.602Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherThread", + "kafka.log.component": "ReplicaFetcher replicaId=10, leaderId=20, fetcherId=0", + "log.level": "INFO", + "log.offset": 14879, + "message": "Shutdown completed", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.604Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.KafkaServer", + "kafka.log.component": "KafkaServer id=10", + "log.level": "INFO", + "log.offset": 15021, + "message": "Controlled shutdown succeeded", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.605Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.common.ZkNodeChangeNotificationListener$ChangeEventProcessThread", + "kafka.log.component": "/config/changes-event-process-thread", + "log.level": "INFO", + "log.offset": 15129, + "message": "Shutting down", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.606Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.common.ZkNodeChangeNotificationListener$ChangeEventProcessThread", + "kafka.log.component": "/config/changes-event-process-thread", + "log.level": "INFO", + "log.offset": 15287, + "message": "Stopped", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.606Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 15439, + "message": "Removed fetcher for partitions ", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.606Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 15576, + "message": "Removed fetcher for partitions ", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.606Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.common.ZkNodeChangeNotificationListener$ChangeEventProcessThread", + "kafka.log.component": "/config/changes-event-process-thread", + "log.level": "INFO", + "log.offset": 15723, + "message": "Shutdown completed", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.607Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.network.SocketServer", + "kafka.log.component": "SocketServer brokerId=10", + "log.level": "INFO", + "log.offset": 15886, + "message": "Stopping socket server request processors", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.608Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 16015, + "message": "Removed fetcher for partitions test-3", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.608Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 16158, + "message": "Removed fetcher for partitions test-3", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.609Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 16311, + "message": "Removed fetcher for partitions test-1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.609Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 16454, + "message": "Removed fetcher for partitions test-1", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.610Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 16607, + "message": "Removed fetcher for partitions test-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.610Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 16750, + "message": "Removed fetcher for partitions test-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.611Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaFetcherManager", + "kafka.log.component": "ReplicaFetcherManager on broker 10", + "log.level": "INFO", + "log.offset": 16903, + "message": "Removed fetcher for partitions test-3-0", + "service.type": "kafka" + }, + { + "@timestamp": "2018-10-17T12:58:47.611Z", + "ecs.version": "1.0.0", + "event.dataset": "kafka.log", + "event.module": "kafka", + "fileset.name": "log", + "input.type": "log", + "kafka.log.class": "kafka.server.ReplicaAlterLogDirsManager", + "kafka.log.component": "ReplicaAlterLogDirsManager on broker 10", + "log.level": "INFO", + "log.offset": 17048, + "message": "Removed fetcher for partitions test-3-0", + "service.type": "kafka" + } +] \ No newline at end of file diff --git a/filebeat/module/kibana/log/test/log.624.log-expected.json b/filebeat/module/kibana/log/test/log.624.log-expected.json new file mode 100644 index 000000000000..675d68259a96 --- /dev/null +++ b/filebeat/module/kibana/log/test/log.624.log-expected.json @@ -0,0 +1,2434 @@ +[ + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:kibana@6.3.0", + "info" + ], + "log.offset": 0, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:elasticsearch@6.3.0", + "info" + ], + "log.offset": 243, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:xpack_main@6.3.0", + "info" + ], + "log.offset": 515, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:searchprofiler@6.3.0", + "info" + ], + "log.offset": 784, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:ml@6.3.0", + "info" + ], + "log.offset": 1057, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:tilemap@6.3.0", + "info" + ], + "log.offset": 1318, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:watcher@6.3.0", + "info" + ], + "log.offset": 1584, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:license_management@6.3.0", + "info" + ], + "log.offset": 1850, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:index_management@6.3.0", + "info" + ], + "log.offset": 2105, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:timelion@6.3.0", + "info" + ], + "log.offset": 2358, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:graph@6.3.0", + "info" + ], + "log.offset": 2603, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:monitoring@6.3.0", + "info" + ], + "log.offset": 2867, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:security@6.3.0", + "info" + ], + "log.offset": 3114, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "security", + "warning" + ], + "log.offset": 3381, + "message": "Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "security", + "warning" + ], + "log.offset": 3653, + "message": "Session cookies will be transmitted over insecure connections. This is not recommended.", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:grokdebugger@6.3.0", + "info" + ], + "log.offset": 3846, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:dashboard_mode@6.3.0", + "info" + ], + "log.offset": 4117, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:logstash@6.3.0", + "info" + ], + "log.offset": 4368, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:apm@6.3.0", + "info" + ], + "log.offset": 4635, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:console@6.3.0", + "info" + ], + "log.offset": 4875, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:console_extensions@6.3.0", + "info" + ], + "log.offset": 5119, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:metrics@6.3.0", + "info" + ], + "log.offset": 5374, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "warning" + ], + "log.offset": 5618, + "message": "Generating a random key for xpack.reporting.encryptionKey. To prevent pending reports from failing on restart, please set xpack.reporting.encryptionKey in kibana.yml", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:reporting@6.3.0", + "info" + ], + "log.offset": 5890, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "listening", + "info" + ], + "log.offset": 6158, + "message": "Server running at http://localhost:5601", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:elasticsearch@6.3.0", + "info" + ], + "log.offset": 6301, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "license", + "info", + "xpack" + ], + "log.offset": 6549, + "message": "Imported license information from Elasticsearch for the [data] cluster: mode: basic | status: active | expiry date: Invalid date", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:xpack_main@6.3.0", + "info" + ], + "log.offset": 6787, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:searchprofiler@6.3.0", + "info" + ], + "log.offset": 7032, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:ml@6.3.0", + "info" + ], + "log.offset": 7281, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:tilemap@6.3.0", + "info" + ], + "log.offset": 7518, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:watcher@6.3.0", + "info" + ], + "log.offset": 7760, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:graph@6.3.0", + "info" + ], + "log.offset": 8002, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:security@6.3.0", + "info" + ], + "log.offset": 8242, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:grokdebugger@6.3.0", + "info" + ], + "log.offset": 8485, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:logstash@6.3.0", + "info" + ], + "log.offset": 8732, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:reporting@6.3.0", + "info" + ], + "log.offset": 8975, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "info", + "monitoring-ui", + "kibana-monitoring" + ], + "log.offset": 9219, + "message": "Starting all Kibana monitoring collectors", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:35.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "license", + "info", + "xpack" + ], + "log.offset": 9388, + "message": "Imported license information from Elasticsearch for the [monitoring] cluster: mode: basic | status: active | expiry date: Invalid date", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:57:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 68000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.response.body.bytes": 9, + "http.response.status_code": 200, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.upgrade-insecure-requests": "1", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 9632, + "message": "GET / 200 68ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 224000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/", + "http.response.body.bytes": 9, + "http.response.status_code": 200, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.upgrade-insecure-requests": "1", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 10332, + "message": "GET /app/kibana 200 224ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/app/kibana", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 43000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "*/*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-none-match": "\"d1d40f3af2904b0fe2832615909d39cc87d63bec-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 11124, + "message": "GET /bundles/app/kibana/bootstrap.js 304 43ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/bundles/app/kibana/bootstrap.js", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 30000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "text/css,*/*;q=0.1", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-none-match": "\"63a7e0fe485c0cf6bd57434a91c2f2e485bf2d32-/bundles/-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 11930, + "message": "GET /bundles/kibana.style.css 304 30ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/bundles/kibana.style.css", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 32000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:28 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"8e183c2e644fb050707d89402e1f7a120a95e4d2\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 12747, + "message": "GET /ui/favicons/favicon-32x32.png 304 32ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/ui/favicons/favicon-32x32.png", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 75000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "text/css,*/*;q=0.1", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-none-match": "\"d9ef83163859bff075ba5d6e1c4ce799d32ba8bc-/bundles/-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 13632, + "message": "GET /bundles/vendors.style.css 304 75ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/bundles/vendors.style.css", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 54000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "text/css,*/*;q=0.1", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-none-match": "\"abe65868d7050c7459af42ab0a0f4c19889532b1-/bundles/-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 14451, + "message": "GET /bundles/commons.style.css 304 54ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/bundles/commons.style.css", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 13000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:28 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"13b869be5df4bdc56920edc16a28e67a7c08203b\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 15270, + "message": "GET /ui/favicons/favicon-16x16.png 304 13ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/ui/favicons/favicon-16x16.png", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 131000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "*/*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-none-match": "\"333ee3fdd2264402ad73b95fab3fc725beb24674-/bundles/-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 16155, + "message": "GET /bundles/vendors.bundle.js 304 131ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/bundles/vendors.bundle.js", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 25000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "*/*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-none-match": "\"c052cafa0b661261d8ee3d16eff7bb0548fd8b6e-/bundles/-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 16961, + "message": "GET /bundles/commons.bundle.js 304 25ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/bundles/commons.bundle.js", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 18000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "*/*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-none-match": "\"43e987f5a0e6423dd63e190cfacf091932021817-/bundles/-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 17765, + "message": "GET /bundles/kibana.bundle.js 304 18ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/bundles/kibana.bundle.js", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:54.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 5000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "*/*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:28 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"2c07a9656f1e38da408f20f1cf11581a15cbd7a2\"", + "kibana.log.meta.req.headers.origin": "http://localhost:5601", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 18567, + "message": "GET /ui/fonts/open_sans/open_sans_v15_latin_regular.woff2 304 5ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/ui/fonts/open_sans/open_sans_v15_latin_regular.woff2", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:54.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 181000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 200, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "application/json, text/javascript, */*; q=0.01", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.kbn-version": "6.3.0", + "kibana.log.meta.req.headers.x-requested-with": "XMLHttpRequest", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 19493, + "message": "GET /api/console/api_server?sense_version=%40%40SENSE_VERSION&apis=es_5_0 200 181ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/api/console/api_server?sense_version=%40%40SENSE_VERSION&apis=es_5_0", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 10000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"4cc79a4d91bd0380d0c82a6b092f339d185670ef-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 20408, + "message": "GET /plugins/kibana/assets/visualize.svg 304 10ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/visualize.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 13000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"c4035451a8e776d0f0cd354a825ec432ad06884e-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 21310, + "message": "GET /plugins/kibana/assets/discover.svg 304 13ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/discover.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 19000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"42c2161fa64691414784868afdd722444460763a-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 22210, + "message": "GET /plugins/kibana/assets/dashboard.svg 304 19ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/dashboard.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 27000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:27 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"cb793d5314d680b7d5ce130f0393a70b51989541-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 23112, + "message": "GET /plugins/timelion/icon.svg 304 27ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/timelion/icon.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 28000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:56:42 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"cdb6515bc1340e806d4f17cbeea6a51eb5f40732-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 23994, + "message": "GET /plugins/apm/icon.svg 304 28ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/apm/icon.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 24000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"088a9a98c99e406dca2354af14f688ad84826b97-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 24866, + "message": "GET /plugins/kibana/assets/wrench.svg 304 24ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/wrench.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 26000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:56:42 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"a41ecd3d2ac0a1e77a72845479fc416658c609f8-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 25762, + "message": "GET /plugins/monitoring/icons/monitoring.svg 304 26ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/monitoring/icons/monitoring.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 22000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"4f859e27d4917026ff1590805887902b14ce79d5-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 26672, + "message": "GET /plugins/kibana/assets/settings.svg 304 22ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/settings.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 22000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:56:42 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"becef0294f6fdb73b9bf3ce52750e7e1b246e88f-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 27572, + "message": "GET /plugins/security/images/person.svg 304 22ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/security/images/person.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 17000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:56:42 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"668bb08fe12a79ded121708cef3beebc475a2bea-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 28472, + "message": "GET /plugins/security/images/logout.svg 304 17ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/security/images/logout.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 15000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"2433ecf38258f7121c835670b6993600e7657717-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 29372, + "message": "GET /plugins/kibana/assets/play-circle.svg 304 15ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/play-circle.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 129000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 200, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "application/json, text/plain, */*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.kbn-version": "6.3.0", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 30278, + "message": "GET /api/saved_objects/_find?type=index-pattern&per_page=10000&page=1 200 129ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/api/saved_objects/_find?type=index-pattern&per_page=10000&page=1", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 5000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/bundles/commons.style.css", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:54:49 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"eacd5acd1258d9b09e78dbc1958744f30e38bcbd-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 31136, + "message": "GET /bundles/ebdca7741674eca4e1fadeca157f3ae6.svg 304 5ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/bundles/ebdca7741674eca4e1fadeca157f3ae6.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 3000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:28 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"8e183c2e644fb050707d89402e1f7a120a95e4d2\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 32084, + "message": "GET /ui/favicons/favicon-32x32.png 304 3ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/ui/favicons/favicon-32x32.png", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 5000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 200, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "application/json, text/plain, */*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.kbn-version": "6.3.0", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 32967, + "message": "GET /api/xpack/v1/info 200 5ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/api/xpack/v1/info", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 15000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"457dc00b37f24a612e3e51bf323121ffdb4386dd-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 33727, + "message": "GET /plugins/kibana/assets/app_monitoring.svg 304 15ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_monitoring.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 17000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"6561a902856504eaf56de28322529e13881654af-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 34639, + "message": "GET /plugins/kibana/assets/app_apm.svg 304 17ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_apm.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 20000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"1c8bf6856f43e3624697a537b3cec2fe995134b9-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 35537, + "message": "GET /plugins/kibana/assets/app_logging.svg 304 20ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_logging.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 23000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"63fbb8a8097faaab028c60c5bfe4fb3564b54617-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 36443, + "message": "GET /plugins/kibana/assets/app_discover.svg 304 23ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_discover.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 26000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"b4261017978445223123954c34d7f62499a61e72-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 37351, + "message": "GET /plugins/kibana/assets/app_dashboard.svg 304 26ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_dashboard.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 28000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"154317cbb2d2fb1a29cc4ea1fce567e006b73451-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 38261, + "message": "GET /plugins/kibana/assets/app_security.svg 304 28ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_security.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 4000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:56:42 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"51bf11135e7f37b7a9043190b668e9937c3bfeea-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 39169, + "message": "GET /plugins/graph/assets/app_graph.svg 304 4ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/graph/assets/app_graph.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 7000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:56:42 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"83ce11e8c3f1541a87bd6a4f79db4fb7bb87b93b-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 40067, + "message": "GET /plugins/ml/assets/app_ml.svg 304 7ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/ml/assets/app_ml.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 7000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"f9495c0fc17cac4af10c948301bf08c1a45911db-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 40953, + "message": "GET /plugins/kibana/assets/app_timelion.svg 304 7ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_timelion.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 30000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"11273d325dd73b3f8b3eee569b56068b690d6d9e-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 41859, + "message": "GET /plugins/kibana/assets/app_visualize.svg 304 30ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_visualize.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 20000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "*/*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:28 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"5a6a45d6f98752b11ccb7c4f0f6fd7faf18ad1a7\"", + "kibana.log.meta.req.headers.origin": "http://localhost:5601", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 42769, + "message": "GET /ui/fonts/open_sans/open_sans_v15_latin_700.woff2 304 20ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/ui/fonts/open_sans/open_sans_v15_latin_700.woff2", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 21000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"25044a6e1d5e83bb615c5971068f0c5152c77ef1-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 43689, + "message": "GET /plugins/kibana/assets/app_console.svg 304 21ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_console.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 26000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "*/*", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:28 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"24234c1c81b3948758c1a0be8e5a65386ca94c52\"", + "kibana.log.meta.req.headers.origin": "http://localhost:5601", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 44595, + "message": "GET /ui/fonts/open_sans/open_sans_v15_latin_600.woff2 304 26ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/ui/fonts/open_sans/open_sans_v15_latin_600.woff2", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 34000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"4f29178ca608fa80e8dd4574ba430d2e1c35c696-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 45515, + "message": "GET /plugins/kibana/assets/app_index_pattern.svg 304 34ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_index_pattern.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 44000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:26 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"55ba19c1c215bd5631cd99fca8f5792acc0a7296-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 46433, + "message": "GET /plugins/kibana/assets/app_saved_objects.svg 304 44ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/kibana/assets/app_saved_objects.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 14000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:56:42 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"ae65d07bcf6e13b041a12384c8a3219c2a1e3f1c-gzip\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 47351, + "message": "GET /plugins/watcher/assets/app_watches.svg 304 14ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/plugins/watcher/assets/app_watches.svg", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + }, + { + "@timestamp": "2018-05-09T10:57:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.duration": 5000000, + "event.module": "kibana", + "fileset.name": "log", + "http.request.method": "get", + "http.request.referrer": "http://localhost:5601/app/kibana", + "http.response.body.bytes": 9, + "http.response.status_code": 304, + "input.type": "log", + "kibana.log.meta.req.headers.accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "kibana.log.meta.req.headers.accept-encoding": "gzip, deflate, br", + "kibana.log.meta.req.headers.accept-language": "en-US,en;q=0.9,de;q=0.8", + "kibana.log.meta.req.headers.connection": "keep-alive", + "kibana.log.meta.req.headers.host": "localhost:5601", + "kibana.log.meta.req.headers.if-modified-since": "Thu, 03 May 2018 09:45:28 GMT", + "kibana.log.meta.req.headers.if-none-match": "\"13b869be5df4bdc56920edc16a28e67a7c08203b\"", + "kibana.log.meta.req.userAgent": "127.0.0.1", + "kibana.log.meta.type": "response", + "kibana.log.tags": [], + "log.offset": 48259, + "message": "GET /ui/favicons/favicon-16x16.png 304 5ms - 9.0B", + "process.pid": 69410, + "service.name": [ + "kibana" + ], + "service.type": "kibana", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/ui/favicons/favicon-16x16.png", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" + } +] \ No newline at end of file diff --git a/filebeat/module/kibana/log/test/log.verbose.624.log-expected.json b/filebeat/module/kibana/log/test/log.verbose.624.log-expected.json new file mode 100644 index 000000000000..e197699a0095 --- /dev/null +++ b/filebeat/module/kibana/log/test/log.verbose.624.log-expected.json @@ -0,0 +1,2243 @@ +[ + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/node_modules/x-pack", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 0, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/node_modules/x-pack", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.load.concurrents.5601": 0, + "kibana.log.meta.load.sockets.http.total": 0, + "kibana.log.meta.load.sockets.https.total": 0, + "kibana.log.meta.os.load": [ + 4.75537109375, + 5.1513671875, + 4.4111328125 + ], + "kibana.log.meta.os.mem.free": 101990400, + "kibana.log.meta.os.mem.total": 17179869184, + "kibana.log.meta.os.uptime": 622892, + "kibana.log.meta.proc.delay": 1.456926941871643, + "kibana.log.meta.proc.mem.external": 50628, + "kibana.log.meta.proc.mem.heapTotal": 209911808, + "kibana.log.meta.proc.mem.heapUsed": 119288176, + "kibana.log.meta.proc.mem.rss": 236576768, + "kibana.log.meta.proc.uptime": 22.791, + "kibana.log.meta.type": "ops", + "kibana.log.tags": [], + "log.offset": 276, + "message": "memory: 113.8MB uptime: 0:00:23 load: [4.76 5.15 4.41] delay: 1.457", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/console", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 799, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/console", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/elasticsearch", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 1085, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/input_control_vis", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 1383, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/input_control_vis", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/kbn_doc_views", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 1689, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/kbn_doc_views", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/kbn_vislib_vis_types", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 1987, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/kbn_vislib_vis_types", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 2299, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/markdown_vis", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 2583, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/markdown_vis", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/metric_vis", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 2879, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/metric_vis", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/metrics", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 3171, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/metrics", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/region_map", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 3457, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/region_map", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/spy_modes", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 3749, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/spy_modes", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/state_session_storage_redirect", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 4039, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/state_session_storage_redirect", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/status_page", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 4371, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/status_page", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/table_vis", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 4665, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/table_vis", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/tagcloud", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 4955, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/tagcloud", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/tile_map", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 5243, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/tile_map", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/timelion", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 5531, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/timelion", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:58:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.path": "/Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/vega", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 5819, + "message": "Found plugin at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/src/core_plugins/vega", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "debug", + "optimize" + ], + "log.offset": 6099, + "message": "All bundles are cached and ready to go!", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.config.@elastic/eslint-import-resolver-kibana.projectRoot": false, + "kibana.log.meta.plugin.name": "kibana", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 6242, + "message": "Initializing plugin kibana@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:kibana@6.3.0", + "info" + ], + "log.offset": 6498, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "elasticsearch", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 6741, + "message": "Initializing plugin elasticsearch@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:elasticsearch@6.3.0", + "info" + ], + "log.offset": 6937, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:xpack_main@6.3.0", + "info" + ], + "log.offset": 9719, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:searchprofiler@6.3.0", + "info" + ], + "log.offset": 12502, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:ml@6.3.0", + "info" + ], + "log.offset": 15277, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "kbn_vislib_vis_types", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 15538, + "message": "Initializing plugin kbn_vislib_vis_types@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:tilemap@6.3.0", + "info" + ], + "log.offset": 18255, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:watcher@6.3.0", + "info" + ], + "log.offset": 21028, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:license_management@6.3.0", + "info" + ], + "log.offset": 23812, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:index_management@6.3.0", + "info" + ], + "log.offset": 26583, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "input_control_vis", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 26836, + "message": "Initializing plugin input_control_vis@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "kbn_doc_views", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 27040, + "message": "Initializing plugin kbn_doc_views@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "markdown_vis", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 27236, + "message": "Initializing plugin markdown_vis@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "metric_vis", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 27430, + "message": "Initializing plugin metric_vis@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "region_map", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 27620, + "message": "Initializing plugin region_map@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "spy_modes", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 27810, + "message": "Initializing plugin spy_modes@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.description": "When using the state:storeInSessionStorage setting with the short-urls, we need some way to get the full URL's hashed states into sessionStorage, this app will grab the URL from the kbn-initial-state and and put the URL hashed states into sessionStorage before redirecting the user.", + "kibana.log.meta.plugin.name": "state_session_storage_redirect", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 27998, + "message": "Initializing plugin state_session_storage_redirect@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "status_page", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 28527, + "message": "Initializing plugin status_page@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "table_vis", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 28719, + "message": "Initializing plugin table_vis@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "tagcloud", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 28907, + "message": "Initializing plugin tagcloud@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.name": "tile_map", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 29093, + "message": "Initializing plugin tile_map@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.author": "Rashid Khan ", + "kibana.log.meta.plugin.name": "timelion", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 29279, + "message": "Initializing plugin timelion@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:timelion@6.3.0", + "info" + ], + "log.offset": 29508, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:graph@6.3.0", + "info" + ], + "log.offset": 32258, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:monitoring@6.3.0", + "info" + ], + "log.offset": 35032, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:security@6.3.0", + "info" + ], + "log.offset": 37787, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "security", + "warning" + ], + "log.offset": 38054, + "message": "Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "security", + "warning" + ], + "log.offset": 38326, + "message": "Session cookies will be transmitted over insecure connections. This is not recommended.", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:grokdebugger@6.3.0", + "info" + ], + "log.offset": 41031, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:dashboard_mode@6.3.0", + "info" + ], + "log.offset": 43816, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:logstash@6.3.0", + "info" + ], + "log.offset": 46575, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:apm@6.3.0", + "info" + ], + "log.offset": 49345, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.author": "Boaz Leskes ", + "kibana.log.meta.plugin.contributors": [ + "Spencer Alger " + ], + "kibana.log.meta.plugin.name": "console", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 52090, + "message": "Initializing plugin console@6.3.0", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:console@6.3.0", + "info" + ], + "log.offset": 52374, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:console_extensions@6.3.0", + "info" + ], + "log.offset": 55136, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.author": "Chris Cowan", + "kibana.log.meta.plugin.name": "metrics", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 55391, + "message": "Initializing plugin metrics@6.3.0", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:metrics@6.3.0", + "info" + ], + "log.offset": 55615, + "message": "Status changed from uninitialized to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.plugin.author": "Yuri Astrakhan", + "kibana.log.meta.plugin.name": "vega", + "kibana.log.meta.plugin.version": "kibana", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugins", + "debug" + ], + "log.offset": 55859, + "message": "Initializing plugin vega@kibana", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "debug", + "exportTypes" + ], + "log.offset": 58589, + "message": "Found exportType at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/node_modules/x-pack/plugins/reporting/export_types/csv/server/index.js", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:01.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "debug", + "exportTypes" + ], + "log.offset": 58853, + "message": "Found exportType at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/node_modules/x-pack/plugins/reporting/export_types/printable_pdf/server/index.js", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "warning" + ], + "log.offset": 59127, + "message": "Generating a random key for xpack.reporting.encryptionKey. To prevent pending reports from failing on restart, please set xpack.reporting.encryptionKey in kibana.yml", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "debug" + ], + "log.offset": 59399, + "message": "Browser type: phantom", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "uninitialized", + "kibana.log.meta.prevState": "uninitialized", + "kibana.log.meta.type": "log", + "kibana.log.state": "yellow", + "kibana.log.tags": [ + "status", + "plugin:reporting@6.3.0", + "info" + ], + "log.offset": 59525, + "message": "Status changed from uninitialized to yellow - Waiting for Elasticsearch", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "debug" + ], + "log.offset": 59793, + "message": "Running on os \"darwin\", distribution \"undefined\", release \"undefined\"", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "debug" + ], + "log.offset": 59973, + "message": "Browser installed at /Users/ruflin/Downloads/6.3/kibana-6.3.0-darwin-x86_64/data/phantomjs-2.1.1-macosx/bin/phantomjs", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "worker", + "debug" + ], + "log.offset": 60195, + "message": "CSV: Registering CSV worker", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "esqueue", + "worker", + "debug" + ], + "log.offset": 60336, + "message": "jgyzr8b31hu86bfe3bf3pw9w - Created worker for job type csv", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "worker", + "debug" + ], + "log.offset": 60518, + "message": "PDF: Registering PDF worker", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "reporting", + "esqueue", + "worker", + "debug" + ], + "log.offset": 60659, + "message": "jgyzr8b81hu86bfe3bf6jd27 - Created worker for job type printable_pdf", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "server", + "uuid", + "uuid" + ], + "log.offset": 60851, + "message": "Resuming persistent Kibana instance UUID: a41ec841-89ba-4872-a15a-865858f9680e", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "listening", + "info" + ], + "log.offset": 61037, + "message": "Server running at http://localhost:5601", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 61180, + "message": "Checking Elasticsearch version", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:elasticsearch@6.3.0", + "info" + ], + "log.offset": 61312, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "license", + "debug", + "xpack" + ], + "log.offset": 61560, + "message": "Calling [data] Elasticsearch _xpack API. Polling frequency: 30001", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "license", + "info", + "xpack" + ], + "log.offset": 61736, + "message": "Imported license information from Elasticsearch for the [data] cluster: mode: basic | status: active | expiry date: Invalid date", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "monitoring-ui", + "es-client" + ], + "log.offset": 61974, + "message": "config sourced from: production cluster (http://localhost:9200)", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:xpack_main@6.3.0", + "info" + ], + "log.offset": 62150, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:searchprofiler@6.3.0", + "info" + ], + "log.offset": 62395, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:ml@6.3.0", + "info" + ], + "log.offset": 62644, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:tilemap@6.3.0", + "info" + ], + "log.offset": 62881, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:watcher@6.3.0", + "info" + ], + "log.offset": 63123, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:graph@6.3.0", + "info" + ], + "log.offset": 63365, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:security@6.3.0", + "info" + ], + "log.offset": 63605, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:grokdebugger@6.3.0", + "info" + ], + "log.offset": 63848, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:logstash@6.3.0", + "info" + ], + "log.offset": 64095, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.prevMsg": "Waiting for Elasticsearch", + "kibana.log.meta.prevState": "yellow", + "kibana.log.meta.type": "log", + "kibana.log.state": "green", + "kibana.log.tags": [ + "status", + "plugin:reporting@6.3.0", + "info" + ], + "log.offset": 64338, + "message": "Status changed from yellow to green - Ready", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "license", + "debug", + "xpack" + ], + "log.offset": 64582, + "message": "Calling [monitoring] Elasticsearch _xpack API. Polling frequency: 30001", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "info", + "monitoring-ui", + "kibana-monitoring" + ], + "log.offset": 64764, + "message": "Starting all Kibana monitoring collectors", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "debug", + "monitoring-ui", + "kibana-monitoring" + ], + "log.offset": 64933, + "message": "Initializing kibana_stats collector", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "debug", + "monitoring-ui", + "kibana-monitoring" + ], + "log.offset": 65097, + "message": "Setting logger for kibana_stats collector", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "debug", + "monitoring-ui", + "kibana-monitoring" + ], + "log.offset": 65267, + "message": "Setting logger for kibana_settings collector", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "debug", + "monitoring-ui", + "kibana-monitoring" + ], + "log.offset": 65440, + "message": "Fetching data from kibana_stats collector", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "debug", + "monitoring-ui", + "kibana-monitoring" + ], + "log.offset": 65610, + "message": "Uploading bulk Kibana monitoring payload", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "license", + "info", + "xpack" + ], + "log.offset": 65779, + "message": "Imported license information from Elasticsearch for the [monitoring] cluster: mode: basic | status: active | expiry date: Invalid date", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:04.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.load.concurrents.5601": 0, + "kibana.log.meta.load.sockets.http.169.254.169.254:80:": 1, + "kibana.log.meta.load.sockets.http.total": 1, + "kibana.log.meta.load.sockets.https.total": 0, + "kibana.log.meta.os.load": [ + 4.85498046875, + 5.1650390625, + 4.42041015625 + ], + "kibana.log.meta.os.mem.free": 60276736, + "kibana.log.meta.os.mem.total": 17179869184, + "kibana.log.meta.os.uptime": 622897, + "kibana.log.meta.proc.delay": 0.5321840047836304, + "kibana.log.meta.proc.mem.external": 1608020, + "kibana.log.meta.proc.mem.heapTotal": 218456064, + "kibana.log.meta.proc.mem.heapUsed": 141104080, + "kibana.log.meta.proc.mem.rss": 249733120, + "kibana.log.meta.proc.uptime": 27.791, + "kibana.log.meta.type": "ops", + "kibana.log.tags": [], + "log.offset": 66023, + "message": "memory: 134.6MB uptime: 0:00:28 load: [4.85 5.17 4.42] delay: 0.532", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:04.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "debug", + "monitoring-ui", + "kibana-monitoring" + ], + "log.offset": 66573, + "message": "Received Kibana Ops event data", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + }, + { + "@timestamp": "2018-05-09T10:59:04.000Z", + "ecs.version": "1.0.0", + "event.dataset": "kibana.log", + "event.module": "kibana", + "fileset.name": "log", + "input.type": "log", + "kibana.log.meta.type": "log", + "kibana.log.tags": [ + "plugin", + "debug" + ], + "log.offset": 66732, + "message": "Checking Elasticsearch version", + "process.pid": 69776, + "service.name": [ + "kibana" + ], + "service.type": "kibana" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/error/test/mysql-darwin-brew-5.7.10.log-expected.json b/filebeat/module/mysql/error/test/mysql-darwin-brew-5.7.10.log-expected.json new file mode 100644 index 000000000000..c192d4f0ed16 --- /dev/null +++ b/filebeat/module/mysql/error/test/mysql-darwin-brew-5.7.10.log-expected.json @@ -0,0 +1,1297 @@ +[ + { + "@timestamp": "2016-12-09T13:08:33.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 0, + "message": "mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.335Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 92, + "message": "TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.335Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 282, + "message": "Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.336Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 478, + "message": "/usr/local/Cellar/mysql/5.7.10/bin/mysqld (mysqld 5.7.10) starting as process 61571 ...", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.345Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 603, + "message": "Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.351Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 742, + "message": "InnoDB: Mutexes and rw_locks use GCC atomic builtins", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.351Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 832, + "message": "InnoDB: Uses event mutexes", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.351Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 896, + "message": "InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.351Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1004, + "message": "InnoDB: Compressed tables use zlib 1.2.3", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.352Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1082, + "message": "InnoDB: Number of pools: 1", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.354Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1146, + "message": "InnoDB: Using CPU crc32 instructions", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.366Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1220, + "message": "InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.379Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1343, + "message": "InnoDB: Completed initialization of buffer pool", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.401Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1428, + "message": "InnoDB: Highest supported file format is Barracuda.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.402Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1517, + "message": "InnoDB: Log scan progressed past the checkpoint lsn 2498863", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.402Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1614, + "message": "InnoDB: Doing recovery: scanned up to log sequence number 2498872", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.402Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1717, + "message": "InnoDB: Doing recovery: scanned up to log sequence number 2498872", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.402Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1820, + "message": "InnoDB: Database was not shutdown normally!", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.402Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1901, + "message": "InnoDB: Starting crash recovery.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.549Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1971, + "message": "InnoDB: Removed temporary tablespace data file: \"ibtmp1\"", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.549Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2065, + "message": "InnoDB: Creating shared tablespace for temporary tables", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.549Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2158, + "message": "InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.585Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2292, + "message": "InnoDB: File './ibtmp1' size is now 12 MB.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.588Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2372, + "message": "InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.588Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2492, + "message": "InnoDB: 32 non-redo rollback segment(s) are active.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.588Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2581, + "message": "InnoDB: Waiting for purge to start", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.641Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2653, + "message": "InnoDB: 5.7.10 started; log sequence number 2498872", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.642Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2742, + "message": "InnoDB: Loading buffer pool(s) from /usr/local/var/mysql/ib_buffer_pool", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.642Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2851, + "message": "InnoDB: not started", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.643Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2908, + "message": "Plugin 'FEDERATED' is disabled.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.652Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2977, + "message": "InnoDB: Buffer pool(s) load completed at 161209 13:08:33", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.662Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3071, + "message": "Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.662Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3217, + "message": "Skipping generation of SSL certificates as certificate files are present in data directory.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.665Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 3346, + "message": "CA certificate ca.pem is self signed.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.665Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3424, + "message": "Skipping generation of RSA key pair as key files are present in data directory.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.698Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3541, + "message": "Server hostname (bind-address): '*'; port: 3306", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.699Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3626, + "message": "IPv6 is available.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.699Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3682, + "message": " - '::' resolves to '::';", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.699Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3746, + "message": "Server socket created on IP: '::'.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.784Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3818, + "message": "Event Scheduler: Loaded 0 events", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T12:08:33.784Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3888, + "message": "/usr/local/Cellar/mysql/5.7.10/bin/mysqld: ready for connections.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3991, + "message": "Version: '5.7.10' socket: '/tmp/mysql.sock' port: 3306 Homebrew", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T22:21:02.443Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4058, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 772568ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T22:36:49.017Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4232, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 898642ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T23:37:34.021Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4406, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3596603ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T00:17:54.198Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4581, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 2371678ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T01:18:38.017Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4756, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3597590ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T01:39:00.017Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4931, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 1173583ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T02:39:45.021Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5106, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3597610ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T02:49:08.015Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5281, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515469ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T03:24:15.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5455, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 2059611ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T04:25:00.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5630, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3597614ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T04:34:24.021Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5805, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515589ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T04:39:18.022Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5979, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 246613ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T05:40:03.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6153, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3598614ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T06:40:48.025Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6328, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3595608ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T06:45:55.018Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6503, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 258594ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T07:46:40.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6677, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3598632ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T07:56:04.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6852, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515603ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T08:56:49.390Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 7026, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3597607ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T09:06:11.019Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 7201, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515633ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T10:06:56.015Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 7375, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3597617ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T10:16:18.022Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 7550, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 514638ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T11:17:02.165Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 7724, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3595614ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T11:30:44.018Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 7899, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 773594ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T12:03:24.017Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 8073, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 1912617ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T12:06:40.015Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 8248, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 150375ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T12:24:37.025Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 8422, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 1030636ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T13:25:22.017Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 8597, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3596603ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T13:39:05.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 8772, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 774598ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T14:39:50.178Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 8946, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3597787ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T14:49:14.023Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 9121, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515462ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T15:49:59.022Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 9295, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3597628ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T15:59:23.014Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 9470, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515609ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T17:00:08.019Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 9644, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3598607ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T17:09:30.026Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 9819, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515633ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T17:48:20.017Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 9993, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 2282610ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T18:00:05.183Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 10168, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515227ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T18:54:13.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 10342, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3200608ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T20:13:03.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 10517, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3089523ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T20:50:11.201Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 10692, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 2180623ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T20:53:54.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 10867, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 176629ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T21:03:18.023Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 11041, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 516622ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T22:04:03.021Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 11215, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3598602ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T22:13:57.015Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 11390, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 545611ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T22:49:59.020Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 11564, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 2114631ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-10T23:12:12.023Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 11739, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 1287614ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T00:12:57.015Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 11914, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3595581ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T00:26:41.053Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 12089, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 773622ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T00:47:44.015Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 12263, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 1215572ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T00:49:50.017Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 12438, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 79642ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T01:20:40.031Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 12611, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 1803651ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T02:21:24.021Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 12786, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3595607ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T02:26:30.015Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 12961, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 257596ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T03:18:55.018Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 13135, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3097591ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T04:15:14.022Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 13310, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3331614ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T04:20:52.016Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 13485, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 289611ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T04:25:56.035Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 13659, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 257653ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T05:26:41.020Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 13833, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 3598198ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-11T05:36:05.024Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 14008, + "message": "InnoDB: page_cleaner: 1000ms intended loop took 515624ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)", + "mysql.thread_id": 0, + "service.type": "mysql" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/error/test/mysql-ubuntu-5.5.53.log-expected.json b/filebeat/module/mysql/error/test/mysql-ubuntu-5.5.53.log-expected.json new file mode 100644 index 000000000000..6bb6acde44e3 --- /dev/null +++ b/filebeat/module/mysql/error/test/mysql-ubuntu-5.5.53.log-expected.json @@ -0,0 +1,1107 @@ +[ + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 0, + "message": "Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 191, + "message": "Plugin 'FEDERATED' is disabled.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 246, + "message": "InnoDB: The InnoDB memory heap is disabled", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 305, + "message": "InnoDB: Mutexes and rw_locks use GCC atomic builtins", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 374, + "message": "InnoDB: Compressed tables use zlib 1.2.3.4", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 433, + "message": "InnoDB: Initializing buffer pool, size = 128.0M", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 497, + "message": "InnoDB: Completed initialization of buffer pool", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 561, + "message": "InnoDB: The first specified data file ./ibdata1 did not exist:", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 624, + "message": "InnoDB: a new database to be created!", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 662, + "message": " InnoDB: Setting file ./ibdata1 size to 10 MB", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 724, + "message": "InnoDB: Database physically writes the file full: wait...", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 782, + "message": " InnoDB: Log file ./ib_logfile0 did not exist: new to be created", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 863, + "message": "InnoDB: Setting log file ./ib_logfile0 size to 5 MB", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 915, + "message": "InnoDB: Database physically writes the file full: wait...", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 973, + "message": " InnoDB: Log file ./ib_logfile1 did not exist: new to be created", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1054, + "message": "InnoDB: Setting log file ./ib_logfile1 size to 5 MB", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1106, + "message": "InnoDB: Database physically writes the file full: wait...", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1164, + "message": "InnoDB: Doublewrite buffer not found: creating new", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1215, + "message": "InnoDB: Doublewrite buffer created", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1250, + "message": "InnoDB: 127 rollback segment(s) active.", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1290, + "message": "InnoDB: Creating foreign key constraint system tables", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1344, + "message": "InnoDB: Foreign key constraint system tables created", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1397, + "message": " InnoDB: Waiting for the background threads to start", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1466, + "message": "InnoDB: 5.5.53 started; log sequence number 0", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1528, + "message": " InnoDB: Starting shutdown...", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1574, + "message": " InnoDB: Shutdown completed; log sequence number 1595675", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 1647, + "message": "Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 1838, + "message": "Plugin 'FEDERATED' is disabled.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1893, + "message": "InnoDB: The InnoDB memory heap is disabled", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 1952, + "message": "InnoDB: Mutexes and rw_locks use GCC atomic builtins", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2021, + "message": "InnoDB: Compressed tables use zlib 1.2.3.4", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2080, + "message": "InnoDB: Initializing buffer pool, size = 128.0M", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2144, + "message": "InnoDB: Completed initialization of buffer pool", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2208, + "message": "InnoDB: highest supported file format is Barracuda.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:52.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2276, + "message": " InnoDB: Waiting for the background threads to start", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2345, + "message": "InnoDB: 5.5.53 started; log sequence number 1595675", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2413, + "message": "ERROR: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE user ADD column Show_view_priv enum('N','Y') CHARACTER SET utf8 NOT ' at line 1", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 2653, + "message": "Aborting", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2687, + "message": " InnoDB: Starting shutdown...", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 2733, + "message": " InnoDB: Shutdown completed; log sequence number 1595675", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 2806, + "message": "/usr/sbin/mysqld: Shutdown complete", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 2866, + "message": "Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3057, + "message": "Plugin 'FEDERATED' is disabled.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3112, + "message": "InnoDB: The InnoDB memory heap is disabled", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3171, + "message": "InnoDB: Mutexes and rw_locks use GCC atomic builtins", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3240, + "message": "InnoDB: Compressed tables use zlib 1.2.3.4", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3299, + "message": "InnoDB: Initializing buffer pool, size = 128.0M", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3363, + "message": "InnoDB: Completed initialization of buffer pool", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3427, + "message": "InnoDB: highest supported file format is Barracuda.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:53.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3495, + "message": " InnoDB: Waiting for the background threads to start", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:54.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3564, + "message": "InnoDB: 5.5.53 started; log sequence number 1595675", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:54.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3632, + "message": " InnoDB: Starting shutdown...", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 3678, + "message": "Aborting", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3712, + "message": " InnoDB: Starting shutdown...", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 3758, + "message": " InnoDB: Shutdown completed; log sequence number 1595675", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 3831, + "message": "/usr/sbin/mysqld: Shutdown complete", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 3891, + "message": "Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4082, + "message": "Plugin 'FEDERATED' is disabled.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4137, + "message": "InnoDB: The InnoDB memory heap is disabled", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4196, + "message": "InnoDB: Mutexes and rw_locks use GCC atomic builtins", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4265, + "message": "InnoDB: Compressed tables use zlib 1.2.3.4", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4324, + "message": "InnoDB: Initializing buffer pool, size = 128.0M", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4388, + "message": "InnoDB: Completed initialization of buffer pool", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4452, + "message": "InnoDB: highest supported file format is Barracuda.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4520, + "message": " InnoDB: Waiting for the background threads to start", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4589, + "message": "InnoDB: 5.5.53 started; log sequence number 1595675", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4657, + "message": "Server hostname (bind-address): '127.0.0.1'; port: 3306", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4736, + "message": " - '127.0.0.1' resolves to '127.0.0.1';", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4800, + "message": "Server socket created on IP: '127.0.0.1'.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4865, + "message": "Event Scheduler: Loaded 0 events", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:18:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 4921, + "message": "/usr/sbin/mysqld: ready for connections.", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 4985, + "message": "Version: '5.5.53-0ubuntu0.12.04.1' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5081, + "message": "/usr/sbin/mysqld: Normal shutdown", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5139, + "message": "Event Scheduler: Purging the queue. 0 events", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 5207, + "message": " InnoDB: Starting shutdown...", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 5253, + "message": " InnoDB: Shutdown completed; log sequence number 1595685", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5326, + "message": "/usr/sbin/mysqld: Shutdown complete", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 5386, + "message": "Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 5577, + "message": "Plugin 'FEDERATED' is disabled.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 5632, + "message": "InnoDB: The InnoDB memory heap is disabled", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 5691, + "message": "InnoDB: Mutexes and rw_locks use GCC atomic builtins", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 5760, + "message": "InnoDB: Compressed tables use zlib 1.2.3.4", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 5819, + "message": "InnoDB: Initializing buffer pool, size = 128.0M", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 5883, + "message": "InnoDB: Completed initialization of buffer pool", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 5947, + "message": "InnoDB: highest supported file format is Barracuda.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:57.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6015, + "message": " InnoDB: Waiting for the background threads to start", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6084, + "message": "InnoDB: 5.5.53 started; log sequence number 1595685", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6152, + "message": "Server hostname (bind-address): '127.0.0.1'; port: 3306", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6231, + "message": " - '127.0.0.1' resolves to '127.0.0.1';", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6295, + "message": "Server socket created on IP: '127.0.0.1'.", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6360, + "message": "Event Scheduler: Loaded 0 events", + "service.type": "mysql" + }, + { + "@timestamp": "2016-12-09T14:37:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Note", + "log.offset": 6416, + "message": "/usr/sbin/mysqld: ready for connections.", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6480, + "message": "Version: '5.5.53-0ubuntu0.12.04.1-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6580, + "message": "vagrant@precise32:~$ cat /var/log/mysql.log | grep phisically", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6642, + "message": "vagrant@precise32:~$ cat /var/log/mysql.log | grep physi", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6699, + "message": "vagrant@precise32:~$ cat /var/log/mysql.log | physically", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6756, + "message": "physically: command not found", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6786, + "message": "vagrant@precise32:~$ cat /var/log/mysql.log | grep physically", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6848, + "message": "vagrant@precise32:~$ less /var/log/mysql.", + "service.type": "mysql" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.offset": 6890, + "message": "mysql.err mysql.log", + "service.type": "mysql" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/error/test/mysql-ubuntu-8.0.15.log-expected.json b/filebeat/module/mysql/error/test/mysql-ubuntu-8.0.15.log-expected.json new file mode 100644 index 000000000000..863d76ee7ba0 --- /dev/null +++ b/filebeat/module/mysql/error/test/mysql-ubuntu-8.0.15.log-expected.json @@ -0,0 +1,158 @@ +[ + { + "@timestamp": "2019-03-24T13:44:25.484Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "System", + "log.offset": 0, + "message": "[MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.15) initializing of server in progress as process 1640", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:27.924Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 144, + "message": "[MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.", + "mysql.thread_id": 5, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:29.065Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "System", + "log.offset": 320, + "message": "[MY-013170] [Server] /usr/sbin/mysqld (mysqld 8.0.15) initializing of server has completed", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:31.085Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "System", + "log.offset": 450, + "message": "[MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 1688", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:31.533Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 568, + "message": "[MY-010068] [Server] CA certificate ca.pem is self signed.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:31.534Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 667, + "message": "[MY-011810] [Server] Insecure configuration for --pid-file: Location '/tmp' in the path is accessible to all OS users. Consider choosing a different directory.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:31.555Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "System", + "log.offset": 867, + "message": "[MY-013172] [Server] Received SHUTDOWN from user boot. Shutting down mysqld (Version: 8.0.15).", + "mysql.thread_id": 6, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:33.236Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "System", + "log.offset": 1001, + "message": "[MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15) MySQL Community Server - GPL.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:34.072Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "System", + "log.offset": 1144, + "message": "[MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 1834", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:34.406Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "Warning", + "log.offset": 1262, + "message": "[MY-010068] [Server] CA certificate ca.pem is self signed.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:34.420Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "System", + "log.offset": 1361, + "message": "[MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.15' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.", + "mysql.thread_id": 0, + "service.type": "mysql" + }, + { + "@timestamp": "2019-03-24T13:44:34.572Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.error", + "event.module": "mysql", + "fileset.name": "error", + "input.type": "log", + "log.level": "System", + "log.offset": 1562, + "message": "[MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060", + "mysql.thread_id": 0, + "service.type": "mysql" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/slowlog/test/mariadb-10.3.13.log-expected.json b/filebeat/module/mysql/slowlog/test/mariadb-10.3.13.log-expected.json new file mode 100644 index 000000000000..d5d0b7a5f174 --- /dev/null +++ b/filebeat/module/mysql/slowlog/test/mariadb-10.3.13.log-expected.json @@ -0,0 +1,39 @@ +[ + { + "@timestamp": "2019-03-24T16:03:00.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 2461578000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 230, + "mysql.slowlog.bytes_sent": 319, + "mysql.slowlog.current_user": "root", + "mysql.slowlog.filesort": true, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": false, + "mysql.slowlog.full_scan": true, + "mysql.slowlog.lock_time.sec": 0.000196, + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.priority_queue": true, + "mysql.slowlog.query": "SELECT last_name, MAX(salary) AS salary FROM employees\n INNER JOIN salaries ON employees.emp_no = salaries.emp_no\n GROUP BY last_name\n ORDER BY salary DESC\n LIMIT 10;", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 0, + "mysql.slowlog.rows_examined": 3145718, + "mysql.slowlog.rows_sent": 10, + "mysql.slowlog.schema": "employees", + "mysql.slowlog.tmp_disk_tables": "0", + "mysql.slowlog.tmp_table": true, + "mysql.slowlog.tmp_table_on_disk": false, + "mysql.slowlog.tmp_table_sizes": 4026528, + "mysql.slowlog.tmp_tables": 1, + "mysql.thread_id": "37", + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "root" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/slowlog/test/mysql-darwin-brew-5.7.10.log-expected.json b/filebeat/module/mysql/slowlog/test/mysql-darwin-brew-5.7.10.log-expected.json new file mode 100644 index 000000000000..11803d569a3f --- /dev/null +++ b/filebeat/module/mysql/slowlog/test/mysql-darwin-brew-5.7.10.log-expected.json @@ -0,0 +1,24 @@ +[ + { + "@timestamp": "2016-12-12T11:54:16.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 11004467000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 210, + "mysql.slowlog.current_user": "root", + "mysql.slowlog.lock_time.sec": 0.0, + "mysql.slowlog.query": "select sleep(11);", + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 1, + "mysql.thread_id": 2, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "root" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/slowlog/test/mysql-debian-5.7.17.log-expected.json b/filebeat/module/mysql/slowlog/test/mysql-debian-5.7.17.log-expected.json new file mode 100644 index 000000000000..c0fa2b8c14a2 --- /dev/null +++ b/filebeat/module/mysql/slowlog/test/mysql-debian-5.7.17.log-expected.json @@ -0,0 +1,71 @@ +[ + { + "@timestamp": "2017-04-28T09:07:39.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 4071491000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 0, + "mysql.slowlog.current_user": "apphost", + "mysql.slowlog.lock_time.sec": 0.000212, + "mysql.slowlog.query": "SELECT mcu.mcu_guid, mcu.cus_guid, mcu.mcu_url, mcu.mcu_crawlelements, mcu.mcu_order, GROUP_CONCAT(mca.mca_guid SEPARATOR \";\") as mca_guid\n FROM kat_mailcustomerurl mcu, kat_customer cus, kat_mailcampaign mca\n WHERE cus.cus_guid = mcu.cus_guid\n AND cus.pro_code = 'CYB'\n AND cus.cus_offline = 0\n AND mca.cus_guid = cus.cus_guid\n AND (mcu.mcu_date IS NULL OR mcu.mcu_date < CURDATE())\n AND mcu.mcu_crawlelements IS NOT NULL\n GROUP BY mcu.mcu_guid\n ORDER BY mcu.mcu_order ASC\n LIMIT 1000;", + "mysql.slowlog.rows_examined": 1489615, + "mysql.slowlog.rows_sent": 1000, + "mysql.thread_id": 10997316, + "service.type": "mysql", + "source.domain": "apphost", + "source.ip": "1.1.1.1", + "user.name": "apphost" + }, + { + "@timestamp": "2017-04-28T09:16:30.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 10346539000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 907, + "mysql.slowlog.current_user": "apphost", + "mysql.slowlog.lock_time.sec": 3.6e-05, + "mysql.slowlog.query": "call load_stats(1, '2017-04-28 00:00:00');", + "mysql.slowlog.rows_examined": 4751313, + "mysql.slowlog.rows_sent": 0, + "mysql.thread_id": 10999834, + "service.type": "mysql", + "source.domain": "apphost", + "source.ip": "1.1.1.1", + "user.name": "apphost" + }, + { + "@timestamp": "2017-04-28T09:31:31.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 10508030000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 1158, + "mysql.slowlog.current_user": "apphost", + "mysql.slowlog.lock_time.sec": 3.4e-05, + "mysql.slowlog.query": "call load_stats(1, '2017-04-28 00:00:00');", + "mysql.slowlog.rows_examined": 4754675, + "mysql.slowlog.rows_sent": 0, + "mysql.thread_id": 11004208, + "service.type": "mysql", + "source.domain": "apphost", + "source.ip": "1.1.1.1", + "user.name": "apphost" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/slowlog/test/mysql-debian-5.7.19.log-expected.json b/filebeat/module/mysql/slowlog/test/mysql-debian-5.7.19.log-expected.json new file mode 100644 index 000000000000..26f3d5ca2803 --- /dev/null +++ b/filebeat/module/mysql/slowlog/test/mysql-debian-5.7.19.log-expected.json @@ -0,0 +1,24 @@ +[ + { + "@timestamp": "2018-04-26T18:50:32.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 100000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 0, + "mysql.slowlog.current_user": "root", + "mysql.slowlog.lock_time.sec": 3.3e-05, + "mysql.slowlog.query": "SELECT intcol1,charcol1 FROM t1;", + "mysql.slowlog.rows_examined": 101, + "mysql.slowlog.rows_sent": 101, + "mysql.thread_id": 5, + "service.type": "mysql", + "source.ip": "172.17.0.11", + "user.name": "root" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/slowlog/test/mysql-ubuntu-5.5.53.log-expected.json b/filebeat/module/mysql/slowlog/test/mysql-ubuntu-5.5.53.log-expected.json new file mode 100644 index 000000000000..68a03e150829 --- /dev/null +++ b/filebeat/module/mysql/slowlog/test/mysql-ubuntu-5.5.53.log-expected.json @@ -0,0 +1,297 @@ +[ + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 153000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 206, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 6.1e-05, + "mysql.slowlog.query": "SELECT count(*) FROM mysql.user WHERE user='root' and password='';", + "mysql.slowlog.rows_examined": 5, + "mysql.slowlog.rows_sent": 1, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 2456000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 437, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 9.5e-05, + "mysql.slowlog.query": "select concat('select count(*) into @discard from `',\n TABLE_SCHEMA, '`.`', TABLE_NAME, '`')\n from information_schema.TABLES where ENGINE='MyISAM';", + "mysql.slowlog.rows_examined": 81, + "mysql.slowlog.rows_sent": 31, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 6278000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 775, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.000153, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`COLUMNS`;", + "mysql.slowlog.rows_examined": 808, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 262000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 1008, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.000204, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`EVENTS`;", + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 323000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 1238, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.000241, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`PARAMETERS`;", + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 7084000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 1472, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.000148, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`PARTITIONS`;", + "mysql.slowlog.rows_examined": 81, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 277000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 1707, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.000135, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`PLUGINS`;", + "mysql.slowlog.rows_examined": 23, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 254000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 1939, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.000159, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`PROCESSLIST`;", + "mysql.slowlog.rows_examined": 1, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 297000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 2174, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.000229, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`ROUTINES`;", + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 1676000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 2406, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.000156, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`TRIGGERS`;", + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:37:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 8782000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 2638, + "mysql.slowlog.current_user": "debian-sys-maint", + "mysql.slowlog.lock_time.sec": 0.001187, + "mysql.slowlog.query": "select count(*) into @discard from `information_schema`.`VIEWS`;", + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 0, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "debian-sys-maint" + }, + { + "@timestamp": "2016-12-09T14:39:02.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 2000268000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 2891, + "mysql.slowlog.current_user": "root", + "mysql.slowlog.lock_time.sec": 0.0, + "mysql.slowlog.query": "select sleep(2);", + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 1, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "root" + }, + { + "@timestamp": "2016-12-09T14:39:23.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 138000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 3072, + "mysql.slowlog.current_user": "root", + "mysql.slowlog.lock_time.sec": 5.6e-05, + "mysql.slowlog.query": "select * from general_log;", + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 0, + "mysql.slowlog.schema": "mysql", + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "root" + }, + { + "@timestamp": "2016-12-09T14:39:40.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 159000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 3274, + "mysql.slowlog.current_user": "root", + "mysql.slowlog.lock_time.sec": 5.9e-05, + "mysql.slowlog.query": "select * from user;", + "mysql.slowlog.rows_examined": 5, + "mysql.slowlog.rows_sent": 5, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "root" + } +] \ No newline at end of file diff --git a/filebeat/module/mysql/slowlog/test/percona-ubuntu-5.7.19.log-expected.json b/filebeat/module/mysql/slowlog/test/percona-ubuntu-5.7.19.log-expected.json new file mode 100644 index 000000000000..6eec9eb82700 --- /dev/null +++ b/filebeat/module/mysql/slowlog/test/percona-ubuntu-5.7.19.log-expected.json @@ -0,0 +1,338 @@ +[ + { + "@timestamp": "2018-11-16T06:25:56.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 10569000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 36, + "mysql.slowlog.bytes_sent": 180, + "mysql.slowlog.current_user": "check", + "mysql.slowlog.filesort": false, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": false, + "mysql.slowlog.full_scan": true, + "mysql.slowlog.killed": 0, + "mysql.slowlog.last_errno": 0, + "mysql.slowlog.lock_time.sec": 6.7e-05, + "mysql.slowlog.log_slow_rate_limit": 100, + "mysql.slowlog.log_slow_rate_type": "query", + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.query": "SHOW GLOBAL STATUS LIKE 'wsrep_local_state';", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 0, + "mysql.slowlog.rows_examined": 928, + "mysql.slowlog.rows_sent": 1, + "mysql.slowlog.tmp_disk_tables": "0", + "mysql.slowlog.tmp_table": true, + "mysql.slowlog.tmp_table_on_disk": false, + "mysql.slowlog.tmp_table_sizes": 0, + "mysql.slowlog.tmp_tables": 1, + "mysql.thread_id": 1098148226, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "check" + }, + { + "@timestamp": "2018-11-16T13:02:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 36112000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 645, + "mysql.slowlog.bytes_sent": 529, + "mysql.slowlog.current_user": "select", + "mysql.slowlog.filesort": false, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": false, + "mysql.slowlog.full_scan": false, + "mysql.slowlog.innodb.io_r_bytes": 0, + "mysql.slowlog.innodb.io_r_ops": 0, + "mysql.slowlog.innodb.io_r_wait.sec": 0.0, + "mysql.slowlog.innodb.pages_distinct": 3, + "mysql.slowlog.innodb.queue_wait.sec": 0.0, + "mysql.slowlog.innodb.rec_lock_wait.sec": 0.0, + "mysql.slowlog.killed": 0, + "mysql.slowlog.last_errno": 0, + "mysql.slowlog.lock_time.sec": 0.000165, + "mysql.slowlog.log_slow_rate_limit": 100, + "mysql.slowlog.log_slow_rate_type": "query", + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.query": "select config.id as id, config.active as active from config where config.id='123456';", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 0, + "mysql.slowlog.rows_examined": 1, + "mysql.slowlog.rows_sent": 1, + "mysql.slowlog.schema": "database", + "mysql.slowlog.tmp_disk_tables": "0", + "mysql.slowlog.tmp_table": false, + "mysql.slowlog.tmp_table_on_disk": false, + "mysql.slowlog.tmp_table_sizes": 0, + "mysql.slowlog.tmp_tables": 0, + "mysql.thread_id": 1101779094, + "service.type": "mysql", + "source.ip": "192.168.123.123", + "user.name": "select" + }, + { + "@timestamp": "2019-01-21T06:33:10.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 23385000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 1425, + "mysql.slowlog.bytes_sent": 20195, + "mysql.slowlog.current_user": "exporter", + "mysql.slowlog.filesort": false, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": false, + "mysql.slowlog.full_scan": true, + "mysql.slowlog.killed": 0, + "mysql.slowlog.last_errno": 0, + "mysql.slowlog.lock_time.sec": 3.9e-05, + "mysql.slowlog.log_slow_rate_limit": 100, + "mysql.slowlog.log_slow_rate_type": "query", + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.query": "SELECT EVENT_NAME, COUNT_STAR, SUM_TIMER_WAIT\n FROM performance_schema.events_waits_summary_global_by_event_name;", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 0, + "mysql.slowlog.rows_examined": 390, + "mysql.slowlog.rows_sent": 390, + "mysql.slowlog.tmp_disk_tables": "0", + "mysql.slowlog.tmp_table": false, + "mysql.slowlog.tmp_table_on_disk": false, + "mysql.slowlog.tmp_table_sizes": 0, + "mysql.slowlog.tmp_tables": 0, + "mysql.thread_id": 14366748, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "exporter" + }, + { + "@timestamp": "2019-01-21T06:34:30.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 10278000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 2119, + "mysql.slowlog.bytes_sent": 11, + "mysql.slowlog.current_user": "test", + "mysql.slowlog.filesort": false, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": false, + "mysql.slowlog.full_scan": false, + "mysql.slowlog.innodb.trx_id": "69B884E82", + "mysql.slowlog.killed": 0, + "mysql.slowlog.last_errno": 0, + "mysql.slowlog.lock_time.sec": 0.0, + "mysql.slowlog.log_slow_rate_limit": 100, + "mysql.slowlog.log_slow_rate_type": "query", + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.query": "commit;", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 0, + "mysql.slowlog.rows_examined": 0, + "mysql.slowlog.rows_sent": 0, + "mysql.slowlog.schema": "test", + "mysql.slowlog.tmp_disk_tables": "0", + "mysql.slowlog.tmp_table": false, + "mysql.slowlog.tmp_table_on_disk": false, + "mysql.slowlog.tmp_table_sizes": 0, + "mysql.slowlog.tmp_tables": 0, + "mysql.thread_id": 14349788, + "service.type": "mysql", + "source.ip": "192.168.123.123", + "user.name": "test" + }, + { + "@timestamp": "2019-01-21T06:35:33.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 14315000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 2719, + "mysql.slowlog.bytes_sent": 7131, + "mysql.slowlog.current_user": "exporter", + "mysql.slowlog.filesort": false, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": false, + "mysql.slowlog.full_scan": true, + "mysql.slowlog.killed": 0, + "mysql.slowlog.last_errno": 1370, + "mysql.slowlog.lock_time.sec": 9.5e-05, + "mysql.slowlog.log_slow_rate_limit": 100, + "mysql.slowlog.log_slow_rate_type": "query", + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.query": "SELECT\n TABLE_SCHEMA,\n TABLE_NAME,\n TABLE_TYPE,\n ifnull(ENGINE, 'NONE') as ENGINE,\n ifnull(VERSION, '0') as VERSION,\n ifnull(ROW_FORMAT, 'NONE') as ROW_FORMAT,\n ifnull(TABLE_ROWS, '0') as TABLE_ROWS,\n ifnull(DATA_LENGTH, '0') as DATA_LENGTH,\n ifnull(INDEX_LENGTH, '0') as INDEX_LENGTH,\n ifnull(DATA_FREE, '0') as DATA_FREE,\n ifnull(CREATE_OPTIONS, 'NONE') as CREATE_OPTIONS\n FROM information_schema.tables\n WHERE TABLE_SCHEMA = 'sys';", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 0, + "mysql.slowlog.rows_examined": 101, + "mysql.slowlog.rows_sent": 101, + "mysql.slowlog.tmp_disk_tables": "24", + "mysql.slowlog.tmp_table": true, + "mysql.slowlog.tmp_table_on_disk": true, + "mysql.slowlog.tmp_table_sizes": 114688, + "mysql.slowlog.tmp_tables": 111, + "mysql.thread_id": 14367106, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "exporter" + }, + { + "@timestamp": "2019-01-21T06:36:03.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 50365000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 3980, + "mysql.slowlog.bytes_sent": 1362, + "mysql.slowlog.current_user": "exporter", + "mysql.slowlog.filesort": false, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": true, + "mysql.slowlog.full_scan": true, + "mysql.slowlog.killed": 0, + "mysql.slowlog.last_errno": 1370, + "mysql.slowlog.lock_time.sec": 0.010733, + "mysql.slowlog.log_slow_rate_limit": 100, + "mysql.slowlog.log_slow_rate_type": "query", + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.query": "SELECT t.table_schema, t.table_name, column_name, `auto_increment`,\n pow(2, case data_type\n when 'tinyint' then 7\n when 'smallint' then 15\n when 'mediumint' then 23\n when 'int' then 31\n when 'bigint' then 63\n end+(column_type like '% unsigned'))-1 as max_int\n FROM information_schema.tables t\n JOIN information_schema.columns c\n ON BINARY t.table_schema = c.table_schema AND BINARY t.table_name = c.table_name\n WHERE c.extra = 'auto_increment' AND t.auto_increment IS NOT NULL;", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 0, + "mysql.slowlog.rows_examined": 3146, + "mysql.slowlog.rows_sent": 16, + "mysql.slowlog.tmp_disk_tables": "71", + "mysql.slowlog.tmp_table": true, + "mysql.slowlog.tmp_table_on_disk": true, + "mysql.slowlog.tmp_table_sizes": 606208, + "mysql.slowlog.tmp_tables": 376, + "mysql.thread_id": 14367293, + "service.type": "mysql", + "source.domain": "localhost", + "user.name": "exporter" + }, + { + "@timestamp": "2019-01-21T06:36:40.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 32463768000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 5255, + "mysql.slowlog.bytes_sent": 43805, + "mysql.slowlog.current_user": "test", + "mysql.slowlog.filesort": false, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": false, + "mysql.slowlog.full_scan": false, + "mysql.slowlog.innodb.io_r_bytes": 16384, + "mysql.slowlog.innodb.io_r_ops": 2, + "mysql.slowlog.innodb.io_r_wait.sec": 0.000213, + "mysql.slowlog.innodb.pages_distinct": 64832, + "mysql.slowlog.innodb.queue_wait.sec": 0.0, + "mysql.slowlog.innodb.rec_lock_wait.sec": 0.0, + "mysql.slowlog.killed": 0, + "mysql.slowlog.last_errno": 0, + "mysql.slowlog.lock_time.sec": 8.4e-05, + "mysql.slowlog.log_slow_rate_limit": 100, + "mysql.slowlog.log_slow_rate_type": "query", + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.query": "select test.id as id, test.modified as mo, test.product as pr from test where (test.state in ('NOT_RELEVANT')) and test.last<='2019-01-21 06:36:08.432' and test.modified<='2019-01-07 06:36:08.432' limit 100000;", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 0, + "mysql.slowlog.rows_examined": 267, + "mysql.slowlog.rows_sent": 267, + "mysql.slowlog.schema": "test", + "mysql.slowlog.tmp_disk_tables": "0", + "mysql.slowlog.tmp_table": false, + "mysql.slowlog.tmp_table_on_disk": false, + "mysql.slowlog.tmp_table_sizes": 0, + "mysql.slowlog.tmp_tables": 0, + "mysql.thread_id": 14360213, + "service.type": "mysql", + "source.ip": "192.168.123.123", + "user.name": "test" + }, + { + "@timestamp": "2019-01-21T09:15:36.000Z", + "ecs.version": "1.0.0", + "event.dataset": "mysql.slowlog", + "event.duration": 153883488000, + "event.module": "mysql", + "fileset.name": "slowlog", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 6165, + "mysql.slowlog.bytes_sent": 62, + "mysql.slowlog.current_user": "test", + "mysql.slowlog.filesort": false, + "mysql.slowlog.filesort_on_disk": false, + "mysql.slowlog.full_join": false, + "mysql.slowlog.full_scan": false, + "mysql.slowlog.innodb.io_r_bytes": 79822848, + "mysql.slowlog.innodb.io_r_ops": 9744, + "mysql.slowlog.innodb.io_r_wait.sec": 0.883446, + "mysql.slowlog.innodb.pages_distinct": 64872, + "mysql.slowlog.innodb.queue_wait.sec": 0.0, + "mysql.slowlog.innodb.rec_lock_wait.sec": 0.003038, + "mysql.slowlog.innodb.trx_id": "69BB9C7F9", + "mysql.slowlog.killed": 0, + "mysql.slowlog.last_errno": 3170, + "mysql.slowlog.lock_time.sec": 0.024022, + "mysql.slowlog.log_slow_rate_limit": 100, + "mysql.slowlog.log_slow_rate_type": "query", + "mysql.slowlog.merge_passes": 0, + "mysql.slowlog.query": "UPDATE test SET test.state = 'NOT_RELEVANT', modified = now() WHERE test.id IN (26328833, 390, 149386, 152268, 160997, 165304, 168524, 184105, 193022, 194533, 194862, 196469, 196487, 246398, 256594, 260566, 261862, 262342, 263701, 264166, 264607, 267671, 274879, 276704, 280964, 284366, 289323, 289843, 290004, 298999, 301213, 303494, 307920, 311905, 316311, 318404, 330846, 340751, 341433, 357191, 369184, 376876, 378360, 378492, 379470, 382131, 384077, 388368, 396815, 396881, 398272, 398950, 399589, 401299, 408787, 411293, 419109, 425953, 427659, 433183, 437030, 438332, 438386, 447037, 454231, 455257, 455344, 456385, 460420, 460425, 461252, 462338, 462531, 462684, 463104, 463395, 471073, 480069, 480078, 482399, 485205, 487971, 497191, 500261, 501855, 517585, 519310, 519654, 522575, 538425, 543560, 562315, 573934, 583466, 583490, 583502, 597605, 600875, 601546, 603879, 604467, 604619, 757786, 797285, 799155, 802905, 806268, 806798, 811974, 819684, 822629, 826406, 837733, 840128, 840131, 840251, 840277, 840302, 842966, 844294, 844300, 847837, 852503, 854272, 854299, 862983, 881405, 881461, 881467, 881560, 881908, 882435, 882453, 882651, 882711, 882811, 888265, 888286, 914091, 916288, 916316, 917708, 918238, 918887, 919222, 926607, 976977, 977010, 977067, 977131, 977185, 988249, 988276, 988336, 988360, 988504, 990994);", + "mysql.slowlog.query_cache_hit": false, + "mysql.slowlog.rows_affected": 19198, + "mysql.slowlog.rows_examined": 120309968, + "mysql.slowlog.rows_sent": 0, + "mysql.slowlog.schema": "test", + "mysql.slowlog.tmp_disk_tables": "0", + "mysql.slowlog.tmp_table": false, + "mysql.slowlog.tmp_table_on_disk": false, + "mysql.slowlog.tmp_table_sizes": 0, + "mysql.slowlog.tmp_tables": 0, + "mysql.thread_id": 14370752, + "service.type": "mysql", + "source.ip": "192.168.123.123", + "user.name": "test" + } +] \ No newline at end of file diff --git a/filebeat/module/nginx/access/test/access.log-expected.json b/filebeat/module/nginx/access/test/access.log-expected.json new file mode 100644 index 000000000000..ec3e9ba3cb01 --- /dev/null +++ b/filebeat/module/nginx/access/test/access.log-expected.json @@ -0,0 +1,382 @@ +[ + { + "@timestamp": "2016-10-25T12:49:33.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 612, + "http.response.status_code": 200, + "http.version": "1.1", + "input.type": "log", + "log.offset": 0, + "nginx.access.remote_ip_list": [ + "77.179.66.156" + ], + "service.type": "nginx", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-10-25T12:49:34.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "http://localhost:8080/", + "http.response.body.bytes": 571, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 199, + "nginx.access.remote_ip_list": [ + "77.179.66.156" + ], + "service.type": "nginx", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/favicon.ico", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-10-25T12:50:44.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 571, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 430, + "nginx.access.remote_ip_list": [ + "77.179.66.156" + ], + "service.type": "nginx", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/adsasd", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-07T09:34:43.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 612, + "http.response.status_code": 200, + "http.version": "1.1", + "input.type": "log", + "log.offset": 635, + "nginx.access.remote_ip_list": [ + "77.179.66.156" + ], + "service.type": "nginx", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-07T09:34:43.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "http://localhost:8080/", + "http.response.body.bytes": 571, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 834, + "nginx.access.remote_ip_list": [ + "77.179.66.156" + ], + "service.type": "nginx", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/favicon.ico", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-07T09:43:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 571, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 1065, + "nginx.access.remote_ip_list": [ + "77.179.66.156" + ], + "service.type": "nginx", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/test", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-07T09:43:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 571, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 1268, + "nginx.access.remote_ip_list": [ + "77.179.66.156" + ], + "service.type": "nginx", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/test", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-07T09:43:23.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 571, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 1471, + "nginx.access.remote_ip_list": [ + "77.179.66.156" + ], + "service.type": "nginx", + "source.address": "77.179.66.156", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "DE", + "source.geo.location.lat": 51.2993, + "source.geo.location.lon": 9.491, + "source.ip": "77.179.66.156", + "url.original": "/test1", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-07T10:04:37.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 571, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 1675, + "nginx.access.remote_ip_list": [ + "127.0.0.1" + ], + "service.type": "nginx", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/test1", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36", + "user_agent.os.full": "Mac OS X 10.12.0", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12.0", + "user_agent.version": "54.0.2840" + }, + { + "@timestamp": "2016-12-07T10:04:58.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 0, + "http.response.status_code": 304, + "http.version": "1.1", + "input.type": "log", + "log.offset": 1875, + "nginx.access.remote_ip_list": [ + "127.0.0.1" + ], + "service.type": "nginx", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:49.0) Gecko/20100101 Firefox/49.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "49.0" + }, + { + "@timestamp": "2016-12-07T10:04:59.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 0, + "http.response.status_code": 304, + "http.version": "1.1", + "input.type": "log", + "log.offset": 2030, + "nginx.access.remote_ip_list": [ + "127.0.0.1" + ], + "service.type": "nginx", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:49.0) Gecko/20100101 Firefox/49.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "49.0" + }, + { + "@timestamp": "2016-12-07T10:05:07.000Z", + "ecs.version": "1.0.0", + "event.dataset": "nginx.access", + "event.module": "nginx", + "fileset.name": "access", + "http.request.method": "GET", + "http.request.referrer": "-", + "http.response.body.bytes": 169, + "http.response.status_code": 404, + "http.version": "1.1", + "input.type": "log", + "log.offset": 2185, + "nginx.access.remote_ip_list": [ + "127.0.0.1" + ], + "service.type": "nginx", + "source.address": "127.0.0.1", + "source.ip": "127.0.0.1", + "url.original": "/taga", + "user.name": "-", + "user_agent.device.name": "Other", + "user_agent.name": "Firefox", + "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:49.0) Gecko/20100101 Firefox/49.0", + "user_agent.os.full": "Mac OS X 10.12", + "user_agent.os.name": "Mac OS X", + "user_agent.os.version": "10.12", + "user_agent.version": "49.0" + } +] \ No newline at end of file diff --git a/filebeat/module/osquery/result/test/osquery.rootkit.log-expected.json b/filebeat/module/osquery/result/test/osquery.rootkit.log-expected.json new file mode 100644 index 000000000000..e50b713a0856 --- /dev/null +++ b/filebeat/module/osquery/result/test/osquery.rootkit.log-expected.json @@ -0,0 +1,1698 @@ +[ + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 0, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "38", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423094", + "osquery.result.columns.name": "pack_ossec-rootkit_55808.a_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 490, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423113", + "osquery.result.columns.name": "pack_ossec-rootkit_adore_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 981, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "37", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423092", + "osquery.result.columns.name": "pack_ossec-rootkit_adore_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 1469, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "41", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423065", + "osquery.result.columns.name": "pack_ossec-rootkit_ajakit_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 1961, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423075", + "osquery.result.columns.name": "pack_ossec-rootkit_anonoiyng_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 2456, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "43", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423081", + "osquery.result.columns.name": "pack_ossec-rootkit_apa_kit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 2941, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423113", + "osquery.result.columns.name": "pack_ossec-rootkit_ark_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 3430, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "39", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423086", + "osquery.result.columns.name": "pack_ossec-rootkit_bash_door", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 3917, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "38", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423094", + "osquery.result.columns.name": "pack_ossec-rootkit_beastkit_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 4411, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "45", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423112", + "osquery.result.columns.name": "pack_ossec-rootkit_bmbl_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 4901, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "41", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423065", + "osquery.result.columns.name": "pack_ossec-rootkit_bobkit_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 5393, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "42", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423084", + "osquery.result.columns.name": "pack_ossec-rootkit_cback_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 5881, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423081", + "osquery.result.columns.name": "pack_ossec-rootkit_enye_sec_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 6375, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423112", + "osquery.result.columns.name": "pack_ossec-rootkit_esrk_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 6865, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "41", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423065", + "osquery.result.columns.name": "pack_ossec-rootkit_fu_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 7353, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "37", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423092", + "osquery.result.columns.name": "pack_ossec-rootkit_hidr00tkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 7841, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "39", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423086", + "osquery.result.columns.name": "pack_ossec-rootkit_illogic_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 8334, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423075", + "osquery.result.columns.name": "pack_ossec-rootkit_kenga3_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 8826, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423051", + "osquery.result.columns.name": "pack_ossec-rootkit_knark_installed", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 9319, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "42", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423084", + "osquery.result.columns.name": "pack_ossec-rootkit_ldp_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 9805, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423112", + "osquery.result.columns.name": "pack_ossec-rootkit_lion_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 10292, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "38", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423094", + "osquery.result.columns.name": "pack_ossec-rootkit_loc_rookit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 10780, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "41", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423065", + "osquery.result.columns.name": "pack_ossec-rootkit_lrk_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 11269, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "42", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423084", + "osquery.result.columns.name": "pack_ossec-rootkit_madalin_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 11762, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "42", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423084", + "osquery.result.columns.name": "pack_ossec-rootkit_maniac_rk", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 12249, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "43", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423081", + "osquery.result.columns.name": "pack_ossec-rootkit_mithra`s_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 12743, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423081", + "osquery.result.columns.name": "pack_ossec-rootkit_monkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 13227, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423051", + "osquery.result.columns.name": "pack_ossec-rootkit_monkit_found", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 13717, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "42", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423084", + "osquery.result.columns.name": "pack_ossec-rootkit_old_rootkits", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 14207, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "38", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423094", + "osquery.result.columns.name": "pack_ossec-rootkit_omega_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 14695, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "38", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423094", + "osquery.result.columns.name": "pack_ossec-rootkit_optickit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 15181, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "39", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423086", + "osquery.result.columns.name": "pack_ossec-rootkit_override_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 15675, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "37", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423092", + "osquery.result.columns.name": "pack_ossec-rootkit_phalanx_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 16168, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "39", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423086", + "osquery.result.columns.name": "pack_ossec-rootkit_ramen_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 16656, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423112", + "osquery.result.columns.name": "pack_ossec-rootkit_rh_sharpe", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 17143, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "42", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423084", + "osquery.result.columns.name": "pack_ossec-rootkit_rk17", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 17625, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423081", + "osquery.result.columns.name": "pack_ossec-rootkit_romanian_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 18119, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423075", + "osquery.result.columns.name": "pack_ossec-rootkit_rsha", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 18601, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423113", + "osquery.result.columns.name": "pack_ossec-rootkit_sadmind/iis_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 19096, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423051", + "osquery.result.columns.name": "pack_ossec-rootkit_scalper_installed", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 19591, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "38", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423094", + "osquery.result.columns.name": "pack_ossec-rootkit_shitc", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 20074, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "38", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423094", + "osquery.result.columns.name": "pack_ossec-rootkit_shkit_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 20565, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "39", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423086", + "osquery.result.columns.name": "pack_ossec-rootkit_showtee", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 21050, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423075", + "osquery.result.columns.name": "pack_ossec-rootkit_showtee_/_romanian_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 21555, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423113", + "osquery.result.columns.name": "pack_ossec-rootkit_shv5_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 22045, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423075", + "osquery.result.columns.name": "pack_ossec-rootkit_slapper_installed", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 22540, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423051", + "osquery.result.columns.name": "pack_ossec-rootkit_solaris_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 23030, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423075", + "osquery.result.columns.name": "pack_ossec-rootkit_suckit_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 23522, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "41", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423065", + "osquery.result.columns.name": "pack_ossec-rootkit_suspicious_file", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24015, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423051", + "osquery.result.columns.name": "pack_ossec-rootkit_t0rn_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24505, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423051", + "osquery.result.columns.name": "pack_ossec-rootkit_tc2_worm", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24991, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "43", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423081", + "osquery.result.columns.name": "pack_ossec-rootkit_telekit_trojan", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 25483, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423075", + "osquery.result.columns.name": "pack_ossec-rootkit_tribe_bot", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 25970, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "39", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423086", + "osquery.result.columns.name": "pack_ossec-rootkit_trk_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 26459, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423051", + "osquery.result.columns.name": "pack_ossec-rootkit_tuxkit_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 26951, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "40", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423075", + "osquery.result.columns.name": "pack_ossec-rootkit_volc_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 27441, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "39", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423086", + "osquery.result.columns.name": "pack_ossec-rootkit_zarwt_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T14:51:55.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 27932, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 14:51:55 2018 UTC", + "osquery.result.columns.average_memory": "0", + "osquery.result.columns.avg_system_time": "0", + "osquery.result.columns.avg_user_time": "0", + "osquery.result.columns.executions": "36", + "osquery.result.columns.interval": "60", + "osquery.result.columns.last_executed": "1515423081", + "osquery.result.columns.name": "pack_ossec-rootkit_zk_rootkit", + "osquery.result.columns.output_size": "0", + "osquery.result.columns.wall_time": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_osquery-monitoring_schedule", + "osquery.result.unix_time": "1515423115", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T17:06:29.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 28420, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 17:06:29 2018 UTC", + "osquery.result.columns.atime": "1515431166", + "osquery.result.columns.block_size": "4096", + "osquery.result.columns.btime": "0", + "osquery.result.columns.ctime": "1515431161", + "osquery.result.columns.device": "0", + "osquery.result.columns.directory": "/tmp/.font-unix", + "osquery.result.columns.filename": ".cinik", + "osquery.result.columns.gid": "0", + "osquery.result.columns.hard_links": "1", + "osquery.result.columns.inode": "256622", + "osquery.result.columns.mode": "0644", + "osquery.result.columns.mtime": "1515431161", + "osquery.result.columns.path": "/tmp/.font-unix/.cinik", + "osquery.result.columns.size": "0", + "osquery.result.columns.symlink": "1", + "osquery.result.columns.type": "regular", + "osquery.result.columns.uid": "0", + "osquery.result.counter": "90", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_ossec-rootkit_slapper_installed", + "osquery.result.unix_time": "1515431189", + "service.type": "osquery" + }, + { + "@timestamp": "2018-01-08T17:19:48.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 29019, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Mon Jan 8 17:19:48 2018 UTC", + "osquery.result.columns.atime": "1515431943", + "osquery.result.columns.block_size": "4096", + "osquery.result.columns.btime": "0", + "osquery.result.columns.ctime": "1515431943", + "osquery.result.columns.device": "0", + "osquery.result.columns.directory": "/usr/bin", + "osquery.result.columns.filename": "adore", + "osquery.result.columns.gid": "0", + "osquery.result.columns.hard_links": "1", + "osquery.result.columns.inode": "1919", + "osquery.result.columns.mode": "0644", + "osquery.result.columns.mtime": "1515431943", + "osquery.result.columns.path": "/usr/bin/adore", + "osquery.result.columns.size": "0", + "osquery.result.columns.symlink": "1", + "osquery.result.columns.type": "regular", + "osquery.result.columns.uid": "0", + "osquery.result.counter": "95", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_ossec-rootkit_adore_worm", + "osquery.result.unix_time": "1515431988", + "service.type": "osquery" + } +] \ No newline at end of file diff --git a/filebeat/module/osquery/result/test/osqueryd.results.darwin.log-expected.json b/filebeat/module/osquery/result/test/osqueryd.results.darwin.log-expected.json new file mode 100644 index 000000000000..2796f342a02c --- /dev/null +++ b/filebeat/module/osquery/result/test/osqueryd.results.darwin.log-expected.json @@ -0,0 +1,2435 @@ +[ + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 0, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "org.python.python.app", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_explicit_auths", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 333, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "com.apple.ruby", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_explicit_auths", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 659, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "com.apple.a2p", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_explicit_auths", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 984, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "com.apple.javajdk16.cmd", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_explicit_auths", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 1319, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "com.apple.php", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_explicit_auths", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 1644, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "com.apple.nc", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_explicit_auths", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 1968, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "com.apple.ksh", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_explicit_auths", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 2293, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "httpd", + "osquery.result.columns.service": "Personal Web Sharing", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 2649, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "cupsd", + "osquery.result.columns.service": "Printer Sharing", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 3000, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "AEServer", + "osquery.result.columns.service": "Remote Apple Events", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 3358, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "ftpd", + "osquery.result.columns.service": "FTP Access", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 3703, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "AppleFileServer", + "osquery.result.columns.service": "Personal File Sharing", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 4070, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "sshd-keygen-wrapper", + "osquery.result.columns.service": "Remote Login - SSH", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 4438, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "smbd", + "osquery.result.columns.service": "Samba Sharing", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 4786, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "AppleVNCServer", + "osquery.result.columns.service": "Apple Remote Desktop", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:50.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 5151, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:50 2017 UTC", + "osquery.result.columns.process": "ODSAgent", + "osquery.result.columns.service": "ODSAgent", + "osquery.result.columns.state": "0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_alf_services", + "osquery.result.unix_time": "1514471990", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 5498, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "LastPass", + "osquery.result.columns.description": "Last Password you will ever need", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "support@lastpass.com", + "osquery.result.columns.location": "app-profile", + "osquery.result.columns.name": "LastPass: Free Password Manager", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "https://addons.cdn.mozilla.net/user-media/addons/8542/lastpass_password_manager-4.2.3.20-an+fx.xpi?filehash=sha256%3Acb837b4d738d51fac1d4361b7ac50cac1fc2828c2848057f10f88220aff77380", + "osquery.result.columns.type": "webextension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "4.2.3.20", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 6464, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "Sets value(s) in the update url based on custom checks.", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "aushelper@mozilla.org", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Application Update Service Helper", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "2.0", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 7269, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "Staged rollout of Firefox multi-process feature.", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "e10srollout@mozilla.org", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Multi-process staged rollout", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "3.05", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 8065, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "When you find something you want to view later, put it in Pocket.", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "firefox@getpocket.com", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Pocket", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "1.0.5", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 8855, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "null", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "followonsearch@mozilla.com", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Follow-on Search Telemetry", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "0.9.6", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 9609, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "null", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "screenshots@mozilla.org", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Firefox Screenshots", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "19.2.0", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 10354, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "Client to download and run recipes for SHIELD, Heartbeat, etc.", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "shield-recipe-client@mozilla.org", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Shield Recipe Client", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "76.1", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 11165, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "Urgent post-release fixes for web compatibility.", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "webcompat@mozilla.org", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Web Compat", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "1.1", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 11940, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "A rich visual history feed and a reimagined home page make it easier than ever to find exactly what you're looking for in Firefox.", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "activity-stream@mozilla.org", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Activity Stream", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "2017.11.07.1100-7f4e3634", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 12829, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "Autofill forms with saved profiles", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "formautofill@mozilla.org", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Form Autofill", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "1.0", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 13596, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "Photon onboarding", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "onboarding@mozilla.org", + "osquery.result.columns.location": "app-system-defaults", + "osquery.result.columns.name": "Photon onboarding", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "1.0", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 14348, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "Mozilla", + "osquery.result.columns.description": "The default theme.", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "{972ce4c6-7e08-4474-a285-3208198ce6fd}", + "osquery.result.columns.location": "app-global", + "osquery.result.columns.name": "Default", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "null", + "osquery.result.columns.type": "theme", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "57.0.1", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 15100, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.active": "1", + "osquery.result.columns.autoupdate": "1", + "osquery.result.columns.creator": "null", + "osquery.result.columns.description": "This disables NV12 surface format on Windows for AMD graphic adapters, see bug 1417442", + "osquery.result.columns.directory": "/Users/tsg", + "osquery.result.columns.disabled": "0", + "osquery.result.columns.gid": "20", + "osquery.result.columns.gid_signed": "20", + "osquery.result.columns.identifier": "disable-media-wmf-nv12@mozilla.org", + "osquery.result.columns.location": "app-system-addons", + "osquery.result.columns.name": "Disable Media WMF NV12 format", + "osquery.result.columns.native": "0", + "osquery.result.columns.path": "", + "osquery.result.columns.shell": "/bin/zsh", + "osquery.result.columns.source_url": "file:///var/folders/rl/ps6sz7995lq3kqz5v9bmwjlh0000gn/T/tmpaddon", + "osquery.result.columns.type": "extension", + "osquery.result.columns.uid": "501", + "osquery.result.columns.uid_signed": "501", + "osquery.result.columns.username": "tsg", + "osquery.result.columns.uuid": "C4ED9367-E74A-4B3B-8E57-F97695D3919C", + "osquery.result.columns.version": "1.1", + "osquery.result.columns.visible": "1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_firefox_addons", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 16011, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "ansible", + "osquery.result.columns.path": "/usr/local/Cellar/ansible/", + "osquery.result.columns.version": "2.3.2.0_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 16389, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "asio", + "osquery.result.columns.path": "/usr/local/Cellar/asio/", + "osquery.result.columns.version": "1.10.8_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 16760, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "augeas", + "osquery.result.columns.path": "/usr/local/Cellar/augeas/", + "osquery.result.columns.version": "1.9.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 17132, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "awscli", + "osquery.result.columns.path": "/usr/local/Cellar/awscli/", + "osquery.result.columns.version": "1.11.138", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 17507, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "boost", + "osquery.result.columns.path": "/usr/local/Cellar/boost/", + "osquery.result.columns.version": "1.65.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 17878, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "elasticsearch", + "osquery.result.columns.path": "/usr/local/Cellar/elasticsearch/", + "osquery.result.columns.version": "6.1.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 18264, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "filebeat", + "osquery.result.columns.path": "/usr/local/Cellar/filebeat/", + "osquery.result.columns.version": "6.0.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 18640, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "fontconfig", + "osquery.result.columns.path": "/usr/local/Cellar/fontconfig/", + "osquery.result.columns.version": "2.12.6", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 19021, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "freetype", + "osquery.result.columns.path": "/usr/local/Cellar/freetype/", + "osquery.result.columns.version": "2.8.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 19397, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "gd", + "osquery.result.columns.path": "/usr/local/Cellar/gd/", + "osquery.result.columns.version": "2.2.5", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 19761, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "gdbm", + "osquery.result.columns.path": "/usr/local/Cellar/gdbm/", + "osquery.result.columns.version": "1.13", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 20128, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "gettext", + "osquery.result.columns.path": "/usr/local/Cellar/gettext/", + "osquery.result.columns.version": "0.19.8.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 20505, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "gflags", + "osquery.result.columns.path": "/usr/local/Cellar/gflags/", + "osquery.result.columns.version": "2.2.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 20877, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "git-crypt", + "osquery.result.columns.path": "/usr/local/Cellar/git-crypt/", + "osquery.result.columns.version": "0.5.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 21255, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "glog", + "osquery.result.columns.path": "/usr/local/Cellar/glog/", + "osquery.result.columns.version": "0.3.5_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 21625, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "go", + "osquery.result.columns.path": "/usr/local/Cellar/go/", + "osquery.result.columns.version": "1.9.2", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 21989, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "go@1.8", + "osquery.result.columns.path": "/usr/local/Cellar/go@1.8/", + "osquery.result.columns.version": "1.8.3", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 22361, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "gradle", + "osquery.result.columns.path": "/usr/local/Cellar/gradle/", + "osquery.result.columns.version": "4.3", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 22731, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "graphviz", + "osquery.result.columns.path": "/usr/local/Cellar/graphviz/", + "osquery.result.columns.version": "2.40.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 23108, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "heartbeat", + "osquery.result.columns.path": "/usr/local/Cellar/heartbeat/", + "osquery.result.columns.version": "6.1.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 23486, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "heartbeat", + "osquery.result.columns.path": "/usr/local/Cellar/heartbeat/", + "osquery.result.columns.version": "6.1.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 23864, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "icu4c", + "osquery.result.columns.path": "/usr/local/Cellar/icu4c/", + "osquery.result.columns.version": "59.1_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24235, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "jemalloc", + "osquery.result.columns.path": "/usr/local/Cellar/jemalloc/", + "osquery.result.columns.version": "5.0.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24611, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "jpeg", + "osquery.result.columns.path": "/usr/local/Cellar/jpeg/", + "osquery.result.columns.version": "9b", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24976, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "jq", + "osquery.result.columns.path": "/usr/local/Cellar/jq/", + "osquery.result.columns.version": "1.5_2", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 25340, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libarchive", + "osquery.result.columns.path": "/usr/local/Cellar/libarchive/", + "osquery.result.columns.version": "3.3.2", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 25720, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libevent", + "osquery.result.columns.path": "/usr/local/Cellar/libevent/", + "osquery.result.columns.version": "2.1.8", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 26096, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libmagic", + "osquery.result.columns.path": "/usr/local/Cellar/libmagic/", + "osquery.result.columns.version": "5.32", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 26471, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libpng", + "osquery.result.columns.path": "/usr/local/Cellar/libpng/", + "osquery.result.columns.version": "1.6.34", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 26844, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "librdkafka", + "osquery.result.columns.path": "/usr/local/Cellar/librdkafka/", + "osquery.result.columns.version": "0.11.3", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 27225, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libtermkey", + "osquery.result.columns.path": "/usr/local/Cellar/libtermkey/", + "osquery.result.columns.version": "0.20", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 27604, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libtiff", + "osquery.result.columns.path": "/usr/local/Cellar/libtiff/", + "osquery.result.columns.version": "4.0.8_5", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 27980, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libtool", + "osquery.result.columns.path": "/usr/local/Cellar/libtool/", + "osquery.result.columns.version": "2.4.6_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 28356, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libuv", + "osquery.result.columns.path": "/usr/local/Cellar/libuv/", + "osquery.result.columns.version": "1.14.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 28727, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libvterm", + "osquery.result.columns.path": "/usr/local/Cellar/libvterm/", + "osquery.result.columns.version": "681", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 29101, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "libyaml", + "osquery.result.columns.path": "/usr/local/Cellar/libyaml/", + "osquery.result.columns.version": "0.1.7", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 29475, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "lldpd", + "osquery.result.columns.path": "/usr/local/Cellar/lldpd/", + "osquery.result.columns.version": "0.9.9", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 29845, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "lz4", + "osquery.result.columns.path": "/usr/local/Cellar/lz4/", + "osquery.result.columns.version": "1.8.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 30211, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "lzlib", + "osquery.result.columns.path": "/usr/local/Cellar/lzlib/", + "osquery.result.columns.version": "1.9", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 30579, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "metricbeat", + "osquery.result.columns.path": "/usr/local/Cellar/metricbeat/", + "osquery.result.columns.version": "6.1.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 30959, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "msgpack", + "osquery.result.columns.path": "/usr/local/Cellar/msgpack/", + "osquery.result.columns.version": "2.1.5", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 31333, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "neovim", + "osquery.result.columns.path": "/usr/local/Cellar/neovim/", + "osquery.result.columns.version": "0.2.0_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 31707, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "nginx", + "osquery.result.columns.path": "/usr/local/Cellar/nginx/", + "osquery.result.columns.version": "1.12.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 32078, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "node", + "osquery.result.columns.path": "/usr/local/Cellar/node/", + "osquery.result.columns.version": "8.9.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 32446, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "nvm", + "osquery.result.columns.path": "/usr/local/Cellar/nvm/", + "osquery.result.columns.version": "0.33.6", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 32813, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "oniguruma", + "osquery.result.columns.path": "/usr/local/Cellar/oniguruma/", + "osquery.result.columns.version": "6.6.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 33191, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "openssl", + "osquery.result.columns.path": "/usr/local/Cellar/openssl/", + "osquery.result.columns.version": "1.0.2l", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 33566, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "openssl", + "osquery.result.columns.path": "/usr/local/Cellar/openssl/", + "osquery.result.columns.version": "1.0.2m", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 33941, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "openssl@1.1", + "osquery.result.columns.path": "/usr/local/Cellar/openssl@1.1/", + "osquery.result.columns.version": "1.1.0f", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 34324, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "osquery", + "osquery.result.columns.path": "/usr/local/Cellar/osquery/", + "osquery.result.columns.version": "2.10.2", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 34699, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "pcre", + "osquery.result.columns.path": "/usr/local/Cellar/pcre/", + "osquery.result.columns.version": "8.41", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 35066, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "perl", + "osquery.result.columns.path": "/usr/local/Cellar/perl/", + "osquery.result.columns.version": "5.26.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 35435, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "python", + "osquery.result.columns.path": "/usr/local/Cellar/python/", + "osquery.result.columns.version": "2.7.13_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 35810, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "rapidjson", + "osquery.result.columns.path": "/usr/local/Cellar/rapidjson/", + "osquery.result.columns.version": "1.1.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 36188, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "readline", + "osquery.result.columns.path": "/usr/local/Cellar/readline/", + "osquery.result.columns.version": "7.0.3_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 36566, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "redis", + "osquery.result.columns.path": "/usr/local/Cellar/redis/", + "osquery.result.columns.version": "4.0.2", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 36936, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "rocksdb", + "osquery.result.columns.path": "/usr/local/Cellar/rocksdb/", + "osquery.result.columns.version": "5.8.7", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 37310, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "ruby", + "osquery.result.columns.path": "/usr/local/Cellar/ruby/", + "osquery.result.columns.version": "2.4.1_1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 37680, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "sleuthkit", + "osquery.result.columns.path": "/usr/local/Cellar/sleuthkit/", + "osquery.result.columns.version": "4.5.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 38058, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "snappy", + "osquery.result.columns.path": "/usr/local/Cellar/snappy/", + "osquery.result.columns.version": "1.1.7", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 38430, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "sqlite", + "osquery.result.columns.path": "/usr/local/Cellar/sqlite/", + "osquery.result.columns.version": "3.20.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 38803, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "telnet", + "osquery.result.columns.path": "/usr/local/Cellar/telnet/", + "osquery.result.columns.version": "54.50.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 39177, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "the_silver_searcher", + "osquery.result.columns.path": "/usr/local/Cellar/the_silver_searcher/", + "osquery.result.columns.version": "2.1.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 39575, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "tree", + "osquery.result.columns.path": "/usr/local/Cellar/tree/", + "osquery.result.columns.version": "1.7.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 39943, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "unibilium", + "osquery.result.columns.path": "/usr/local/Cellar/unibilium/", + "osquery.result.columns.version": "1.2.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 40321, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "vim", + "osquery.result.columns.path": "/usr/local/Cellar/vim/", + "osquery.result.columns.version": "8.0.0997", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 40690, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "webp", + "osquery.result.columns.path": "/usr/local/Cellar/webp/", + "osquery.result.columns.version": "0.6.0_2", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 41060, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "xz", + "osquery.result.columns.path": "/usr/local/Cellar/xz/", + "osquery.result.columns.version": "5.2.3", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 41424, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "yara", + "osquery.result.columns.path": "/usr/local/Cellar/yara/", + "osquery.result.columns.version": "3.7.0", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 41792, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "zsh", + "osquery.result.columns.path": "/usr/local/Cellar/zsh/", + "osquery.result.columns.version": "5.4.1", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-28T14:39:51.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 42158, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 28 14:39:51 2017 UTC", + "osquery.result.columns.name": "zstd", + "osquery.result.columns.path": "/usr/local/Cellar/zstd/", + "osquery.result.columns.version": "1.3.2", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "4AB2906D-5516-5794-AF54-86D1D7F533F3", + "osquery.result.decorations.username": "tsg", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "192-168-0-4.rdsnet.ro", + "osquery.result.name": "pack_it-compliance_homebrew_packages", + "osquery.result.unix_time": "1514471991", + "service.type": "osquery" + } +] \ No newline at end of file diff --git a/filebeat/module/osquery/result/test/osqueryd.results.sample.log-expected.json b/filebeat/module/osquery/result/test/osqueryd.results.sample.log-expected.json new file mode 100644 index 000000000000..d9df59bd1dbd --- /dev/null +++ b/filebeat/module/osquery/result/test/osqueryd.results.sample.log-expected.json @@ -0,0 +1,2575 @@ +[ + { + "@timestamp": "2017-12-07T12:21:20.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 0, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 12:21:20 2017 UTC", + "osquery.result.columns.cpu_brand": "Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz", + "osquery.result.columns.hostname": "ubuntu-xenial", + "osquery.result.columns.physical_memory": "1040322560", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.name": "osqueryd", + "osquery.result.decorations.path": "/usr/bin/osqueryd", + "osquery.result.decorations.pid": "10917", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "system_info", + "osquery.result.unix_time": "1512649280", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 443, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0380000", + "osquery.result.columns.name": "ufs", + "osquery.result.columns.size": "73728", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 822, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc032c000", + "osquery.result.columns.name": "msdos", + "osquery.result.columns.size": "20480", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 1203, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc03e2000", + "osquery.result.columns.name": "xfs", + "osquery.result.columns.size": "974848", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 1583, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0373000", + "osquery.result.columns.name": "vboxsf", + "osquery.result.columns.size": "49152", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 1965, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0368000", + "osquery.result.columns.name": "isofs", + "osquery.result.columns.size": "40960", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 2346, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc02a5000", + "osquery.result.columns.name": "ppdev", + "osquery.result.columns.size": "20480", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 2727, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc030a000", + "osquery.result.columns.name": "input_leds", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 3113, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0171000", + "osquery.result.columns.name": "serio_raw", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 3498, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc039b000", + "osquery.result.columns.name": "vboxguest", + "osquery.result.columns.size": "286720", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "vboxsf", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 3889, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc035f000", + "osquery.result.columns.name": "parport_pc", + "osquery.result.columns.size": "32768", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 4275, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc02e7000", + "osquery.result.columns.name": "video", + "osquery.result.columns.size": "40960", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 4656, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0352000", + "osquery.result.columns.name": "parport", + "osquery.result.columns.size": "49152", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "ppdev,parport_pc", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 5054, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0345000", + "osquery.result.columns.name": "ib_iser", + "osquery.result.columns.size": "49152", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 5437, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0332000", + "osquery.result.columns.name": "rdma_cm", + "osquery.result.columns.size": "49152", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "ib_iser", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 5826, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0320000", + "osquery.result.columns.name": "iw_cm", + "osquery.result.columns.size": "45056", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "rdma_cm", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 6213, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc030f000", + "osquery.result.columns.name": "ib_cm", + "osquery.result.columns.size": "45056", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "rdma_cm", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 6600, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0300000", + "osquery.result.columns.name": "ib_sa", + "osquery.result.columns.size": "36864", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "rdma_cm,ib_cm", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 6993, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc02f3000", + "osquery.result.columns.name": "ib_mad", + "osquery.result.columns.size": "49152", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "ib_cm,ib_sa", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 7385, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc02cc000", + "osquery.result.columns.name": "ib_core", + "osquery.result.columns.size": "106496", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "ib_iser,rdma_cm,iw_cm,ib_cm,ib_sa,ib_mad", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 7808, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc02a0000", + "osquery.result.columns.name": "ib_addr", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "rdma_cm,ib_core", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 8205, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc02c2000", + "osquery.result.columns.name": "iscsi_tcp", + "osquery.result.columns.size": "20480", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 8590, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc02bb000", + "osquery.result.columns.name": "libiscsi_tcp", + "osquery.result.columns.size": "24576", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "iscsi_tcp", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 8986, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc02ad000", + "osquery.result.columns.name": "libiscsi", + "osquery.result.columns.size": "53248", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "ib_iser,iscsi_tcp,libiscsi_tcp", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 9399, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0287000", + "osquery.result.columns.name": "scsi_transport_iscsi", + "osquery.result.columns.size": "98304", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "ib_iser,iscsi_tcp,libiscsi", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 9820, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc027c000", + "osquery.result.columns.name": "autofs4", + "osquery.result.columns.size": "40960", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 10203, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0189000", + "osquery.result.columns.name": "btrfs", + "osquery.result.columns.size": "991232", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 10585, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0178000", + "osquery.result.columns.name": "raid10", + "osquery.result.columns.size": "49152", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 10967, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0155000", + "osquery.result.columns.name": "raid456", + "osquery.result.columns.size": "110592", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 11351, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc014f000", + "osquery.result.columns.name": "async_raid6_recov", + "osquery.result.columns.size": "20480", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "raid456", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 11750, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc000e000", + "osquery.result.columns.name": "async_memcpy", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "raid456,async_raid6_recov", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 12162, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc014a000", + "osquery.result.columns.name": "async_pq", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "raid456,async_raid6_recov", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 12570, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0119000", + "osquery.result.columns.name": "async_xor", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "raid456,async_raid6_recov,async_pq", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 12988, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0114000", + "osquery.result.columns.name": "async_tx", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "raid456,async_raid6_recov,async_memcpy,async_pq,async_xor", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 13428, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00b6000", + "osquery.result.columns.name": "xor", + "osquery.result.columns.size": "24576", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "btrfs,async_xor", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 13821, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0055000", + "osquery.result.columns.name": "raid6_pq", + "osquery.result.columns.size": "102400", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "btrfs,raid456,async_raid6_recov,async_pq", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 14245, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc004d000", + "osquery.result.columns.name": "libcrc32c", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "xfs,raid456", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 14640, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc003f000", + "osquery.result.columns.name": "raid1", + "osquery.result.columns.size": "36864", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 15021, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0008000", + "osquery.result.columns.name": "raid0", + "osquery.result.columns.size": "20480", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 15402, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0000000", + "osquery.result.columns.name": "multipath", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 15787, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0013000", + "osquery.result.columns.name": "linear", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 16169, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00e9000", + "osquery.result.columns.name": "crct10dif_pclmul", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 16561, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00cc000", + "osquery.result.columns.name": "crc32_pclmul", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 16949, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc008a000", + "osquery.result.columns.name": "ghash_clmulni_intel", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 17344, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0120000", + "osquery.result.columns.name": "aesni_intel", + "osquery.result.columns.size": "167936", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 17732, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc010e000", + "osquery.result.columns.name": "aes_x86_64", + "osquery.result.columns.size": "20480", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "aesni_intel", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 18128, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0106000", + "osquery.result.columns.name": "lrw", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "aesni_intel", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 18517, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0101000", + "osquery.result.columns.name": "gf128mul", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "lrw", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 18903, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00c7000", + "osquery.result.columns.name": "glue_helper", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "aesni_intel", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 19300, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00fa000", + "osquery.result.columns.name": "ablk_helper", + "osquery.result.columns.size": "16384", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "aesni_intel", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 19697, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00ef000", + "osquery.result.columns.name": "mptspi", + "osquery.result.columns.size": "24576", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 20079, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00e0000", + "osquery.result.columns.name": "scsi_transport_spi", + "osquery.result.columns.size": "32768", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "mptspi", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 20478, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00d1000", + "osquery.result.columns.name": "mptscsih", + "osquery.result.columns.size": "40960", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "mptspi", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 20867, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc00bd000", + "osquery.result.columns.name": "cryptd", + "osquery.result.columns.size": "20480", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "ghash_clmulni_intel,aesni_intel,ablk_helper", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 21291, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0091000", + "osquery.result.columns.name": "psmouse", + "osquery.result.columns.size": "131072", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 21675, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc0070000", + "osquery.result.columns.name": "mptbase", + "osquery.result.columns.size": "102400", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "mptspi,mptscsih", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:15.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 22073, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:15 2017 UTC", + "osquery.result.columns.address": "0xffffffffc001a000", + "osquery.result.columns.name": "e1000", + "osquery.result.columns.size": "135168", + "osquery.result.columns.status": "Live", + "osquery.result.columns.used_by": "-", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_kernel_modules", + "osquery.result.unix_time": "1512669435", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 22455, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/sda", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 22826, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/sda1", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "ce24233e-85c4-4f5b-a084-25bb2493ad65", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 23234, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/sdb", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "2017-08-31-09-16-31-00", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 23627, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop0", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24000, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop1", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24373, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop2", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 24746, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop3", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 25119, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop4", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 25492, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop5", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 25865, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop6", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 26238, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop7", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 26611, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.build": "", + "osquery.result.columns.codename": "xenial", + "osquery.result.columns.major": "16", + "osquery.result.columns.minor": "4", + "osquery.result.columns.name": "Ubuntu", + "osquery.result.columns.patch": "0", + "osquery.result.columns.platform": "ubuntu", + "osquery.result.columns.platform_like": "debian", + "osquery.result.columns.version": "16.04.3 LTS (Xenial Xerus)", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_os_version", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:18.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 27065, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.build_distro": "xenial", + "osquery.result.columns.build_platform": "ubuntu", + "osquery.result.columns.config_hash": "316a3b407f3a225961bbcdb703efd3dc5d1a2d94", + "osquery.result.columns.config_valid": "1", + "osquery.result.columns.datetime": "2017-12-07T17:57:18Z", + "osquery.result.columns.day": "7", + "osquery.result.columns.extensions": "active", + "osquery.result.columns.hour": "17", + "osquery.result.columns.instance_id": "5a1e5efb-abc0-4230-9ec2-290e72fe098c", + "osquery.result.columns.iso_8601": "2017-12-07T17:57:18Z", + "osquery.result.columns.local_time": "1512669438", + "osquery.result.columns.local_timezone": "CET", + "osquery.result.columns.minutes": "57", + "osquery.result.columns.month": "12", + "osquery.result.columns.pid": "11550", + "osquery.result.columns.seconds": "18", + "osquery.result.columns.start_time": "1512669421", + "osquery.result.columns.timestamp": "Thu Dec 7 17:57:18 2017 UTC", + "osquery.result.columns.timezone": "GMT", + "osquery.result.columns.unix_time": "1512669438", + "osquery.result.columns.uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.columns.version": "2.10.2", + "osquery.result.columns.watcher": "1", + "osquery.result.columns.weekday": "Thursday", + "osquery.result.columns.year": "2017", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_osquery_info", + "osquery.result.unix_time": "1512669438", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 27975, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/sda", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 28346, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/sda1", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "ce24233e-85c4-4f5b-a084-25bb2493ad65", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 28754, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/sdb", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "2017-08-31-09-16-31-00", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 29147, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop0", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 29520, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop1", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 29893, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop2", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 30266, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop3", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 30639, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop4", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 31012, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop5", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 31385, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop6", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 31758, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.encrypted": "0", + "osquery.result.columns.name": "/dev/loop7", + "osquery.result.columns.type": "", + "osquery.result.columns.uid": "", + "osquery.result.columns.user_uuid": "", + "osquery.result.columns.uuid": "", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_disk_encryption", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 32131, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.build": "", + "osquery.result.columns.codename": "xenial", + "osquery.result.columns.major": "16", + "osquery.result.columns.minor": "4", + "osquery.result.columns.name": "Ubuntu", + "osquery.result.columns.patch": "0", + "osquery.result.columns.platform": "ubuntu", + "osquery.result.columns.platform_like": "debian", + "osquery.result.columns.version": "16.04.3 LTS (Xenial Xerus)", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_os_version", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:19.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 32585, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.build_distro": "xenial", + "osquery.result.columns.build_platform": "ubuntu", + "osquery.result.columns.config_hash": "316a3b407f3a225961bbcdb703efd3dc5d1a2d94", + "osquery.result.columns.config_valid": "1", + "osquery.result.columns.datetime": "2017-12-07T17:57:19Z", + "osquery.result.columns.day": "7", + "osquery.result.columns.extensions": "active", + "osquery.result.columns.hour": "17", + "osquery.result.columns.instance_id": "5a1e5efb-abc0-4230-9ec2-290e72fe098c", + "osquery.result.columns.iso_8601": "2017-12-07T17:57:19Z", + "osquery.result.columns.local_time": "1512669439", + "osquery.result.columns.local_timezone": "CET", + "osquery.result.columns.minutes": "57", + "osquery.result.columns.month": "12", + "osquery.result.columns.pid": "11631", + "osquery.result.columns.seconds": "19", + "osquery.result.columns.start_time": "1512669436", + "osquery.result.columns.timestamp": "Thu Dec 7 17:57:19 2017 UTC", + "osquery.result.columns.timezone": "GMT", + "osquery.result.columns.unix_time": "1512669439", + "osquery.result.columns.uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.columns.version": "2.10.2", + "osquery.result.columns.watcher": "11629", + "osquery.result.columns.weekday": "Thursday", + "osquery.result.columns.year": "2017", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_osquery_info", + "osquery.result.unix_time": "1512669439", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 33499, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "sysfs", + "osquery.result.columns.device_alias": "sysfs", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys", + "osquery.result.columns.type": "sysfs", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 33999, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "proc", + "osquery.result.columns.device_alias": "/proc", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/proc", + "osquery.result.columns.type": "proc", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 34499, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "124670", + "osquery.result.columns.blocks_available": "124670", + "osquery.result.columns.blocks_free": "124670", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "udev", + "osquery.result.columns.device_alias": "udev", + "osquery.result.columns.flags": "rw,nosuid,relatime,size=498680k,nr_inodes=124670,mode=755", + "osquery.result.columns.inodes": "124670", + "osquery.result.columns.inodes_free": "124285", + "osquery.result.columns.path": "/dev", + "osquery.result.columns.type": "devtmpfs", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 35051, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "devpts", + "osquery.result.columns.device_alias": "devpts", + "osquery.result.columns.flags": "rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/dev/pts", + "osquery.result.columns.type": "devpts", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 35581, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "25399", + "osquery.result.columns.blocks_available": "24296", + "osquery.result.columns.blocks_free": "24296", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "tmpfs", + "osquery.result.columns.device_alias": "tmpfs", + "osquery.result.columns.flags": "rw,nosuid,noexec,relatime,size=101596k,mode=755", + "osquery.result.columns.inodes": "126992", + "osquery.result.columns.inodes_free": "126503", + "osquery.result.columns.path": "/run", + "osquery.result.columns.type": "tmpfs", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 36119, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "2524617", + "osquery.result.columns.blocks_available": "1982549", + "osquery.result.columns.blocks_free": "1986645", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "/dev/sda1", + "osquery.result.columns.device_alias": "/dev/sda1", + "osquery.result.columns.flags": "rw,relatime,data=ordered", + "osquery.result.columns.inodes": "1280000", + "osquery.result.columns.inodes_free": "1159125", + "osquery.result.columns.path": "/", + "osquery.result.columns.type": "ext4", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 36650, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "securityfs", + "osquery.result.columns.device_alias": "securityfs", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys/kernel/security", + "osquery.result.columns.type": "securityfs", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 37183, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "126992", + "osquery.result.columns.blocks_available": "126992", + "osquery.result.columns.blocks_free": "126992", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "tmpfs", + "osquery.result.columns.device_alias": "tmpfs", + "osquery.result.columns.flags": "rw,nosuid,nodev", + "osquery.result.columns.inodes": "126992", + "osquery.result.columns.inodes_free": "126991", + "osquery.result.columns.path": "/dev/shm", + "osquery.result.columns.type": "tmpfs", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 37697, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "1280", + "osquery.result.columns.blocks_available": "1280", + "osquery.result.columns.blocks_free": "1280", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "tmpfs", + "osquery.result.columns.device_alias": "tmpfs", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime,size=5120k", + "osquery.result.columns.inodes": "126992", + "osquery.result.columns.inodes_free": "126989", + "osquery.result.columns.path": "/run/lock", + "osquery.result.columns.type": "tmpfs", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 38233, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "126992", + "osquery.result.columns.blocks_available": "126992", + "osquery.result.columns.blocks_free": "126992", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "tmpfs", + "osquery.result.columns.device_alias": "tmpfs", + "osquery.result.columns.flags": "ro,nosuid,nodev,noexec,mode=755", + "osquery.result.columns.inodes": "126992", + "osquery.result.columns.inodes_free": "126976", + "osquery.result.columns.path": "/sys/fs/cgroup", + "osquery.result.columns.type": "tmpfs", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 38770, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "cgroup", + "osquery.result.columns.device_alias": "cgroup", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys/fs/cgroup/systemd", + "osquery.result.columns.type": "cgroup", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 39365, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "pstore", + "osquery.result.columns.device_alias": "pstore", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys/fs/pstore", + "osquery.result.columns.type": "pstore", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 39880, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "cgroup", + "osquery.result.columns.device_alias": "cgroup", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime,cpu,cpuacct", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys/fs/cgroup/cpu,cpuacct", + "osquery.result.columns.type": "cgroup", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 40420, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "cgroup", + "osquery.result.columns.device_alias": "cgroup", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime,perf_event", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys/fs/cgroup/perf_event", + "osquery.result.columns.type": "cgroup", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 40958, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "cgroup", + "osquery.result.columns.device_alias": "cgroup", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime,pids", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys/fs/cgroup/pids", + "osquery.result.columns.type": "cgroup", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 41484, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "cgroup", + "osquery.result.columns.device_alias": "cgroup", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime,cpuset", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys/fs/cgroup/cpuset", + "osquery.result.columns.type": "cgroup", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + }, + { + "@timestamp": "2017-12-07T17:57:21.000Z", + "ecs.version": "1.0.0", + "event.dataset": "osquery.result", + "event.module": "osquery", + "fileset.name": "result", + "input.type": "log", + "log.offset": 42014, + "osquery.result.action": "added", + "osquery.result.calendar_time": "Thu Dec 7 17:57:21 2017 UTC", + "osquery.result.columns.blocks": "0", + "osquery.result.columns.blocks_available": "0", + "osquery.result.columns.blocks_free": "0", + "osquery.result.columns.blocks_size": "4096", + "osquery.result.columns.device": "cgroup", + "osquery.result.columns.device_alias": "cgroup", + "osquery.result.columns.flags": "rw,nosuid,nodev,noexec,relatime,blkio", + "osquery.result.columns.inodes": "0", + "osquery.result.columns.inodes_free": "0", + "osquery.result.columns.path": "/sys/fs/cgroup/blkio", + "osquery.result.columns.type": "cgroup", + "osquery.result.counter": "0", + "osquery.result.decorations.host_uuid": "72E1287B-D1BC-4FC6-B9D8-64F4352776A9", + "osquery.result.decorations.username": "ubuntu", + "osquery.result.epoch": "0", + "osquery.result.host_identifier": "ubuntu-xenial", + "osquery.result.name": "pack_it-compliance_mounts", + "osquery.result.unix_time": "1512669441", + "service.type": "osquery" + } +] \ No newline at end of file diff --git a/filebeat/module/postgresql/log/test/postgresql-ubuntu-9.5.log-expected.json b/filebeat/module/postgresql/log/test/postgresql-ubuntu-9.5.log-expected.json new file mode 100644 index 000000000000..e960a49642a1 --- /dev/null +++ b/filebeat/module/postgresql/log/test/postgresql-ubuntu-9.5.log-expected.json @@ -0,0 +1,1248 @@ +[ + { + "@timestamp": "2017-04-03T22:32:14.322Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 0, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-03 22:32:14.322", + "process.pid": 31225, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-03T22:32:14.322Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 118, + "message": "unexpected EOF on client connection with an open transaction", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-03 22:32:14.322", + "process.pid": 31225, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-03T22:35:22.389Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 236, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-03 22:35:22.389", + "process.pid": 3474, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-03T22:36:56.464Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 353, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-03 22:36:56.464", + "process.pid": 3525, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-03T22:37:12.961Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 470, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-03 22:37:12.961", + "process.pid": 3570, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T21:05:28.549Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 587, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 21:05:28.549", + "process.pid": 21483, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T21:09:41.345Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 705, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 21:09:41.345", + "process.pid": 21597, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T22:45:30.218Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 823, + "message": "operator does not exist: jsonb @> at character 49", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 22:45:30.218", + "process.pid": 22603, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T22:45:30.218Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "HINT", + "log.offset": 932, + "message": "No operator matches the given name and argument type(s). You might need to add explicit type casts.", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 22:45:30.218", + "process.pid": 22603, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T22:45:30.218Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "STATEMENT", + "log.offset": 1090, + "message": "SELECT id, user FROM users WHERE NOT user @> %s", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 22:45:30.218", + "process.pid": 22603, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T22:46:09.751Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 1201, + "message": "column \"%s\" does not exist at character 52", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 22:46:09.751", + "process.pid": 22608, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T22:46:09.751Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "STATEMENT", + "log.offset": 1303, + "message": "SELECT id, user FROM users WHERE NOT user @> \"%s\"", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 22:46:09.751", + "process.pid": 22608, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:02:51.199Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 1416, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:02:51.199", + "process.pid": 24341, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:02:51.199Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 1534, + "message": "unexpected EOF on client connection with an open transaction", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:02:51.199", + "process.pid": 24341, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:04:36.087Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 1652, + "message": "syntax error at or near \"{\" at character 49", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:04:36.087", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:04:36.087Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "STATEMENT", + "log.offset": 1755, + "message": "INSERT INTO users (id, user) VALUES (1, {\"attr\": \"yes\"});", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:04:36.087", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:04:51.462Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 1876, + "message": "syntax error at or near \"{\" at character 49", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:04:51.462", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:04:51.462Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "STATEMENT", + "log.offset": 1979, + "message": "INSERT INTO users (id, user) VALUES (1, {attr: \"yes\"});", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:04:51.462", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:05:06.217Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 2098, + "message": "column \"a\" does not exist at character 42", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:05:06.217", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:05:06.217Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "STATEMENT", + "log.offset": 2199, + "message": "INSERT INTO users (id, user) VALUES (1, '{\"attr\": \"yes\"}');", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:05:06.217", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:05:18.295Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 2322, + "message": "column \"attr\" does not exist at character 42", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:05:18.295", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:05:18.295Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "STATEMENT", + "log.offset": 2426, + "message": "INSERT INTO users (id, user) VALUES (\"1\", '{\"attr\": \"no\"}');", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:05:18.295", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:13:47.505Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 2550, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:13:47.505", + "process.pid": 24489, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-07T23:13:47.505Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 2668, + "message": "unexpected EOF on client connection with an open transaction", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-07 23:13:47.505", + "process.pid": 24489, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-08T12:32:51.056Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "ERROR", + "log.offset": 2786, + "message": "duplicate key value violates unique constraint \"users_pkey\"", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-08 12:32:51.056", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-08T12:32:51.056Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "DETAIL", + "log.offset": 2905, + "message": "Key (id)=(1) already exists.", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-08 12:32:51.056", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-08T12:32:51.056Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "STATEMENT", + "log.offset": 2994, + "message": "INSERT INTO users (id, user) VALUES ('1', '{\"attr\": \"yes\"}');", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-08 12:32:51.056", + "process.pid": 20730, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-08T21:54:37.443Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3119, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-08 21:54:37.443", + "process.pid": 30630, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-08T21:54:37.468Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3237, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-04-08 21:54:37.468", + "process.pid": 30502, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-04-08T21:54:37.618Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3355, + "message": "received fast shutdown request", + "postgresql.log.timestamp": "2017-04-08 21:54:37.618", + "process.pid": 20769, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:54:37.618Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3429, + "message": "aborting any active transactions", + "postgresql.log.timestamp": "2017-04-08 21:54:37.618", + "process.pid": 20769, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:54:37.618Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3505, + "message": "autovacuum launcher shutting down", + "postgresql.log.timestamp": "2017-04-08 21:54:37.618", + "process.pid": 20774, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:54:37.622Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3582, + "message": "shutting down", + "postgresql.log.timestamp": "2017-04-08 21:54:37.622", + "process.pid": 20771, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:54:37.644Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3639, + "message": "database system is shut down", + "postgresql.log.timestamp": "2017-04-08 21:54:37.644", + "process.pid": 20769, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:56:02.932Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3711, + "message": "database system was shut down at 2017-04-08 21:54:37 CEST", + "postgresql.log.timestamp": "2017-04-08 21:56:02.932", + "process.pid": 797, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:56:02.944Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3810, + "message": "MultiXact member wraparound protections are now enabled", + "postgresql.log.timestamp": "2017-04-08 21:56:02.944", + "process.pid": 797, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:56:02.946Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3907, + "message": "database system is ready to accept connections", + "postgresql.log.timestamp": "2017-04-08 21:56:02.946", + "process.pid": 780, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:56:02.947Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 3995, + "message": "autovacuum launcher started", + "postgresql.log.timestamp": "2017-04-08 21:56:02.947", + "process.pid": 802, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-04-08T21:56:03.362Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4064, + "message": "incomplete startup packet", + "postgresql.log.database": "unknown", + "postgresql.log.timestamp": "2017-04-08 21:56:03.362", + "process.pid": 891, + "service.type": "postgresql", + "user.name": "unknown" + }, + { + "@timestamp": "2017-05-27T14:07:53.007Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "UTC", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4151, + "message": "database system was shut down at 2017-05-27 14:07:52 UTC", + "postgresql.log.timestamp": "2017-05-27 14:07:53.007", + "process.pid": 32567, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-05-27T14:07:53.010Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "UTC", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4250, + "message": "MultiXact member wraparound protections are now enabled", + "postgresql.log.timestamp": "2017-05-27 14:07:53.010", + "process.pid": 32567, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-05-27T14:07:53.015Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "UTC", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4348, + "message": "database system is ready to accept connections", + "postgresql.log.timestamp": "2017-05-27 14:07:53.015", + "process.pid": 32566, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-05-27T14:07:53.016Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "UTC", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4437, + "message": "autovacuum launcher started", + "postgresql.log.timestamp": "2017-05-27 14:07:53.016", + "process.pid": 32571, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-05-27T14:07:53.463Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "UTC", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4507, + "message": "incomplete startup packet", + "postgresql.log.database": "unknown", + "postgresql.log.timestamp": "2017-05-27 14:07:53.463", + "process.pid": 32573, + "service.type": "postgresql", + "user.name": "unknown" + }, + { + "@timestamp": "2017-05-27T14:08:13.661Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "UTC", + "fileset.name": "log", + "input.type": "log", + "log.level": "FATAL", + "log.offset": 4595, + "message": "database \"mydb\" does not exist", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-05-27 14:08:13.661", + "process.pid": 1308, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-05-27T14:59:26.553Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "UTC", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4683, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-05-27 14:59:26.553", + "process.pid": 1994, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-05-27T14:59:26.555Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "UTC", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4799, + "message": "could not receive data from client: Connection reset by peer", + "postgresql.log.database": "mydb", + "postgresql.log.timestamp": "2017-05-27 14:59:26.555", + "process.pid": 1989, + "service.type": "postgresql", + "user.name": "postgres" + }, + { + "@timestamp": "2017-06-06T07:54:13.753Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4915, + "message": "received fast shutdown request", + "postgresql.log.timestamp": "2017-06-06 07:54:13.753", + "process.pid": 9110, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:54:13.753Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 4988, + "message": "aborting any active transactions", + "postgresql.log.timestamp": "2017-06-06 07:54:13.753", + "process.pid": 9110, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:54:13.753Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5063, + "message": "autovacuum launcher shutting down", + "postgresql.log.timestamp": "2017-06-06 07:54:13.753", + "process.pid": 9115, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:54:13.755Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5139, + "message": "shutting down", + "postgresql.log.timestamp": "2017-06-06 07:54:13.755", + "process.pid": 9112, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:54:13.816Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5195, + "message": "database system is shut down", + "postgresql.log.timestamp": "2017-06-06 07:54:13.816", + "process.pid": 9110, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:55:39.725Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5266, + "message": "database system was shut down at 2017-06-06 07:54:13 CEST", + "postgresql.log.timestamp": "2017-06-06 07:55:39.725", + "process.pid": 12969, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:55:39.736Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5367, + "message": "MultiXact member wraparound protections are now enabled", + "postgresql.log.timestamp": "2017-06-06 07:55:39.736", + "process.pid": 12969, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:55:39.739Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5466, + "message": "database system is ready to accept connections", + "postgresql.log.timestamp": "2017-06-06 07:55:39.739", + "process.pid": 12968, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:55:39.739Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5556, + "message": "autovacuum launcher started", + "postgresql.log.timestamp": "2017-06-06 07:55:39.739", + "process.pid": 12973, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-06T07:55:40.155Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5627, + "message": "incomplete startup packet", + "postgresql.log.database": "unknown", + "postgresql.log.timestamp": "2017-06-06 07:55:40.155", + "process.pid": 12975, + "service.type": "postgresql", + "user.name": "unknown" + }, + { + "@timestamp": "2017-06-06T07:55:40.156Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5716, + "message": "incomplete startup packet", + "postgresql.log.database": "unknown", + "postgresql.log.timestamp": "2017-06-06 07:55:40.156", + "process.pid": 12975, + "service.type": "postgresql", + "user.name": "unknown" + }, + { + "@timestamp": "2017-06-10T19:37:30.681Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5805, + "message": "database system was shut down at 2017-06-10 19:37:29 CEST", + "postgresql.log.timestamp": "2017-06-10 19:37:30.681", + "process.pid": 17398, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T19:37:30.695Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 5906, + "message": "MultiXact member wraparound protections are now enabled", + "postgresql.log.timestamp": "2017-06-10 19:37:30.695", + "process.pid": 17398, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T19:37:30.702Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6005, + "message": "database system is ready to accept connections", + "postgresql.log.timestamp": "2017-06-10 19:37:30.702", + "process.pid": 17397, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T19:37:30.702Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6095, + "message": "autovacuum launcher started", + "postgresql.log.timestamp": "2017-06-10 19:37:30.702", + "process.pid": 17402, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T19:37:31.104Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6166, + "message": "incomplete startup packet", + "postgresql.log.database": "unknown", + "postgresql.log.timestamp": "2017-06-10 19:37:31.104", + "process.pid": 17404, + "service.type": "postgresql", + "user.name": "unknown" + }, + { + "@timestamp": "2017-06-10T20:27:55.911Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6255, + "message": "received fast shutdown request", + "postgresql.log.timestamp": "2017-06-10 20:27:55.911", + "process.pid": 17397, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:55.911Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6329, + "message": "aborting any active transactions", + "postgresql.log.timestamp": "2017-06-10 20:27:55.911", + "process.pid": 17397, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:55.911Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6405, + "message": "autovacuum launcher shutting down", + "postgresql.log.timestamp": "2017-06-10 20:27:55.911", + "process.pid": 17402, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:55.914Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6482, + "message": "shutting down", + "postgresql.log.timestamp": "2017-06-10 20:27:55.914", + "process.pid": 17399, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:55.973Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6539, + "message": "database system is shut down", + "postgresql.log.timestamp": "2017-06-10 20:27:55.973", + "process.pid": 17397, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:57.022Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6611, + "message": "database system was shut down at 2017-06-10 20:27:55 CEST", + "postgresql.log.timestamp": "2017-06-10 20:27:57.022", + "process.pid": 24490, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:57.032Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6712, + "message": "MultiXact member wraparound protections are now enabled", + "postgresql.log.timestamp": "2017-06-10 20:27:57.032", + "process.pid": 24490, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:57.035Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6811, + "message": "autovacuum launcher started", + "postgresql.log.timestamp": "2017-06-10 20:27:57.035", + "process.pid": 24494, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:57.035Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6882, + "message": "database system is ready to accept connections", + "postgresql.log.timestamp": "2017-06-10 20:27:57.035", + "process.pid": 24489, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-10T20:27:57.475Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 6972, + "message": "incomplete startup packet", + "postgresql.log.database": "unknown", + "postgresql.log.timestamp": "2017-06-10 20:27:57.475", + "process.pid": 24496, + "service.type": "postgresql", + "user.name": "unknown" + }, + { + "@timestamp": "2017-06-17T16:58:03.937Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 7061, + "message": "received fast shutdown request", + "postgresql.log.timestamp": "2017-06-17 16:58:03.937", + "process.pid": 24489, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-17T16:58:03.937Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 7135, + "message": "aborting any active transactions", + "postgresql.log.timestamp": "2017-06-17 16:58:03.937", + "process.pid": 24489, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-17T16:58:03.938Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 7211, + "message": "autovacuum launcher shutting down", + "postgresql.log.timestamp": "2017-06-17 16:58:03.938", + "process.pid": 24494, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-17T16:58:03.940Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 7288, + "message": "shutting down", + "postgresql.log.timestamp": "2017-06-17 16:58:03.940", + "process.pid": 24491, + "service.type": "postgresql" + }, + { + "@timestamp": "2017-06-17T16:58:04.040Z", + "ecs.version": "1.0.0", + "event.dataset": "postgresql.log", + "event.module": "postgresql", + "event.timezone": "CEST", + "fileset.name": "log", + "input.type": "log", + "log.level": "LOG", + "log.offset": 7345, + "message": "database system is shut down", + "postgresql.log.timestamp": "2017-06-17 16:58:04.040", + "process.pid": 24489, + "service.type": "postgresql" + } +] \ No newline at end of file diff --git a/filebeat/module/redis/log/test/redis-darwin-3.0.2.log-expected.json b/filebeat/module/redis/log/test/redis-darwin-3.0.2.log-expected.json new file mode 100644 index 000000000000..20c494c90645 --- /dev/null +++ b/filebeat/module/redis/log/test/redis-darwin-3.0.2.log-expected.json @@ -0,0 +1,232 @@ +[ + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 0, + "message": "Increased maximum number of open files to 10032 (it was originally set to 4864).", + "process.pid": 4961, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "warning", + "log.offset": 1261, + "message": "Server started, Redis version 3.0.2", + "process.pid": 4961, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 1326, + "message": "DB loaded from disk: 0.001 seconds", + "process.pid": 4961, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 1390, + "message": "The server is now ready to accept connections on port 6379", + "process.pid": 4961, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.offset": 1478, + "message": "Received SIGINT scheduling shutdown...", + "process.pid": 4961, + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "warning", + "log.offset": 1550, + "message": "User requested shutdown...", + "process.pid": 4961, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 1606, + "message": "Saving the final RDB snapshot before exiting.", + "process.pid": 4961, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 1681, + "message": "DB saved on disk", + "process.pid": 4961, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "warning", + "log.offset": 1727, + "message": "Redis is now ready to exit, bye bye...", + "process.pid": 4961, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 1795, + "message": "Increased maximum number of open files to 10032 (it was originally set to 4864).", + "process.pid": 5092, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "warning", + "log.offset": 3056, + "message": "Server started, Redis version 3.0.2", + "process.pid": 5092, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 3121, + "message": "DB loaded from disk: 0.000 seconds", + "process.pid": 5092, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 3185, + "message": "The server is now ready to accept connections on port 6379", + "process.pid": 5092, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.offset": 3273, + "message": "Received SIGINT scheduling shutdown...", + "process.pid": 5092, + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "warning", + "log.offset": 3345, + "message": "User requested shutdown...", + "process.pid": 5092, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 3401, + "message": "Saving the final RDB snapshot before exiting.", + "process.pid": 5092, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 3476, + "message": "DB saved on disk", + "process.pid": 5092, + "redis.log.role": "master", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "warning", + "log.offset": 3522, + "message": "Redis is now ready to exit, bye bye...", + "process.pid": 5092, + "redis.log.role": "master", + "service.type": "redis" + } +] \ No newline at end of file diff --git a/filebeat/module/redis/log/test/redis-debian-1.2.6.log-expected.json b/filebeat/module/redis/log/test/redis-debian-1.2.6.log-expected.json new file mode 100644 index 000000000000..6eaef19df796 --- /dev/null +++ b/filebeat/module/redis/log/test/redis-debian-1.2.6.log-expected.json @@ -0,0 +1,1102 @@ +[ + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 0, + "message": "Server started, Redis version 1.2.6", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 54, + "message": "WARNING overcommit_memory is set to 0! Background save may fail under low condition memory. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 325, + "message": "The server is now ready to accept connections on port 6379", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 402, + "message": "Server started, Redis version 1.2.6", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 456, + "message": "WARNING overcommit_memory is set to 0! Background save may fail under low condition memory. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 727, + "message": "The server is now ready to accept connections on port 6379", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 804, + "message": "Server started, Redis version 1.2.6", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 858, + "message": "WARNING overcommit_memory is set to 0! Background save may fail under low condition memory. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1129, + "message": "The server is now ready to accept connections on port 6379", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1206, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1294, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1382, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1470, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1558, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1646, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1734, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1822, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1910, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 1998, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2086, + "message": "0 clients connected (0 slaves), 618932 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2174, + "message": "Accepted 127.0.0.1:56742", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2217, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2305, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2393, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2481, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2569, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2657, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2745, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2833, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 2921, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3009, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3097, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3185, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3273, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3361, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3449, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3537, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3625, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3713, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3801, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3889, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 3977, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4065, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4153, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4241, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4329, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4417, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4505, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4593, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4681, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4769, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4857, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 4945, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5033, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5121, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5209, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5297, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5385, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5473, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5561, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5649, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5737, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5825, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 5913, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6001, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6089, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6177, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6265, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6353, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6441, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6529, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6617, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6705, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6793, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6881, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 6969, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7057, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7145, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7233, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7321, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7409, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7497, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7585, + "message": "1 clients connected (0 slaves), 619381 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7673, + "message": "Closing idle client", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7711, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7799, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7887, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 7975, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8063, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8151, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8239, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8327, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8415, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8503, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8591, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8679, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8767, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8855, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 8943, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "debug", + "log.offset": 9031, + "message": "0 clients connected (0 slaves), 619100 bytes in use, 0 shared objects", + "service.type": "redis" + } +] \ No newline at end of file diff --git a/filebeat/module/redis/log/test/redis-windows-2.4.6.log-expected.json b/filebeat/module/redis/log/test/redis-windows-2.4.6.log-expected.json new file mode 100644 index 000000000000..fc438b666dbf --- /dev/null +++ b/filebeat/module/redis/log/test/redis-windows-2.4.6.log-expected.json @@ -0,0 +1,376 @@ +[ + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 0, + "message": "Server started, Redis version 2.4.6", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "warning", + "log.offset": 61, + "message": "Open data file dump.rdb: No such file or directory", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "notice", + "log.offset": 137, + "message": "The server is now ready to accept connections on port 6379", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 221, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 299, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 377, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 455, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 533, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 611, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 689, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 767, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 845, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 923, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1001, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1079, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1157, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1235, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1313, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1391, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1469, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1547, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1625, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1703, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1781, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1859, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 1937, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 2015, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 2093, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 2171, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 2249, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 2327, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 2405, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 2483, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "redis.log", + "event.module": "redis", + "fileset.name": "log", + "input.type": "log", + "log.level": "verbose", + "log.offset": 2561, + "message": "0 clients connected (0 slaves), 1179968 bytes in use", + "service.type": "redis" + } +] \ No newline at end of file diff --git a/filebeat/module/system/auth/test/auth-ubuntu1204.log-expected.json b/filebeat/module/system/auth/test/auth-ubuntu1204.log-expected.json new file mode 100644 index 000000000000..9a0d53901ed5 --- /dev/null +++ b/filebeat/module/system/auth/test/auth-ubuntu1204.log-expected.json @@ -0,0 +1,1327 @@ +[ + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 0, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 81, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-lhspyyxxlfzpytwsebjoegenjxyjombo; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675177.72-26828938879074/get_url; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675177.72-26828938879074/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 464, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 570, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 655, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 736, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-xspkubktopzqiwiofvdhqaglconkrgwp; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675181.24-158548606882799/get_url; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675181.24-158548606882799/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 1121, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 1227, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 1312, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 1393, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-vxcrqvczsrjrrsjcokculalhrgfsxqzl; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675202.4-199750250589919/command; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675202.4-199750250589919/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 1776, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 1882, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 1967, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 2048, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-gruorqbeefuuhfprfoqzsftalatgwwvf; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675203.3-59927285912173/file; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675203.3-59927285912173/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 2426, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 2532, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 2617, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 2698, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-fnthqelgspkbnpnxlsknzcbyxbqqxpmt; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675204.07-135388534337396/command; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675204.07-135388534337396/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 3083, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 3189, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 3274, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "input.type": "log", + "log.offset": 3355, + "message": "last message repeated 2 times", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 3414, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-wagdvfiuqxtryvmyrqlfcwoxeqqrxejt; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675206.28-198308747142204/async_wrapper 321853834469 45 /home/vagrant/.ansible/tmp/ansible-tmp-1486675206.28-198308747142204/command /home/vagrant/.ansible/tmp/ansible-tmp-1486675206.28-198308747142204/arguments; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675206.28-198308747142204/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 3977, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 4083, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 4168, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 4249, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-lkgydmrwiywdfvxfoxmgntufiumtzpmq; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675212.66-81790186240643/command; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675212.66-81790186240643/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 4632, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 4738, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 4823, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 4904, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-mjsapklbglujaoktlsyytirwygexdily; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675218.96-234174787135180/command; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675218.96-234174787135180/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 5289, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 5395, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 5480, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 5561, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-kvmafqtdnnvnyfyqlnoovickcavkqwdy; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675219.83-99205535237718/setup; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675219.83-99205535237718/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 5942, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 6048, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 6133, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 6214, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-nhrnwbdpypmsmvcstuihfqfbcvpxrmys; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675224.58-12467498973476/get_url; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675224.58-12467498973476/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 6597, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 6703, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 6788, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 6869, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-buzartmsbrirxgcoibjpsqjkldihhexh; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675228.25-195852789001210/get_url; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675228.25-195852789001210/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 7254, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 7360, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 7445, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 7526, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-swwkpvmnxhcuduxerfbgclhsmgbhwzie; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675247.78-128146395950020/command; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675247.78-128146395950020/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 7911, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 8017, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 8102, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 8183, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-raffykohamlcbnpxzipksbvfpjbfpagy; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675250.82-190689706060358/apt; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675250.82-190689706060358/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 8564, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 8670, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 8755, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 8836, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-dfoxiractbmtavfiwfnhzfkftipjumph; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675251.6-137767038423665/apt; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675251.6-137767038423665/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 9215, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 9321, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 9406, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 9487, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-jveaoynmhsmeodakzfhhaodihyroxobu; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675261.29-208287411335817/file; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675261.29-208287411335817/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 9869, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 9975, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 10060, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-lwzhcvorajmjyxsrqydafzapoeescwaf; rc=flag; [ -r /etc/metricbeat/metricbeat.yml ] || rc=2; [ -f /etc/metricbeat/metricbeat.yml ] || rc=1; [ -d /etc/metricbeat/metricbeat.yml ] && rc=3; python -V 2>/dev/null || rc=4; [ x\"$rc\" != \"xflag\" ] && echo \"${rc} \"/etc/metricbeat/metricbeat.yml && exit 0; (python -c 'import hashlib; BLOCKSIZE = 65536; hasher = hashlib.sha1();#012afile = open(\"'/etc/metricbeat/metricbeat.yml'\", \"rb\")#012buf = afile.read(BLOCKSIZE)#012while len(buf) > 0:#012#011hasher.update(buf)#012#011buf = afile.read(BLOCKSIZE)#012afile.close()#012print(hasher.hexdigest())' 2>/dev/null) || (python -c 'import sha; BLOCKSIZE = 65536; hasher = sha.sha();#012afile = open(\"'/etc/metricbeat/metricbeat.yml'\", \"rb\")#012buf = afile.read(BLOCKSIZE)#012while len(buf) > 0:#012#011hasher.update(buf)#012#011buf = afile.read(BLOCKSIZE)#012afile.close()#012print(hasher.hexdigest())' 2>/dev/null) || (echo '0 ", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 11099, + "message": " vagrant : (command continued) '/etc/metricbeat/metricbeat.yml)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 11195, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 11301, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 11386, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 11467, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 11548, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-yesyhegdrhiolusidthffdemrxphqdfm; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675262.15-83340738940485/copy; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675262.15-83340738940485/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 11928, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 12034, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 12119, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 12200, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-vqbyiylfjufyxlwvxcwusklrtmiekpia; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675263.16-15325827909434/service; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675263.16-15325827909434/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 12583, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 12689, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 12774, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 12855, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-osrbplljwskuafamtjuanhwfxqdxmfbj; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675264.47-179299683847940/wait_for; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675264.47-179299683847940/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 13241, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 13347, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 13432, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 13513, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-xqypdfdxashhaekghbfnpdlcgsmfarmy; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675265.39-273766954542007/service; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675265.39-273766954542007/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 13898, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 14004, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 14089, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 14170, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-ktkmpxhjivossxngupfgrqfobhopruzp; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675266.58-47565152594552/apt; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675266.58-47565152594552/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 14549, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 14655, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 14740, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 14821, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-erpqyqrmifxazcclvbqytjwxgdplhtpy; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675275.74-155140815824587/file; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675275.74-155140815824587/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 15203, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 15309, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 15394, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 15475, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-cfqjebskszjdqpksprlbjpbttastwzyp; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675276.62-248748589735433/get_url; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675276.62-248748589735433/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 15860, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 15966, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 16051, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 16132, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-oxbowrzvfhsebemuiblilqwvdxvnwztv; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675280.28-272460786101534/get_url; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675280.28-272460786101534/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 16517, + "message": "pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 16623, + "message": "pam_unix(sudo:session): session closed for user root", + "process.name": "sudo", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 16708, + "message": "subsystem request for sftp by user vagrant", + "process.name": "sshd", + "process.pid": 8317, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "precise32", + "input.type": "log", + "log.offset": 16789, + "process.name": "sudo", + "service.type": "system", + "system.auth.sudo.command": "/bin/sh -c echo BECOME-SUCCESS-ohlhhhazvtawqawluadjlxglowwenmyc; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1486675302.51-201837201796085/command; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1486675302.51-201837201796085/ >/dev/null 2>&1", + "system.auth.sudo.pwd": "/home/vagrant", + "system.auth.sudo.tty": "pts/0", + "system.auth.sudo.user": "root", + "user.name": "vagrant" + } +] \ No newline at end of file diff --git a/filebeat/module/system/auth/test/secure-rhel7.log-expected.json b/filebeat/module/system/auth/test/secure-rhel7.log-expected.json new file mode 100644 index 000000000000..92f3d5e29fb1 --- /dev/null +++ b/filebeat/module/system/auth/test/secure-rhel7.log-expected.json @@ -0,0 +1,1792 @@ +[ + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 0, + "process.name": "sshd", + "process.pid": 2738, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1786, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 97, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2738, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 209, + "process.name": "sshd", + "process.pid": 2738, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1786, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 306, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2738, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 418, + "process.name": "sshd", + "process.pid": 2738, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1786, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 515, + "message": "fatal: Read from socket failed: Connection reset by peer [preauth]", + "process.name": "sshd", + "process.pid": 2738, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 618, + "message": "PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2738, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 760, + "message": "PAM service(sshd) ignoring max retries; 5 > 3", + "process.name": "sshd", + "process.pid": 2738, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 842, + "message": "pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 993, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1105, + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3576, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1202, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1314, + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3576, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1411, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1523, + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3576, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1620, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1732, + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3576, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1829, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 1941, + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3576, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2038, + "message": "fatal: Read from socket failed: Connection reset by peer [preauth]", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2141, + "message": "PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2283, + "message": "PAM service(sshd) ignoring max retries; 5 > 3", + "process.name": "sshd", + "process.pid": 2742, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2365, + "message": "pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2516, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2628, + "message": "pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.27 user=root", + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2777, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2889, + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1996, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 2986, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3098, + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 23.1167, + "source.geo.location.lon": 113.25, + "source.geo.region_iso_code": "CN-GD", + "source.geo.region_name": "Guangdong", + "source.ip": "116.31.116.27", + "source.port": 26714, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3194, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3306, + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1996, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3403, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3515, + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 23.1167, + "source.geo.location.lon": 113.25, + "source.geo.region_iso_code": "CN-GD", + "source.geo.region_name": "Guangdong", + "source.ip": "116.31.116.27", + "source.port": 26714, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3611, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3723, + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1996, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3820, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 3932, + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 23.1167, + "source.geo.location.lon": 113.25, + "source.geo.region_iso_code": "CN-GD", + "source.geo.region_name": "Guangdong", + "source.ip": "116.31.116.27", + "source.port": 26714, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4028, + "message": "Received disconnect from 116.31.116.27: 11: [preauth]", + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4119, + "message": "PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.27 user=root", + "process.name": "sshd", + "process.pid": 2758, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4259, + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1996, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4356, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4468, + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1996, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4565, + "message": "fatal: Read from socket failed: Connection reset by peer [preauth]", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4668, + "message": "PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4810, + "message": "PAM service(sshd) ignoring max retries; 5 > 3", + "process.name": "sshd", + "process.pid": 2754, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 4892, + "message": "pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5043, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5155, + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1605, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5252, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5364, + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1605, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5461, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5573, + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1605, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5670, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5782, + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1605, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5879, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 5991, + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1605, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6088, + "message": "fatal: Read from socket failed: Connection reset by peer [preauth]", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6191, + "message": "PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6333, + "message": "PAM service(sshd) ignoring max retries; 5 > 3", + "process.name": "sshd", + "process.pid": 2762, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6415, + "message": "pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6566, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6678, + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1166, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6775, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6887, + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1166, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 6984, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7096, + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1166, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7193, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7305, + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1166, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7402, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7514, + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1166, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7611, + "message": "fatal: Read from socket failed: Connection reset by peer [preauth]", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7714, + "message": "PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7856, + "message": "PAM service(sshd) ignoring max retries; 5 > 3", + "process.name": "sshd", + "process.pid": 2766, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 7938, + "message": "pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.27 user=root", + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8087, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8199, + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 23.1167, + "source.geo.location.lon": 113.25, + "source.geo.region_iso_code": "CN-GD", + "source.geo.region_name": "Guangdong", + "source.ip": "116.31.116.27", + "source.port": 13996, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8295, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8407, + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 23.1167, + "source.geo.location.lon": 113.25, + "source.geo.region_iso_code": "CN-GD", + "source.geo.region_name": "Guangdong", + "source.ip": "116.31.116.27", + "source.port": 13996, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8503, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8615, + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 23.1167, + "source.geo.location.lon": 113.25, + "source.geo.region_iso_code": "CN-GD", + "source.geo.region_name": "Guangdong", + "source.ip": "116.31.116.27", + "source.port": 13996, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8711, + "message": "Received disconnect from 116.31.116.27: 11: [preauth]", + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8802, + "message": "PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.27 user=root", + "process.name": "sshd", + "process.pid": 2778, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 8942, + "message": "pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9093, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9205, + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3300, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9302, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9414, + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3300, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9511, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9623, + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3300, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9720, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9832, + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3300, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 9929, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 10041, + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 3300, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 10138, + "message": "fatal: Read from socket failed: Connection reset by peer [preauth]", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 10241, + "message": "PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 10383, + "message": "PAM service(sshd) ignoring max retries; 5 > 3", + "process.name": "sshd", + "process.pid": 2785, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 10465, + "message": "pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=202.109.143.106 user=root", + "process.name": "sshd", + "process.pid": 2797, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 10616, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2797, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", + "event.dataset": "system.auth", + "event.module": "system", + "event.outcome": "failure", + "event.type": "authentication_failure", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 10728, + "process.name": "sshd", + "process.pid": 2797, + "service.type": "system", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 28.55, + "source.geo.location.lon": 115.9333, + "source.geo.region_iso_code": "CN-JX", + "source.geo.region_name": "Jiangxi", + "source.ip": "202.109.143.106", + "source.port": 1347, + "system.auth.ssh.event": "Failed", + "system.auth.ssh.method": "password", + "user.name": "root" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.auth", + "event.module": "system", + "fileset.name": "auth", + "host.hostname": "slave22", + "input.type": "log", + "log.offset": 10825, + "message": "pam_succeed_if(sshd:auth): requirement \"uid >= 1000\" not met by user \"root\"", + "process.name": "sshd", + "process.pid": 2797, + "service.type": "system" + } +] \ No newline at end of file diff --git a/filebeat/module/system/auth/test/test.log-expected.json b/filebeat/module/system/auth/test/test.log-expected.json index b33632f39fd5..d44abb0a1f0c 100644 --- a/filebeat/module/system/auth/test/test.log-expected.json +++ b/filebeat/module/system/auth/test/test.log-expected.json @@ -1,12 +1,11 @@ [ { "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", "event.dataset": "system.auth", "event.module": "system", - "system.auth.ssh.event": "Accepted", "event.outcome": "success", - "event.category": "authentication", - "event.action": "ssh_login", "event.type": "authentication_success", "fileset.name": "auth", "host.hostname": "localhost", @@ -17,18 +16,18 @@ "service.type": "system", "source.ip": "10.0.2.2", "source.port": 63673, + "system.auth.ssh.event": "Accepted", "system.auth.ssh.method": "publickey", "system.auth.ssh.signature": "RSA 39:33:99:e9:a0:dc:f2:33:a3:e5:72:3b:7c:3a:56:84", "user.name": "vagrant" }, { "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", "event.dataset": "system.auth", "event.module": "system", - "system.auth.ssh.event": "Accepted", "event.outcome": "success", - "event.category": "authentication", - "event.action": "ssh_login", "event.type": "authentication_success", "fileset.name": "auth", "host.hostname": "localhost", @@ -39,17 +38,17 @@ "service.type": "system", "source.ip": "192.168.33.1", "source.port": 58803, + "system.auth.ssh.event": "Accepted", "system.auth.ssh.method": "password", "user.name": "vagrant" }, { "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", "event.dataset": "system.auth", "event.module": "system", - "system.auth.ssh.event": "Invalid", "event.outcome": "failure", - "event.category": "authentication", - "event.action": "ssh_login", "event.type": "authentication_failure", "fileset.name": "auth", "host.hostname": "localhost", @@ -59,16 +58,16 @@ "process.pid": 3430, "service.type": "system", "source.ip": "10.0.2.2", + "system.auth.ssh.event": "Invalid", "user.name": "test" }, { "ecs.version": "1.0.0", + "event.action": "ssh_login", + "event.category": "authentication", "event.dataset": "system.auth", "event.module": "system", - "system.auth.ssh.event": "Failed", "event.outcome": "failure", - "event.category": "authentication", - "event.action": "ssh_login", "event.type": "authentication_failure", "fileset.name": "auth", "host.hostname": "slave22", @@ -85,6 +84,7 @@ "source.geo.region_name": "Guangdong", "source.ip": "116.31.116.24", "source.port": 29160, + "system.auth.ssh.event": "Failed", "system.auth.ssh.method": "password", "user.name": "root" }, @@ -186,4 +186,4 @@ "user.id": "48", "user.name": "apache" } -] +] \ No newline at end of file diff --git a/filebeat/module/system/syslog/test/darwin-syslog.log-expected.json b/filebeat/module/system/syslog/test/darwin-syslog.log-expected.json new file mode 100644 index 000000000000..3fcc039742d4 --- /dev/null +++ b/filebeat/module/system/syslog/test/darwin-syslog.log-expected.json @@ -0,0 +1,1302 @@ +[ + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 0, + "message": "2016-12-13 11:35:28.419 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSAgentApp performSelfUpdateWithEngine:] Finished self update check.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 220, + "message": "2016-12-13 11:35:28.420 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSAgentApp updateProductWithProductID:usingEngine:] Checking for updates for \"All Products\" using engine \n\t\t>>\n\t\tprocessor=\n\t\t\tisProcessing=NO actionsCompleted=0 progress=0.00\n\t\t\terrors=0 currentActionErrors=0\n\t\t\tevents=0 currentActionEvents=0\n\t\t\tactionQueue=( )\n\t\t>\n\t\tdelegate=(null)\n\t\tserverInfoStore=(null)\n\t\terrors=0\n\t>", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 1127, + "message": "2016-12-13 11:35:28.421 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSUpdateEngine updateAllExceptProduct:] KSUpdateEngine updating all installed products, except:'com.google.Keystone'.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 1396, + "message": "2016-12-13 11:35:28.422 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSCheckAction performAction] KSCheckAction checking 2 ticket(s).", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 1612, + "message": "2016-12-13 11:35:28.428 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSUpdateCheckAction performAction] KSUpdateCheckAction starting update check for ticket(s): {(\n\t\t\n\t\t\tserverType=Omaha\n\t\t\turl=https://tools.google.com/service/update2\n\t\t\tcreationDate=2015-06-25 15:40:23\n\t\t\ttagPath=/Applications/Google Chrome.app/Contents/Info.plist\n\t\t\ttagKey=KSChannelID\n\t\t\tbrandPath=/Users/tsg/Library/Google/Google Chrome Brand.plist\n\t\t\tbrandKey=KSBrandID\n\t\t\tversionPath=/Applications/Google Chrome.app/Contents/Info.plist\n\t\t\tversionKey=KSVersion\n\t\t\tcohort=1:1y5:gy3@0.05\n\t\t\tcohortName=Stable\n\t\t\tticketVersion=1\n\t\t>,\n\t\t\n\t\t\tserverType=Omaha\n\t\t\turl=https://tools.google.com/service/update2\n\t\t\tcreationDate=2015-09-11 20:38:12\n\t\t\tticketVersion=1\n\t\t>\n\t)}\n\tUsing server: \n\t>", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 2833, + "message": "2016-12-13 11:35:28.446 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] +[KSCodeSigningVerification verifyBundle:applicationId:error:] KSCodeSigningVerification verifying code signing for '/Applications/Google Chrome.app' with the requirement 'anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and certificate leaf[field.1.2.840.113635.100.6.1.13] exists and certificate leaf[subject.OU]=\"EQHXZ8M8AV\" and (identifier=\"com.google.Chrome\")'", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 3377, + "message": "2016-12-13 11:35:29.430 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] +[KSCodeSigningVerification verifyBundle:applicationId:error:] KSCodeSigningVerification verifying code signing for '/Applications/Google Drive.app' with the requirement 'anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and certificate leaf[field.1.2.840.113635.100.6.1.13] exists and certificate leaf[subject.OU]=\"EQHXZ8M8AV\" and (identifier=\"com.google.GoogleDrive\")'", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 3925, + "message": "2016-12-13 11:35:30.115 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSUpdateCheckAction performAction] KSUpdateCheckAction running KSServerUpdateRequest: \n\t\turl=\"https://tools.google.com/service/update2?cup2hreq=423332d883f010d5b10e169646ed851278047f76e6c5d4dbfa2233ef66e3b141&cup2key=6:1566315822\"\n\t\tfallbackURLs=(\n\t\t\thttp://tools.google.com/service/update2?cup2hreq=423332d883f010d5b10e169646ed851278047f76e6c5d4dbfa2233ef66e3b141&cup2key=6:1617080069\n\t\t)\n\t\trunningFetchers=0\n\t\ttickets=2\n\t\tbody=\n\t\t\t\n\t\t\t\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t\n\t\theaders={\n\t\t\t\"X-GoogleUpdate-Interactivity\" = bg;\n\t\t}\n\t>", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 5675, + "message": "2016-12-13 11:35:30.116 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSOutOfProcessFetcher beginFetchWithDelegate:] KSOutOfProcessFetcher start fetch from URL: \"https://tools.google.com/service/update2?cup2hreq=423332d883f010d5b10e169646ed851278047f76e6c5d4dbfa2233ef66e3b141&cup2key=6:1566315822\"", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 6055, + "message": "2016-12-13 11:35:30.117 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSOutOfProcessFetcher(PrivateMethods) launchedHelperTaskForToolPath:error:] KSOutOfProcessFetcher launched '/Users/tsg/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksfetch' with process id: 21414", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 6436, + "message": "2016-12-13 11:35:30.118 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSOutOfProcessFetcher beginFetchWithDelegate:] KSOutOfProcessFetcher sending both request and download file location to the helper.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 6719, + "message": "2016-12-13 11:35:30.118 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] KSSendAllDataToHelper() KSHelperTool wrote 2383 bytes to the helper input.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 6943, + "message": "2016-12-13 11:35:30.118 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSOutOfProcessFetcher beginFetchWithDelegate:] Closing the file handle.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 7166, + "message": "2016-12-13 11:35:30.118 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSOutOfProcessFetcher beginFetchWithDelegate:] KSOutOfProcessFetcher fetching from URL: \"https://tools.google.com/service/update2?cup2hreq=423332d883f010d5b10e169646ed851278047f76e6c5d4dbfa2233ef66e3b141&cup2key=6:1566315822\"", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 7543, + "message": "2016-12-13 11:35:30.149 ksfetch[21414/0x7fffcc3f93c0] [lvl=2] KSHelperReceiveAllData() KSHelperTool read 2383 bytes from stdin.", + "process.name": "ksfetch", + "process.pid": 21414, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 7722, + "message": "2016-12-13 11:35:30.151 ksfetch[21414/0x7fffcc3f93c0] [lvl=2] main() Fetcher received a request: { URL: https://tools.google.com/service/update2?cup2hreq=423332d883f010d5b10e169646ed851278047f76e6c5d4dbfa2233ef66e3b141&cup2key=6:1566315822 }", + "process.name": "ksfetch", + "process.pid": 21414, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 8050, + "message": "2016-12-13 11:35:30.151 ksfetch[21414/0x7fffcc3f93c0] [lvl=2] main() Fetcher received a download path: /tmp/KSOutOfProcessFetcher.QTqOLkktQz/download", + "process.name": "ksfetch", + "process.pid": 21414, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 8251, + "message": "2016-12-13 11:35:30.152 ksfetch[21414/0x7fffcc3f93c0] [lvl=2] main() ksfetch fetching URL ( { URL: https://tools.google.com/service/update2?cup2hreq=423332d883f010d5b10e169646ed851278047f76e6c5d4dbfa2233ef66e3b141&cup2key=6:1566315822 }) to folder:/tmp/KSOutOfProcessFetcher.QTqOLkktQz/download", + "process.name": "ksfetch", + "process.pid": 21414, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 8631, + "message": "2016-12-13 11:35:30.152 ksfetch[21414/0x7fffcc3f93c0] [lvl=2] main() Setting up download file handles...", + "process.name": "ksfetch", + "process.pid": 21414, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 8787, + "message": "2016-12-13 11:35:30.348 ksfetch[21414/0x7fffcc3f93c0] [lvl=2] -[FetchDelegate fetcher:finishedWithData:] Fetcher downloaded successfully data of length: 0", + "process.name": "ksfetch", + "process.pid": 21414, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 8993, + "message": "2016-12-13 11:35:30.348 ksfetch[21414/0x7fffcc3f93c0] [lvl=2] main() ksfetch done fetching.", + "process.name": "ksfetch", + "process.pid": 21414, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 9136, + "message": "2016-12-13 11:35:30.351 ksfetch[21414/0x7fffcc3f93c0] [lvl=2] main() Fetcher is exiting.", + "process.name": "ksfetch", + "process.pid": 21414, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 9276, + "message": "2016-12-13 11:35:30.354 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSOutOfProcessFetcher(PrivateMethods) helperErrorAvailable:] KSOutOfProcessFetcher helper tool raw STDERR:\n\t:\t<>", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 9540, + "message": "2016-12-13 11:35:30.354 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSOutOfProcessFetcher(PrivateMethods) helperDidTerminate:] KSOutOfProcessFetcher fetch ended for URL: \"https://tools.google.com/service/update2?cup2hreq=423332d883f010d5b10e169646ed851278047f76e6c5d4dbfa2233ef66e3b141&cup2key=6:1566315822\"", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 9931, + "message": "2016-12-13 11:35:30.355 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSUpdateCheckAction(KSServerUpdateRequestDelegate) serverRequest:fetchedWithResponse:] KSUpdateCheckAction received KSServerUpdateResponse: \n\t\turl=\"https://tools.google.com/service/update2?cup2hreq=423332d883f010d5b10e169646ed851278047f76e6c5d4dbfa2233ef66e3b141&cup2key=6:1566315822\"\n\t\ttickets=2\n\t\tstatus=200\n\t\tdata=\n\t\t\t\n\t\t\t\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t\n\t>", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 11060, + "message": "2016-12-13 11:35:30.356 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSOmahaServer updateInfosForUpdateResponse:updateRequest:infoStore:upToDateTickets:updatedTickets:events:errors:] Response passed CUP validation.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 11357, + "message": "2016-12-13 11:35:30.381 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSUpdateCheckAction(PrivateMethods) finishAction] KSUpdateCheckAction found updates: {( )}", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 11599, + "message": "2016-12-13 11:35:30.384 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSPrefetchAction performAction] KSPrefetchAction no updates to prefetch.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 11823, + "message": "2016-12-13 11:35:30.384 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSMultiUpdateAction performAction] KSSilentUpdateAction had no updates to apply.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 12055, + "message": "2016-12-13 11:35:30.384 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSMultiUpdateAction performAction] KSPromptAction had no updates to apply.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 12281, + "message": "2016-12-13 11:35:30.384 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSAgentApp(KeystoneDelegate) updateEngineFinishedWithErrors:] Keystone finished: errors=0", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 12522, + "message": "2016-12-13 11:35:30.385 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSUpdateEngine(PrivateMethods) updateFinish] KSUpdateEngine update processing complete.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 12761, + "message": "2016-12-13 11:35:31.142 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSAgentApp updateProductWithProductID:usingEngine:] Done checking for updates for '\"All Products\"' using engine \n\t\t>>\n\t\tprocessor=\n\t\t\tisProcessing=NO actionsCompleted=0 progress=0.00\n\t\t\terrors=0 currentActionErrors=0\n\t\t\tevents=0 currentActionEvents=0\n\t\t\tactionQueue=( )\n\t\t>\n\t\tdelegate=\n\t\tserverInfoStore=\n\t\terrors=0\n\t>", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 13788, + "message": "2016-12-13 11:35:31.302 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSAgentUploader fetcher:finishedWithData:] Successfully uploaded stats to { URL: https://tools.google.com/service/update2 }", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.offset": 14098, + "message": "2016-12-13 11:35:31.431 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSAgentApp uploadStats:] Successfully uploaded stats ", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 14537, + "message": "2016-12-13 11:35:32.508 GoogleSoftwareUpdateAgent[21412/0x700007399000] [lvl=2] -[KSAgentApp(KeystoneThread) runKeystonesInThreadWithArg:] Finished with engine thread", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 14773, + "message": "2016-12-13 11:35:32.825 GoogleSoftwareUpdateAgent[21412/0x7fffcc3f93c0] [lvl=2] -[KSAgentApp checkForUpdates] Finished update check.", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 21412, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 14975, + "message": "objc[85294]: __weak variable at 0x60000a8499d0 holds 0x2121212121212121 instead of 0x600006a22fa0. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 15238, + "message": "objc[85294]: __weak variable at 0x60800f047240 holds 0x2121212121212121 instead of 0x608002231220. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 15501, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[21498])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 15716, + "message": "objc[85294]: __weak variable at 0x60000a256990 holds 0x2121212121212121 instead of 0x600006a22420. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 15979, + "message": "objc[85294]: __weak variable at 0x6080096475d0 holds 0x2121212121212121 instead of 0x608004e21280. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 16242, + "message": "ASL Sender Statistics", + "process.name": "syslogd", + "process.pid": 46, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 16312, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[21556])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 16527, + "message": "Unknown key for integer: _DirtyJetsamMemoryLimit", + "process.name": "com.apple.xpc.launchd[1] (com.apple.imfoundation.IMRemoteURLConnectionAgent)", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 16689, + "message": "objc[85294]: __weak variable at 0x60000a85a860 holds 0x2121212121212121 instead of 0x600004a3b9a0. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 16952, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[21581])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 17167, + "message": "objc[85294]: __weak variable at 0x608009840580 holds 0x2121212121212121 instead of 0x608004a22940. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 17430, + "message": "objc[85294]: __weak variable at 0x608009c5b700 holds 0x2121212121212121 instead of 0x608005830020. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 17693, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[21586])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 17908, + "message": "objc[85294]: __weak variable at 0x60800ee592d0 holds 0x2121212121212121 instead of 0x608005627220. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 18171, + "message": "ASL Sender Statistics", + "process.name": "syslogd", + "process.pid": 46, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 18241, + "message": "objc[85294]: __weak variable at 0x60000c648290 holds 0x2121212121212121 instead of 0x6000050242a0. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 18504, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[21589])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 18719, + "message": "objc[85294]: __weak variable at 0x600009840460 holds 0x2121212121212121 instead of 0x60000122e940. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 18982, + "message": "Unknown key for integer: _DirtyJetsamMemoryLimit", + "process.name": "com.apple.xpc.launchd[1] (com.apple.imfoundation.IMRemoteURLConnectionAgent)", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 19144, + "message": "objc[85294]: __weak variable at 0x60000ee5b730 holds 0x2121212121212121 instead of 0x600007821c20. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 19407, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[21946])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 19622, + "message": "objc[85294]: __weak variable at 0x600006a49940 holds 0x2121212121212121 instead of 0x6000078202e0. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 19885, + "message": "ASL Sender Statistics", + "process.name": "syslogd", + "process.pid": 46, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 19955, + "message": "Invoked notification with id: d63743fb-f17b-4e9e-97d0-88e0e7304682", + "process.name": "Slack Helper", + "process.pid": 55199, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 20078, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[21966])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 20293, + "message": "objc[85294]: __weak variable at 0x60800f043dc0 holds 0x2121212121212121 instead of 0x6080026228c0. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 20556, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[21981])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 20771, + "message": "objc[85294]: __weak variable at 0x608009a53600 holds 0x2121212121212121 instead of 0x608000629420. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 21034, + "message": "objc[85294]: __weak variable at 0x60800f259c30 holds 0x2121212121212121 instead of 0x608004a21c20. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 21297, + "message": "ASL Sender Statistics", + "process.name": "syslogd", + "process.pid": 46, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 21367, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22226])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 21582, + "message": "objc[85294]: __weak variable at 0x60000c647d80 holds 0x2121212121212121 instead of 0x600006e3ee80. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 21845, + "message": "objc[85294]: __weak variable at 0x60800f053a80 holds 0x2121212121212121 instead of 0x608007227ce0. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 22108, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22241])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 22323, + "message": "objc[85294]: __weak variable at 0x60000a64ce80 holds 0x2121212121212121 instead of 0x600006629940. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 22586, + "message": "objc[85294]: __weak variable at 0x60000a843580 holds 0x2121212121212121 instead of 0x600006629540. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 22849, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22254])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 23064, + "message": "objc[85294]: __weak variable at 0x60800f45b910 holds 0x2121212121212121 instead of 0x608005822c40. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 23327, + "message": "ASL Sender Statistics", + "process.name": "syslogd", + "process.pid": 46, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 23397, + "message": "Unknown key for integer: _DirtyJetsamMemoryLimit", + "process.name": "com.apple.xpc.launchd[1] (com.apple.imfoundation.IMRemoteURLConnectionAgent)", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 23559, + "message": "objc[85294]: __weak variable at 0x60000ea5edf0 holds 0x2121212121212121 instead of 0x600003a35a60. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 23822, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22265])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 24037, + "message": "Invoked notification with id: 52bf37d9-0c4e-4276-8789-9fc7704bdf5b", + "process.name": "Slack Helper", + "process.pid": 55199, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 24160, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22292])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 24375, + "message": "Invoked notification with id: c6c7e356-60a7-4b9e-a9b1-ecc2b8ad09f2", + "process.name": "Slack Helper", + "process.pid": 55199, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 24498, + "message": "objc[85294]: __weak variable at 0x60800f246430 holds 0x2121212121212121 instead of 0x608001c26d00. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 24761, + "message": "objc[85294]: __weak variable at 0x60800c85fd80 holds 0x2121212121212121 instead of 0x608005a3a420. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 25024, + "message": "ASL Sender Statistics", + "process.name": "syslogd", + "process.pid": 46, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 25094, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22305])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 25309, + "message": "objc[85294]: __weak variable at 0x600006452400 holds 0x2121212121212121 instead of 0x60000763bac0. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 25572, + "message": "2016-12-13 12:35:56.416 GoogleSoftwareUpdateAgent[22318/0x7fffcc3f93c0] [lvl=2] -[KSAgentApp setupLoggerOutput] Agent settings: ", + "process.name": "GoogleSoftwareUpdateAgent", + "process.pid": 22318, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 26456, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22324])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 26671, + "message": "objc[85294]: __weak variable at 0x60800f24d0f0 holds 0x2121212121212121 instead of 0x608007423ee0. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 26934, + "message": "Invoked notification with id: aa608788-d049-4d1a-9112-521c71702371", + "process.name": "Slack Helper", + "process.pid": 55199, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 27057, + "message": "Unknown key for integer: _DirtyJetsamMemoryLimit", + "process.name": "com.apple.xpc.launchd[1] (com.apple.imfoundation.IMRemoteURLConnectionAgent)", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 27219, + "message": "Invoked notification with id: d75f9ec1-a8fd-41c2-a45e-6df2952f0702", + "process.name": "Slack Helper", + "process.pid": 55199, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 27342, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22336])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 27557, + "message": "objc[85294]: __weak variable at 0x60800a2535a0 holds 0x2121212121212121 instead of 0x608003828e20. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 27820, + "message": "ASL Sender Statistics", + "process.name": "syslogd", + "process.pid": 46, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 27890, + "message": "objc[85294]: __weak variable at 0x60800f241d50 holds 0x2121212121212121 instead of 0x60800562f380. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 28153, + "message": "Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook", + "process.name": "com.apple.xpc.launchd[1] (com.apple.quicklook[22348])", + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 28368, + "message": "objc[85294]: __weak variable at 0x60000c444450 holds 0x2121212121212121 instead of 0x600007237f00. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + }, + { + "ecs.version": "1.0.0", + "event.dataset": "system.syslog", + "event.module": "system", + "fileset.name": "syslog", + "host.hostname": "a-mac-with-esc-key", + "input.type": "log", + "log.offset": 28631, + "message": "objc[85294]: __weak variable at 0x60000c4424a0 holds 0x2121212121212121 instead of 0x600007026520. This is probably incorrect use of objc_storeWeak() and objc_loadWeak(). Break on objc_weak_error to debug.", + "process.name": "Google Chrome", + "process.pid": 85294, + "service.type": "system" + } +] \ No newline at end of file diff --git a/filebeat/tests/system/test_modules.py b/filebeat/tests/system/test_modules.py index 322694c4d296..874c1ae35e74 100644 --- a/filebeat/tests/system/test_modules.py +++ b/filebeat/tests/system/test_modules.py @@ -167,8 +167,7 @@ def run_on_file(self, module, fileset, test_file, cfgfile): else: self.assert_fields_are_documented(obj) - if os.path.exists(test_file + "-expected.json"): - self._test_expected_events(test_file, objects) + self._test_expected_events(test_file, objects) def _test_expected_events(self, test_file, objects): From d4f394441deae7f2b3448c70b8f52ff9f4f6fc30 Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Thu, 9 May 2019 11:12:41 +0200 Subject: [PATCH 17/59] Update vendored gosigar to 0.10.2 (#12101) #11924 duplicated some code from go-sysinfo that is affected by a memory leak (fixed in #12100) In this case, only master is affected as the PR that introduced the leaky gosigar wasn't backported. --- NOTICE.txt | 4 +- .../github.com/elastic/gosigar/CHANGELOG.md | 17 ++++++- .../gosigar/sys/windows/syscall_windows.go | 4 ++ vendor/vendor.json | 50 +++++++++---------- 4 files changed, 47 insertions(+), 28 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 64555787564c..05cf2a5d80f0 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -765,8 +765,8 @@ Elasticsearch, B.V. (https://www.elastic.co/). -------------------------------------------------------------------- Dependency: github.com/elastic/gosigar -Version: v0.10.1 -Revision: fc57ef8c6efc0b4fdc6d7c623173073a6d3d4736 +Version: v0.10.2 +Revision: 1227b9d6877d126ad640087e44439d70dba2df4f License type (autodetected): Apache-2.0 ./vendor/github.com/elastic/gosigar/LICENSE: -------------------------------------------------------------------- diff --git a/vendor/github.com/elastic/gosigar/CHANGELOG.md b/vendor/github.com/elastic/gosigar/CHANGELOG.md index cfa804c9205d..04051fed8e8b 100644 --- a/vendor/github.com/elastic/gosigar/CHANGELOG.md +++ b/vendor/github.com/elastic/gosigar/CHANGELOG.md @@ -2,10 +2,25 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [Unreleased] + +### Added + +### Fixed + +### Changed + +### Deprecated + +## [0.10.2] + +### Fixed +- Fix memory leak when getting process arguments. #119 + ## [0.10.1] ### Fixed -- Replaced the WMI queries with win32 apis due to high CPU usage. #11840 +- Replaced the WMI queries with win32 apis due to high CPU usage. #116 ## [0.10.0] diff --git a/vendor/github.com/elastic/gosigar/sys/windows/syscall_windows.go b/vendor/github.com/elastic/gosigar/sys/windows/syscall_windows.go index 655836701f20..7da8a07135ec 100644 --- a/vendor/github.com/elastic/gosigar/sys/windows/syscall_windows.go +++ b/vendor/github.com/elastic/gosigar/sys/windows/syscall_windows.go @@ -526,6 +526,10 @@ func ByteSliceToStringSlice(utf16 []byte) ([]string, error) { if err != nil { return nil, err } + + // Free memory allocated for CommandLineToArgvW arguments. + defer syscall.LocalFree((syscall.Handle)(unsafe.Pointer(argsWide))) + args := make([]string, numArgs) for idx := range args { args[idx] = syscall.UTF16ToString(argsWide[idx][:]) diff --git a/vendor/vendor.json b/vendor/vendor.json index e2b411c919b0..aaf241c6dc06 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -1246,44 +1246,44 @@ "revisionTime": "2018-08-31T13:10:45Z" }, { - "checksumSHA1": "SyDYkg4fXTa27fsNrjnEQBKoDEQ=", + "checksumSHA1": "c1rU7WNZ+1AwZcRPBWhPBHcbZjg=", "path": "github.com/elastic/gosigar", - "revision": "fc57ef8c6efc0b4fdc6d7c623173073a6d3d4736", - "revisionTime": "2019-04-24T11:51:21Z", - "version": "v0.10.1", - "versionExact": "v0.10.1" + "revision": "1227b9d6877d126ad640087e44439d70dba2df4f", + "revisionTime": "2019-05-08T13:07:01Z", + "version": "v0.10.2", + "versionExact": "v0.10.2" }, { - "checksumSHA1": "y4HBfgWAm5cwRN3Mn7S3Bn1/pDc=", + "checksumSHA1": "TX9y4oPL5YmT4Gb/OU4GIPTdQB4=", "path": "github.com/elastic/gosigar/cgroup", - "revision": "fc57ef8c6efc0b4fdc6d7c623173073a6d3d4736", - "revisionTime": "2019-04-24T11:51:21Z", - "version": "v0.10.1", - "versionExact": "v0.10.1" + "revision": "1227b9d6877d126ad640087e44439d70dba2df4f", + "revisionTime": "2019-05-08T13:07:01Z", + "version": "v0.10.2", + "versionExact": "v0.10.2" }, { - "checksumSHA1": "axEkf+eo2z5V+R0nvgr1z+rty4w=", + "checksumSHA1": "hPqGM3DENaGfipEODoyZ4mKogTQ=", "path": "github.com/elastic/gosigar/sys", - "revision": "fc57ef8c6efc0b4fdc6d7c623173073a6d3d4736", - "revisionTime": "2019-04-24T11:51:21Z", - "version": "v0.10.1", - "versionExact": "v0.10.1" + "revision": "1227b9d6877d126ad640087e44439d70dba2df4f", + "revisionTime": "2019-05-08T13:07:01Z", + "version": "v0.10.2", + "versionExact": "v0.10.2" }, { - "checksumSHA1": "BtggD07yUvVppRyX4HTrRi6sqnQ=", + "checksumSHA1": "mLq5lOyD0ZU39ysXuf1ETOLJ+f0=", "path": "github.com/elastic/gosigar/sys/linux", - "revision": "fc57ef8c6efc0b4fdc6d7c623173073a6d3d4736", - "revisionTime": "2019-04-24T11:51:21Z", - "version": "v0.10.1", - "versionExact": "v0.10.1" + "revision": "1227b9d6877d126ad640087e44439d70dba2df4f", + "revisionTime": "2019-05-08T13:07:01Z", + "version": "v0.10.2", + "versionExact": "v0.10.2" }, { - "checksumSHA1": "CbP36vKSgkQruWF8PODFN9+SANI=", + "checksumSHA1": "R70u1XUHH/t1pquvHEFDeUFtkFk=", "path": "github.com/elastic/gosigar/sys/windows", - "revision": "fc57ef8c6efc0b4fdc6d7c623173073a6d3d4736", - "revisionTime": "2019-04-24T11:51:21Z", - "version": "v0.10.1", - "versionExact": "v0.10.1" + "revision": "1227b9d6877d126ad640087e44439d70dba2df4f", + "revisionTime": "2019-05-08T13:07:01Z", + "version": "v0.10.2", + "versionExact": "v0.10.2" }, { "checksumSHA1": "Klc34HULvwvY4cGA/D8HmqtXLqw=", From a5b3f0acb1dc51f1d119431d0b05fd73e2318b85 Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Thu, 9 May 2019 11:14:05 +0200 Subject: [PATCH 18/59] Fix various memory leaks under Windows (#12100) A function in go-sysinfo used under Windows to split a command-line into arguments was leaking memory. This code was used in various places: add_process_metadata processor. (enabled by default in all Beats) Packetbeat's process monitor. (disabled by default). Auditbeat's system/process metricset. This PR updates vendored go-sysinfo to the most recent version, which fixes the leak. --- CHANGELOG.next.asciidoc | 3 ++ NOTICE.txt | 4 +- .../elastic/go-sysinfo/CHANGELOG.md | 51 +++++++++++++++++++ .../github.com/elastic/go-sysinfo/NOTICE.txt | 2 +- .../github.com/elastic/go-sysinfo/README.md | 47 +++++++++++++++-- vendor/github.com/elastic/go-sysinfo/go.mod | 11 ++++ vendor/github.com/elastic/go-sysinfo/go.sum | 27 ++++++++++ .../providers/darwin/process_darwin_amd64.go | 20 +++++++- .../go-sysinfo/providers/linux/container.go | 11 ++-- .../go-sysinfo/providers/linux/host_linux.go | 24 ++++++--- .../providers/linux/process_linux.go | 20 ++++++-- .../providers/windows/process_windows.go | 13 +++++ .../elastic/go-sysinfo/types/process.go | 1 + vendor/vendor.json | 38 +++++++------- 14 files changed, 230 insertions(+), 42 deletions(-) create mode 100644 vendor/github.com/elastic/go-sysinfo/CHANGELOG.md create mode 100644 vendor/github.com/elastic/go-sysinfo/go.mod create mode 100644 vendor/github.com/elastic/go-sysinfo/go.sum diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 6627e8e71b91..19b0657c8ee4 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -71,12 +71,14 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Fix flaky service_integration_windows_test test by introducing a confidence factor and enriching the error message with more service details. {issue}8880[8880] and {issue}7977[7977] - Replace wmi queries with win32 api calls as they were consuming CPU resources {issue}3249[3249] and {issue}11840[11840] - Fix queue.spool.write.flush.events config type. {pull}12080[12080] +- Fixed a memory leak when using the add_process_metadata processor under Windows. {pull}12100[12100] *Auditbeat* - Package dataset: dlopen versioned librpm shared objects. {pull}11565[11565] - Package dataset: Nullify Librpm's rpmsqEnable. {pull}11628[11628] - Package dataset: Log error when Homebrew is not installed. {pull}11667[11667] +- Process dataset: Fixed a memory leak under Windows. {pull}12100[12100] - Login dataset: Fix re-read of utmp files. {pull}12028[12028] *Filebeat* @@ -115,6 +117,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Prevent duplicate packet loss error messages in HTTP events. {pull}10709[10709] - Avoid reporting unknown MongoDB opcodes more than once. {pull}10878[10878] +- Fixed a memory leak when using process monitoring under Windows. {pull}12100[12100] *Winlogbeat* diff --git a/NOTICE.txt b/NOTICE.txt index 05cf2a5d80f0..38957751f097 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -715,7 +715,7 @@ Apache License 2.0 -------------------------------------------------------------------- Dependency: github.com/elastic/go-sysinfo -Revision: ab4f04edfc3d6b3864f5f06a068ddab9ad79774f +Revision: 9a4be54a53be4c48b44d351d52fb425a5e274be5 License type (autodetected): Apache-2.0 ./vendor/github.com/elastic/go-sysinfo/LICENSE.txt: -------------------------------------------------------------------- @@ -723,7 +723,7 @@ Apache License 2.0 -------NOTICE.txt----- Elastic go-sysinfo -Copyright 2017-2018 Elasticsearch B.V. +Copyright 2017-2019 Elasticsearch B.V. This product includes software developed at Elasticsearch, B.V. (https://www.elastic.co/). diff --git a/vendor/github.com/elastic/go-sysinfo/CHANGELOG.md b/vendor/github.com/elastic/go-sysinfo/CHANGELOG.md new file mode 100644 index 000000000000..562a3b5d04f7 --- /dev/null +++ b/vendor/github.com/elastic/go-sysinfo/CHANGELOG.md @@ -0,0 +1,51 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +### Changed + +### Deprecated + +### Removed + +### Fixed + +- Fixed a leak when calling the CommandLineToArgv function. [#51](https://github.com/elastic/go-sysinfo/pull/51) + +### Security + +## [1.0.1] - 2019-05-08 + +### Fixed + +- Add support for new prometheus/procfs API. [#49](https://github.com/elastic/go-sysinfo/pull/49) + +## [1.0.0] - 2019-05-03 + +### Added + +- Add Windows provider implementation. [#22](https://github.com/elastic/go-sysinfo/pull/22) +- Add Windows process provider. [#26](https://github.com/elastic/go-sysinfo/pull/26) +- Add `OpenHandleEnumerator` and `OpenHandleCount` and implement these for Windows. [#27](https://github.com/elastic/go-sysinfo/pull/27) +- Add user info to Process. [#34](https://github.com/elastic/go-sysinfo/pull/34) +- Implement `Processes` for Darwin. [#35](https://github.com/elastic/go-sysinfo/pull/35) +- Add `Parent()` to `Process`. [#46](https://github.com/elastic/go-sysinfo/pull/46) + +### Fixed + +- Fix Windows registry handle leak. [#33](https://github.com/elastic/go-sysinfo/pull/33) +- Fix Linux host ID by search for older locations for the machine-id file. [#44](https://github.com/elastic/go-sysinfo/pull/44) + +### Changed + +- Changed the host containerized check to reduce false positives. [#42](https://github.com/elastic/go-sysinfo/pull/42) [#43](https://github.com/elastic/go-sysinfo/pull/43) + +[Unreleased]: https://github.com/elastic/go-sysinfo/compare/v1.0.1...HEAD +[1.0.1]: https://github.com/elastic/go-sysinfo/releases/tag/v1.0.1 +[1.0.0]: https://github.com/elastic/go-sysinfo/releases/tag/v1.0.0 diff --git a/vendor/github.com/elastic/go-sysinfo/NOTICE.txt b/vendor/github.com/elastic/go-sysinfo/NOTICE.txt index b149204f15f7..c813ad58275f 100644 --- a/vendor/github.com/elastic/go-sysinfo/NOTICE.txt +++ b/vendor/github.com/elastic/go-sysinfo/NOTICE.txt @@ -1,5 +1,5 @@ Elastic go-sysinfo -Copyright 2017-2018 Elasticsearch B.V. +Copyright 2017-2019 Elasticsearch B.V. This product includes software developed at Elasticsearch, B.V. (https://www.elastic.co/). diff --git a/vendor/github.com/elastic/go-sysinfo/README.md b/vendor/github.com/elastic/go-sysinfo/README.md index 5111c7207a54..3a657a4b2d45 100644 --- a/vendor/github.com/elastic/go-sysinfo/README.md +++ b/vendor/github.com/elastic/go-sysinfo/README.md @@ -1,4 +1,4 @@ -# go-sysinfo [WORK IN PROGRESS] +# go-sysinfo [![Build Status](http://img.shields.io/travis/elastic/go-sysinfo.svg?style=flat-square)][travis] [![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)][godocs] @@ -6,7 +6,48 @@ [travis]: http://travis-ci.org/elastic/go-sysinfo [godocs]: http://godoc.org/github.com/elastic/go-sysinfo -go-sysinfo is a library for collecting system information. +go-sysinfo is a library for collecting system information. This includes +information about the host machine and processes running on the host. + +The available features vary based on what has been implemented by the "provider" +for the operating system. At runtime you check to see if additional interfaces +are implemented by the returned `Host` or `Process`. For example: + +```go +process, err := sysinfo.Self() +if err != nil { + return err +} + +if handleCounter, ok := process.(types.OpenHandleCounter); ok { + count, err := handleCounter.OpenHandleCount() + if err != nil { + return err + } + log.Printf("%d open handles", count) +} +``` + +These tables show what methods are implemented as well as the extra interfaces +that are implemented. + +| `Host` Features | Darwin | Linux | Windows | +|------------------|--------|-------|---------| +| `Info()` | x | x | x | +| `Memory()` | x | x | x | +| `CPUTimer` | x | x | x | + +| `Process` Features | Darwin | Linux | Windows | +|------------------------|--------|-------|---------| +| `Info()` | x | x | x | +| `Memory()` | x | x | x | +| `User()` | x | x | x | +| `Parent()` | x | x | x | +| `CPUTimer` | x | x | x | +| `Environment` | x | x | | +| `OpenHandleEnumerator` | | x | | +| `OpenHandleCounter` | | x | | +| `Seccomp` | | x | | +| `Capabilities` | | x | | -This project is a work in progress. diff --git a/vendor/github.com/elastic/go-sysinfo/go.mod b/vendor/github.com/elastic/go-sysinfo/go.mod new file mode 100644 index 000000000000..068a0d148420 --- /dev/null +++ b/vendor/github.com/elastic/go-sysinfo/go.mod @@ -0,0 +1,11 @@ +module github.com/elastic/go-sysinfo + +require ( + github.com/elastic/go-windows v1.0.0 + github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 + github.com/pkg/errors v0.8.1 + github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0 + github.com/stretchr/testify v1.3.0 + golang.org/x/sys v0.0.0-20190425145619-16072639606e + howett.net/plist v0.0.0-20181124034731-591f970eefbb +) diff --git a/vendor/github.com/elastic/go-sysinfo/go.sum b/vendor/github.com/elastic/go-sysinfo/go.sum new file mode 100644 index 000000000000..c84ee0158d09 --- /dev/null +++ b/vendor/github.com/elastic/go-sysinfo/go.sum @@ -0,0 +1,27 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/elastic/go-windows v1.0.0 h1:qLURgZFkkrYyTTkvYpsZIgf83AUsdIHfvlJaqaZ7aSY= +github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +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/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0 h1:c8R11WC8m7KNMkTv/0+Be8vvwo4I3/Ut9AC2FW8fX3U= +github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190425145619-16072639606e h1:4ktJgTV34+N3qOZUc5fAaG3Pb11qzMm3PkAoTAgUZ2I= +golang.org/x/sys v0.0.0-20190425145619-16072639606e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +gopkg.in/check.v1 v0.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/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= +howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= diff --git a/vendor/github.com/elastic/go-sysinfo/providers/darwin/process_darwin_amd64.go b/vendor/github.com/elastic/go-sysinfo/providers/darwin/process_darwin_amd64.go index ad1864dfc03c..a2122038e21e 100644 --- a/vendor/github.com/elastic/go-sysinfo/providers/darwin/process_darwin_amd64.go +++ b/vendor/github.com/elastic/go-sysinfo/providers/darwin/process_darwin_amd64.go @@ -85,6 +85,7 @@ func (s darwinSystem) Self() (types.Process, error) { } type process struct { + info *types.ProcessInfo pid int cwd string exe string @@ -96,7 +97,20 @@ func (p *process) PID() int { return p.pid } +func (p *process) Parent() (types.Process, error) { + info, err := p.Info() + if err != nil { + return nil, err + } + + return &process{pid: info.PPID}, nil +} + func (p *process) Info() (types.ProcessInfo, error) { + if p.info != nil { + return *p.info, nil + } + var task procTaskAllInfo if err := getProcTaskAllInfo(p.pid, &task); err != nil { return types.ProcessInfo{}, err @@ -111,7 +125,7 @@ func (p *process) Info() (types.ProcessInfo, error) { return types.ProcessInfo{}, err } - return types.ProcessInfo{ + p.info = &types.ProcessInfo{ Name: int8SliceToString(task.Pbsd.Pbi_name[:]), PID: p.pid, PPID: int(task.Pbsd.Pbi_ppid), @@ -120,7 +134,9 @@ func (p *process) Info() (types.ProcessInfo, error) { Args: p.args, StartTime: time.Unix(int64(task.Pbsd.Pbi_start_tvsec), int64(task.Pbsd.Pbi_start_tvusec)*int64(time.Microsecond)), - }, nil + } + + return *p.info, nil } func (p *process) User() (types.UserInfo, error) { diff --git a/vendor/github.com/elastic/go-sysinfo/providers/linux/container.go b/vendor/github.com/elastic/go-sysinfo/providers/linux/container.go index cfacf013d12e..6081e0c4132d 100644 --- a/vendor/github.com/elastic/go-sysinfo/providers/linux/container.go +++ b/vendor/github.com/elastic/go-sysinfo/providers/linux/container.go @@ -46,14 +46,13 @@ func isContainerizedCgroup(data []byte) (bool, error) { s := bufio.NewScanner(bytes.NewReader(data)) for n := 0; s.Scan(); n++ { line := s.Bytes() - if len(line) == 0 || line[len(line)-1] == '/' { - continue - } - if bytes.HasSuffix(line, []byte("init.scope")) { - return false, nil + // Following a suggestion on Stack Overflow on how to detect + // being inside a container: https://stackoverflow.com/a/20012536/235203 + if bytes.Contains(line, []byte("docker")) || bytes.Contains(line, []byte("lxc")) { + return true, nil } } - return true, s.Err() + return false, s.Err() } diff --git a/vendor/github.com/elastic/go-sysinfo/providers/linux/host_linux.go b/vendor/github.com/elastic/go-sysinfo/providers/linux/host_linux.go index 77a52fc6cf34..9b09ddff98cd 100644 --- a/vendor/github.com/elastic/go-sysinfo/providers/linux/host_linux.go +++ b/vendor/github.com/elastic/go-sysinfo/providers/linux/host_linux.go @@ -37,12 +37,14 @@ func init() { } type linuxSystem struct { - procFS procfs.FS + procFS procFS } func newLinuxSystem(hostFS string) linuxSystem { + mountPoint := filepath.Join(hostFS, procfs.DefaultMountPoint) + fs, _ := procfs.NewFS(mountPoint) return linuxSystem{ - procFS: procfs.FS(filepath.Join(hostFS, procfs.DefaultMountPoint)), + procFS: procFS{FS: fs, mountPoint: mountPoint}, } } @@ -51,7 +53,7 @@ func (s linuxSystem) Host() (types.Host, error) { } type host struct { - procFS procfs.FS + procFS procFS stat procfs.Stat info types.HostInfo } @@ -61,7 +63,7 @@ func (h *host) Info() types.HostInfo { } func (h *host) Memory() (*types.HostMemoryInfo, error) { - content, err := ioutil.ReadFile(h.procFS.Path("meminfo")) + content, err := ioutil.ReadFile(h.procFS.path("meminfo")) if err != nil { return nil, err } @@ -87,7 +89,7 @@ func (h *host) CPUTime() (types.CPUTimes, error) { }, nil } -func newHost(fs procfs.FS) (*host, error) { +func newHost(fs procFS) (*host, error) { stat, err := fs.NewStat() if err != nil { return nil, errors.Wrap(err, "failed to read proc stat") @@ -137,7 +139,7 @@ func (r *reader) architecture(h *host) { } func (r *reader) bootTime(h *host) { - v, err := bootTime(h.procFS) + v, err := bootTime(h.procFS.FS) if r.addErr(err) { return } @@ -196,3 +198,13 @@ func (r *reader) uniqueID(h *host) { } h.info.UniqueID = v } + +type procFS struct { + procfs.FS + mountPoint string +} + +func (fs *procFS) path(p ...string) string { + elem := append([]string{fs.mountPoint}, p...) + return filepath.Join(elem...) +} diff --git a/vendor/github.com/elastic/go-sysinfo/providers/linux/process_linux.go b/vendor/github.com/elastic/go-sysinfo/providers/linux/process_linux.go index 4f5425e8b478..3ea7fd877888 100644 --- a/vendor/github.com/elastic/go-sysinfo/providers/linux/process_linux.go +++ b/vendor/github.com/elastic/go-sysinfo/providers/linux/process_linux.go @@ -65,7 +65,7 @@ func (s linuxSystem) Self() (types.Process, error) { type process struct { procfs.Proc - fs procfs.FS + fs procFS info *types.ProcessInfo } @@ -73,8 +73,22 @@ func (p *process) PID() int { return p.Proc.PID } +func (p *process) Parent() (types.Process, error) { + info, err := p.Info() + if err != nil { + return nil, err + } + + proc, err := p.fs.NewProc(info.PPID) + if err != nil { + return nil, err + } + + return &process{Proc: proc, fs: p.fs}, nil +} + func (p *process) path(pa ...string) string { - return p.fs.Path(append([]string{strconv.Itoa(p.PID())}, pa...)...) + return p.fs.path(append([]string{strconv.Itoa(p.PID())}, pa...)...) } func (p *process) CWD() (string, error) { @@ -112,7 +126,7 @@ func (p *process) Info() (types.ProcessInfo, error) { return types.ProcessInfo{}, err } - bootTime, err := bootTime(p.fs) + bootTime, err := bootTime(p.fs.FS) if err != nil { return types.ProcessInfo{}, err } diff --git a/vendor/github.com/elastic/go-sysinfo/providers/windows/process_windows.go b/vendor/github.com/elastic/go-sysinfo/providers/windows/process_windows.go index 8a19e43e8aff..351351debc68 100644 --- a/vendor/github.com/elastic/go-sysinfo/providers/windows/process_windows.go +++ b/vendor/github.com/elastic/go-sysinfo/providers/windows/process_windows.go @@ -79,6 +79,15 @@ func (p *process) PID() int { return p.pid } +func (p *process) Parent() (types.Process, error) { + info, err := p.Info() + if err != nil { + return nil, err + } + + return newProcess(info.PPID) +} + func newProcess(pid int) (*process, error) { p := &process{pid: pid} if err := p.init(); err != nil { @@ -220,6 +229,10 @@ func splitCommandline(utf16 []byte) ([]string, error) { if err != nil { return nil, err } + + // Free memory allocated for CommandLineToArgvW arguments. + defer syscall.LocalFree((syscall.Handle)(unsafe.Pointer(argsWide))) + args := make([]string, numArgs) for idx := range args { args[idx] = syscall.UTF16ToString(argsWide[idx][:]) diff --git a/vendor/github.com/elastic/go-sysinfo/types/process.go b/vendor/github.com/elastic/go-sysinfo/types/process.go index ade433f8c954..8dd2074ced4c 100644 --- a/vendor/github.com/elastic/go-sysinfo/types/process.go +++ b/vendor/github.com/elastic/go-sysinfo/types/process.go @@ -24,6 +24,7 @@ type Process interface { Info() (ProcessInfo, error) Memory() (MemoryInfo, error) User() (UserInfo, error) + Parent() (Process, error) PID() int } diff --git a/vendor/vendor.json b/vendor/vendor.json index aaf241c6dc06..115959a1af63 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -1030,46 +1030,46 @@ "versionExact": "v0.0.5" }, { - "checksumSHA1": "QhFIpuHPaV6hKejKcc2wm6y4MSQ=", + "checksumSHA1": "pdGPPNf1TeT3fTl8Uwl55hE9/G8=", "path": "github.com/elastic/go-sysinfo", - "revision": "ab4f04edfc3d6b3864f5f06a068ddab9ad79774f", - "revisionTime": "2019-03-27T18:53:17Z" + "revision": "9a4be54a53be4c48b44d351d52fb425a5e274be5", + "revisionTime": "2019-05-08T09:33:45Z" }, { "checksumSHA1": "GiZCjX17K265TtamGZZw4R2Jwbk=", "path": "github.com/elastic/go-sysinfo/internal/registry", - "revision": "ab4f04edfc3d6b3864f5f06a068ddab9ad79774f", - "revisionTime": "2019-03-27T18:53:17Z" + "revision": "9a4be54a53be4c48b44d351d52fb425a5e274be5", + "revisionTime": "2019-05-08T09:33:45Z" }, { - "checksumSHA1": "ovafihHzpBx9Y7+lZh9X5KwNCvE=", + "checksumSHA1": "dVSTUnZHCLNd0tYIENqdj05RyI8=", "path": "github.com/elastic/go-sysinfo/providers/darwin", - "revision": "ab4f04edfc3d6b3864f5f06a068ddab9ad79774f", - "revisionTime": "2019-03-27T18:53:17Z" + "revision": "9a4be54a53be4c48b44d351d52fb425a5e274be5", + "revisionTime": "2019-05-08T09:33:45Z" }, { - "checksumSHA1": "OyI+VwDiT4UZjncsDr1GYg1xcdw=", + "checksumSHA1": "LWMXshdY44+JM7g09dA4tXMZ1rY=", "path": "github.com/elastic/go-sysinfo/providers/linux", - "revision": "ab4f04edfc3d6b3864f5f06a068ddab9ad79774f", - "revisionTime": "2019-03-27T18:53:17Z" + "revision": "9a4be54a53be4c48b44d351d52fb425a5e274be5", + "revisionTime": "2019-05-08T09:33:45Z" }, { "checksumSHA1": "RWLvcP1w9ynKbuCqiW6prwd+EDU=", "path": "github.com/elastic/go-sysinfo/providers/shared", - "revision": "ab4f04edfc3d6b3864f5f06a068ddab9ad79774f", - "revisionTime": "2019-03-27T18:53:17Z" + "revision": "9a4be54a53be4c48b44d351d52fb425a5e274be5", + "revisionTime": "2019-05-08T09:33:45Z" }, { - "checksumSHA1": "aF05MEkMjbRekzHlwFxmd5WBpeY=", + "checksumSHA1": "13qV0fFj6P5m1/n1HsdByRW0Hk4=", "path": "github.com/elastic/go-sysinfo/providers/windows", - "revision": "ab4f04edfc3d6b3864f5f06a068ddab9ad79774f", - "revisionTime": "2019-03-27T18:53:17Z" + "revision": "9a4be54a53be4c48b44d351d52fb425a5e274be5", + "revisionTime": "2019-05-08T09:33:45Z" }, { - "checksumSHA1": "MLQioPEjULYbNqqCjfB1/cux08E=", + "checksumSHA1": "OHierbaoOHx79d73DuLrao43rIg=", "path": "github.com/elastic/go-sysinfo/types", - "revision": "ab4f04edfc3d6b3864f5f06a068ddab9ad79774f", - "revisionTime": "2019-03-27T18:53:17Z" + "revision": "9a4be54a53be4c48b44d351d52fb425a5e274be5", + "revisionTime": "2019-05-08T09:33:45Z" }, { "checksumSHA1": "bNf3GDGhZh86bfCIMM5c5AYfo3g=", From 89f93e37e738e114fe5855224ebe90b6d85e5a18 Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Thu, 9 May 2019 11:21:06 +0200 Subject: [PATCH 19/59] New processor extract_array (#11761) This adds a new processor, extract_array, that allows accessing values inside arrays and copying them to target fields. --- CHANGELOG.next.asciidoc | 1 + libbeat/cmd/instance/imports.go | 1 + libbeat/docs/processors-using.asciidoc | 54 +++- .../processors/extract_array/extract_array.go | 189 ++++++++++++ .../extract_array/extract_array_test.go | 270 ++++++++++++++++++ .../javascript/module/processor/processor.go | 2 + 6 files changed, 512 insertions(+), 5 deletions(-) create mode 100644 libbeat/processors/extract_array/extract_array.go create mode 100644 libbeat/processors/extract_array/extract_array_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 19b0657c8ee4..4b8f0c108ce4 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -143,6 +143,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add `add_observer_metadata` processor. {pull}11394[11394] - Add `decode_csv_fields` processor. {pull}11753[11753] - Add `convert` processor for converting data types of fields. {issue}8124[8124] {pull}11686[11686] +- New `extract_array` processor. {pull}11761[11761] *Auditbeat* diff --git a/libbeat/cmd/instance/imports.go b/libbeat/cmd/instance/imports.go index 0d1dac5513f4..356c4f041fe0 100644 --- a/libbeat/cmd/instance/imports.go +++ b/libbeat/cmd/instance/imports.go @@ -35,5 +35,6 @@ import ( _ "github.com/elastic/beats/libbeat/processors/convert" _ "github.com/elastic/beats/libbeat/processors/dissect" _ "github.com/elastic/beats/libbeat/processors/dns" + _ "github.com/elastic/beats/libbeat/processors/extract_array" _ "github.com/elastic/beats/libbeat/publisher/includes" // Register publisher pipeline modules ) diff --git a/libbeat/docs/processors-using.asciidoc b/libbeat/docs/processors-using.asciidoc index 045a3f41f9fa..81d9b56dac61 100644 --- a/libbeat/docs/processors-using.asciidoc +++ b/libbeat/docs/processors-using.asciidoc @@ -211,10 +211,11 @@ The supported processors are: * <> * <> ifdef::has_decode_csv_fields_processor[] -* <> + * <> endif::[] * <> * <> + * <> * <> * <> * <> @@ -815,16 +816,16 @@ The `decode_csv_fields` has the following settings: The default is the comma character. For using a TAB character you must set it to "\t". `ignore_missing`:: (Optional) Whether to ignore events which lack the source - field. The default is false, which will fail processing of an - event if a field is missing. + field. The default is `false`, which will fail processing of + an event if a field is missing. `overwrite_keys`:: Whether the target field is overwritten if it already exists. The default is false, which will fail processing of an event when `target` already exists. `trim_leading_space`:: Whether extra space after the separator is trimmed from values. This works even if the separator is also a space. - The default is false. + The default is `false`. `fail_on_error`:: (Optional) If set to true, in case of an error the changes to -the event are reverted and the original event is returned. If set to false, +the event are reverted, and the original event is returned. If set to `false`, processing continues also if an error happens. Default is `true`. endif::[] @@ -1746,3 +1747,46 @@ thrown. *Example*: `event.AppendTo("error.message", "invalid file hash");` |=== endif::[] + +[[extract-array]] +=== Extract array + +experimental[] + +The `extract_array` processor populates fields with values read from an array +field. The following example will populate `source.ip` with the first element of +the `my_array` field, `destination.ip` with the second element, and +`network.transport` with the third. + +[source,yaml] +----------------------------------------------------- +processors: + - extract_array: + field: my_array + mappings: + source.ip: 0 + destination.ip: 1 + network.transport: 2 +----------------------------------------------------- + +The following settings are supported: + +`field`:: The array field whose elements are to be extracted. +`mappings`:: Maps each field name to an array index. Use 0 for the first element in + the array. Multiple fields can be mapped to the same array element. +`ignore_missing`:: (Optional) Whether to ignore events where the array field is + missing. The default is `false`, which will fail processing + of an event if the specified field does not exist. Set it to + `true` to ignore this condition. +`overwrite_keys`:: Whether the target fields specified in the mapping are + overwritten if they already exist. The default is `false`, + which will fail processing if a target field already exists. +`fail_on_error`:: (Optional) If set to `true` and an error happens, changes to + the event are reverted, and the original event is returned. If + set to `false`, processing continues despite errors. + Default is `true`. +`omit_empty`:: (Optional) Whether empty values are extracted from the array. If + set to `true`, instead of the target field being set to an + empty value, it is left unset. The empty string (`""`), an + empty array (`[]`) or an empty object (`{}`) are considered + empty values. Default is `false`. diff --git a/libbeat/processors/extract_array/extract_array.go b/libbeat/processors/extract_array/extract_array.go new file mode 100644 index 000000000000..2bb473589cd9 --- /dev/null +++ b/libbeat/processors/extract_array/extract_array.go @@ -0,0 +1,189 @@ +// 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 extract_array + +import ( + "fmt" + "reflect" + "sort" + + "github.com/pkg/errors" + + "github.com/elastic/beats/libbeat/beat" + "github.com/elastic/beats/libbeat/common" + "github.com/elastic/beats/libbeat/processors" + "github.com/elastic/beats/libbeat/processors/checks" +) + +type config struct { + Field string `config:"field"` + Mappings common.MapStr `config:"mappings"` + IgnoreMissing bool `config:"ignore_missing"` + OmitEmpty bool `config:"omit_empty"` + OverwriteKeys bool `config:"overwrite_keys"` + FailOnError bool `config:"fail_on_error"` +} + +type fieldMapping struct { + from int + to string +} + +type extractArrayProcessor struct { + config + mappings []fieldMapping +} + +var ( + defaultConfig = config{ + FailOnError: true, + } + errNoMappings = errors.New("no mappings defined in extract_array processor") +) + +func init() { + processors.RegisterPlugin("extract_array", + checks.ConfigChecked(New, + checks.RequireFields("field", "mappings"), + checks.AllowedFields("field", "mappings", "ignore_missing", "overwrite_keys", "fail_on_error", "when", "omit_empty"))) +} + +// Unpack unpacks the processor's configuration. +func (f *extractArrayProcessor) Unpack(from *common.Config) error { + tmp := defaultConfig + err := from.Unpack(&tmp) + if err != nil { + return fmt.Errorf("failed to unpack the extract_array configuration: %s", err) + } + f.config = tmp + for field, column := range f.Mappings.Flatten() { + colIdx, ok := common.TryToInt(column) + if !ok || colIdx < 0 { + return fmt.Errorf("bad extract_array mapping for field %s: %+v is not a positive integer", field, column) + } + f.mappings = append(f.mappings, fieldMapping{from: colIdx, to: field}) + } + sort.Slice(f.mappings, func(i, j int) bool { + return f.mappings[i].from < f.mappings[j].from + }) + return nil +} + +// New builds a new extract_array processor. +func New(c *common.Config) (processors.Processor, error) { + p := &extractArrayProcessor{} + err := c.Unpack(p) + if err != nil { + return nil, err + } + if len(p.mappings) == 0 { + return nil, errNoMappings + } + return p, nil +} + +func isEmpty(v reflect.Value) bool { + switch v.Kind() { + case reflect.String: + return v.Len() == 0 + case reflect.Slice, reflect.Map: + return v.IsNil() || v.Len() == 0 + case reflect.Interface: + return v.IsNil() || isEmpty(v.Elem()) + } + return false +} + +func (f *extractArrayProcessor) Run(event *beat.Event) (*beat.Event, error) { + iValue, err := event.GetValue(f.config.Field) + if err != nil { + if f.config.IgnoreMissing && errors.Cause(err) == common.ErrKeyNotFound { + return event, nil + } + return event, errors.Wrapf(err, "could not fetch value for field %s", f.config.Field) + } + + array := reflect.ValueOf(iValue) + if t := array.Type(); t.Kind() != reflect.Slice { + if !f.config.FailOnError { + return event, nil + } + return event, errors.Wrapf(err, "unsupported type for field %s: got: %s needed: array", f.config.Field, t.String()) + } + + saved := *event + if f.config.FailOnError { + saved.Fields = event.Fields.Clone() + saved.Meta = event.Meta.Clone() + } + + n := array.Len() + for _, mapping := range f.mappings { + if mapping.from >= n { + if !f.config.FailOnError { + continue + } + return &saved, errors.Errorf("index %d exceeds length of %d when processing mapping for field %s", mapping.from, n, mapping.to) + } + cell := array.Index(mapping.from) + // checking for CanInterface() here is done to prevent .Interface() from + // panicking, but it can only happen when value points to a private + // field inside a struct. + if !cell.IsValid() || !cell.CanInterface() || (f.config.OmitEmpty && isEmpty(cell)) { + continue + } + if !f.config.OverwriteKeys { + if _, err = event.GetValue(mapping.to); err == nil { + if !f.config.FailOnError { + continue + } + return &saved, errors.Errorf("target field %s already has a value. Set the overwrite_keys flag or drop/rename the field first", mapping.to) + } + } + if _, err = event.PutValue(mapping.to, clone(cell.Interface())); err != nil { + if !f.config.FailOnError { + continue + } + return &saved, errors.Wrapf(err, "failed setting field %s", mapping.to) + } + } + return event, nil +} + +func (f *extractArrayProcessor) String() (r string) { + return fmt.Sprintf("extract_array={field=%s, mappings=%v}", f.config.Field, f.mappings) +} + +func clone(value interface{}) interface{} { + // TODO: This is dangerous but done by most processors. + // Otherwise need to reflect value and deep copy lists / map types. + switch v := value.(type) { + case common.MapStr: + return v.Clone() + case map[string]interface{}: + return common.MapStr(v).Clone() + case []interface{}: + len := len(v) + newArr := make([]interface{}, len) + for idx, val := range v { + newArr[idx] = clone(val) + } + return newArr + } + return value +} diff --git a/libbeat/processors/extract_array/extract_array_test.go b/libbeat/processors/extract_array/extract_array_test.go new file mode 100644 index 000000000000..8dbde97a50a8 --- /dev/null +++ b/libbeat/processors/extract_array/extract_array_test.go @@ -0,0 +1,270 @@ +// 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 extract_array + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/elastic/beats/libbeat/beat" + "github.com/elastic/beats/libbeat/common" +) + +func TestExtractArrayProcessor_String(t *testing.T) { + p, err := New(common.MustNewConfigFrom(common.MapStr{ + "field": "csv", + "mappings": common.MapStr{ + "source.ip": 0, + "network.transport": 2, + "destination.ip": 99, + }, + })) + if err != nil { + t.Fatal(err) + } + assert.Equal(t, "extract_array={field=csv, mappings=[{0 source.ip} {2 network.transport} {99 destination.ip}]}", p.String()) +} + +func TestExtractArrayProcessor_Run(t *testing.T) { + tests := map[string]struct { + config common.MapStr + input beat.Event + expected beat.Event + fail bool + afterFn func(e *beat.Event) + }{ + "sample": { + config: common.MapStr{ + "field": "array", + "mappings": common.MapStr{ + "dest.one": 1, + "dest.two": 2, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{"zero", 1, common.MapStr{"two": 2}}, + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{"zero", 1, common.MapStr{"two": 2}}, + "dest.one": 1, + "dest.two": common.MapStr{"two": 2}, + }, + }, + }, + + "modified elements": { + config: common.MapStr{ + "field": "array", + "mappings": common.MapStr{ + "dest.one": 1, + "dest.two": 2, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{"zero", 1, common.MapStr{"two": 2}}, + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{"zero", 1, common.MapStr{"two": 2}}, + "dest.one": 1, + "dest.two": common.MapStr{"two": 3}, + }, + }, + afterFn: func(e *beat.Event) { + e.PutValue("dest.two.two", 3) + }, + }, + + "modified array": { + config: common.MapStr{ + "field": "array", + "mappings": common.MapStr{ + "dest.one": 1, + "dest.two": 2, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{"zero", 1, []interface{}{"a", "b"}}, + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{"zero", 1, []interface{}{"a", "b"}}, + "dest.one": 1, + "dest.two": []interface{}{"a", "c"}, + }, + }, + afterFn: func(e *beat.Event) { + val, _ := e.GetValue("dest.two") + val.([]interface{})[1] = "c" + }, + }, + + "out of range mapping": { + config: common.MapStr{ + "field": "array", + "mappings": common.MapStr{ + "source.ip": 0, + "destination.ip": 999, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{"127.0.0.1"}, + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{"127.0.0.1"}, + }, + }, + fail: true, + }, + + "ignore errors": { + config: common.MapStr{ + "field": "array", + "mappings": common.MapStr{ + "a": 0, + "b.c": 1, + }, + "fail_on_error": false, + }, + input: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{3.14, 9000.0}, + "b": true, + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{3.14, 9000.0}, + "a": 3.14, + "b": true, + }, + }, + }, + + "multicopy": { + config: common.MapStr{ + "field": "array", + "mappings": common.MapStr{ + "a": 1, + "b": 1, + "c": 1, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{0, 42}, + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{0, 42}, + "a": 42, + "b": 42, + "c": 42, + }, + }, + }, + + "omit_empty": { + config: common.MapStr{ + "field": "array", + "mappings": common.MapStr{ + "a": 0, + "b": 1, + "c": 2, + "d": 3, + "e": 4, + }, + "omit_empty": true, + }, + input: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{0, "", []interface{}(nil), make(map[string]string), 0.0}, + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{0, "", []interface{}(nil), make(map[string]string), 0.0}, + "a": 0, + "e": 0.0, + }, + }, + }, + + "nil values": { + config: common.MapStr{ + "field": "array", + "mappings": common.MapStr{ + "a": 0, + "b": 1, + "c": 2, + "d": 3, + "e": 4, + }, + }, + input: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{nil, "", []interface{}(nil), map[string]string(nil), (*int)(nil)}, + }, + }, + expected: beat.Event{ + Fields: common.MapStr{ + "array": []interface{}{nil, "", []interface{}(nil), map[string]string(nil), (*int)(nil)}, + "a": nil, + "b": "", + "c": []interface{}{}, + "d": map[string]string(nil), + "e": (*int)(nil), + }, + }, + }, + } + for title, tt := range tests { + t.Run(title, func(t *testing.T) { + cfg := common.MustNewConfigFrom(tt.config) + processor, err := New(cfg) + if err != nil { + t.Fatal(err) + } + result, err := processor.Run(&tt.input) + if tt.afterFn != nil { + tt.afterFn(result) + } + if tt.fail { + assert.Error(t, err) + t.Log("got expected error", err) + return + } + assert.NoError(t, err) + assert.Equal(t, tt.expected.Fields.Flatten(), result.Fields.Flatten()) + assert.Equal(t, tt.expected.Timestamp, result.Timestamp) + t.Log(result) + }) + } +} diff --git a/libbeat/processors/script/javascript/module/processor/processor.go b/libbeat/processors/script/javascript/module/processor/processor.go index 97b8af138308..096cadadf0fd 100644 --- a/libbeat/processors/script/javascript/module/processor/processor.go +++ b/libbeat/processors/script/javascript/module/processor/processor.go @@ -36,6 +36,7 @@ import ( "github.com/elastic/beats/libbeat/processors/decode_csv_fields" "github.com/elastic/beats/libbeat/processors/dissect" "github.com/elastic/beats/libbeat/processors/dns" + "github.com/elastic/beats/libbeat/processors/extract_array" "github.com/elastic/beats/libbeat/processors/script/javascript" ) @@ -57,6 +58,7 @@ var constructors = map[string]processors.Constructor{ "DecodeJSONFields": actions.NewDecodeJSONFields, "Dissect": dissect.NewProcessor, "DNS": dns.New, + "ExtractArray": extract_array.New, "Rename": actions.NewRenameFields, "TruncateFields": actions.NewTruncateFields, } From e098e00b1ff51ff1f67e35621dd9c5617b629710 Mon Sep 17 00:00:00 2001 From: Nicolas Ruflin Date: Thu, 9 May 2019 12:48:23 +0200 Subject: [PATCH 20/59] [Heartbeat] Remove not needed flags from setup command (#11856) The setup command until now contained all the possible options from the other Beats. As Heartbeat does not ship anymore with dashboards, the --dashboards command is not needed anymore and is only confusing. I also removed all the other commands except `--ilm-policy` and `--template`. I'm not aware that `--pipelines` or `--machine-learning` would be used. Here the comparison between `./heartbeat setup -h` from before and after. Before: ``` This command does initial setup of the environment: * Index mapping template in Elasticsearch to ensure fields are mapped. * Kibana dashboards (where available). * ML jobs (where available). * Ingest pipelines (where available). * ILM policy (for Elasticsearch 6.5 and newer). Usage: heartbeat setup [flags] Flags: --dashboards Setup dashboards -h, --help help for setup --ilm-policy Setup ILM policy --machine-learning Setup machine learning job configurations --pipelines Setup Ingest pipelines --template Setup index template ``` After: ``` This command does initial setup of the environment: * Index mapping template in Elasticsearch to ensure fields are mapped. * ILM Policy Usage: heartbeat setup [flags] Flags: -h, --help help for setup --ilm-policy Setup ILM policy --template Setup index template ``` In this PR I did not include a check for the config option `setup.dashboards` to make sure they are not there like apm-server does (https://github.com/elastic/apm-server/blob/2baefab778fdfe70c47bc2fb488677b2e43e4635/beater/beater.go#L60) as I don't think it's necessary. --- heartbeat/cmd/root.go | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/heartbeat/cmd/root.go b/heartbeat/cmd/root.go index 8557971f5240..6dee7e2a94b3 100644 --- a/heartbeat/cmd/root.go +++ b/heartbeat/cmd/root.go @@ -19,15 +19,36 @@ package cmd import ( // register default heartbeat monitors - _ "github.com/elastic/beats/heartbeat/monitors/defaults" - "github.com/elastic/beats/libbeat/cmd/instance" - "github.com/elastic/beats/heartbeat/beater" + _ "github.com/elastic/beats/heartbeat/monitors/defaults" cmd "github.com/elastic/beats/libbeat/cmd" + "github.com/elastic/beats/libbeat/cmd/instance" ) // Name of this beat var Name = "heartbeat" // RootCmd to handle beats cli -var RootCmd = cmd.GenRootCmdWithSettings(beater.New, instance.Settings{Name: Name}) +var RootCmd *cmd.BeatsRootCmd + +func init() { + RootCmd = cmd.GenRootCmdWithSettings(beater.New, instance.Settings{Name: Name}) + + // remove dashboard from export commands + for _, cmd := range RootCmd.ExportCmd.Commands() { + if cmd.Name() == "dashboard" { + RootCmd.ExportCmd.RemoveCommand(cmd) + } + } + + // only add defined flags to setup command + setup := RootCmd.SetupCmd + setup.Short = "Setup Elasticsearch index template and pipelines" + setup.Long = `This command does initial setup of the environment: + * Index mapping template in Elasticsearch to ensure fields are mapped. + * ILM Policy +` + setup.ResetFlags() + setup.Flags().Bool(cmd.TemplateKey, false, "Setup index template") + setup.Flags().Bool(cmd.ILMPolicyKey, false, "Setup ILM policy") +} From cc05f62d5d42f9b3c66a490d62c617c4b28025c9 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Thu, 9 May 2019 08:30:13 -0400 Subject: [PATCH 21/59] Skip Windows testing if magefile.go does not exist (#12099) Changes the jenkins_ci.ps1 script to skip testing when magefile.go does not exist. This will allow us to add projects like x-pack/winlogbeat to the test matrix because not all branches have an x-pack/winlogbeat/magefile.go file. --- dev-tools/jenkins_ci.ps1 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dev-tools/jenkins_ci.ps1 b/dev-tools/jenkins_ci.ps1 index e5fc5a3c1a86..4c9bf5924929 100755 --- a/dev-tools/jenkins_ci.ps1 +++ b/dev-tools/jenkins_ci.ps1 @@ -34,10 +34,10 @@ $env:RACE_DETECTOR = "true" # Install mage from vendor. exec { go install github.com/elastic/beats/vendor/github.com/magefile/mage } "mage install FAILURE" -if (Test-Path "$env:beat") { +if (Test-Path "$env:beat\magefile.go") { cd "$env:beat" } else { - echo "$env:beat does not exist" + echo "$env:beat\magefile.go does not exist" New-Item -ItemType directory -Path build | Out-Null New-Item -Name build\TEST-empty.xml -ItemType File | Out-Null exit @@ -62,5 +62,8 @@ echo "System testing $env:beat" $packages = $(go list ./... | select-string -Pattern "/vendor/" -NotMatch | select-string -Pattern "/scripts/cmd/" -NotMatch) $packages = ($packages|group|Select -ExpandProperty Name) -join "," exec { go test -race -c -cover -covermode=atomic -coverpkg $packages } "go test -race -cover FAILURE" -Set-Location -Path tests/system -exec { nosetests --with-timer --with-xunit --xunit-file=../../build/TEST-system.xml } "System test FAILURE" + +if (Test-Path "tests\system") { + Set-Location -Path tests\system + exec { nosetests --with-timer --with-xunit --xunit-file=../../build/TEST-system.xml } "System test FAILURE" +} From f2473d258b9c2c9d47d7a3bc5905f4c80ad4077f Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Thu, 9 May 2019 16:39:18 +0200 Subject: [PATCH 22/59] Fix goroutine leak on initialization failures of log input (#12125) Outlets are created during log input initialization, and if it fails they were never freed. Handle this case. --- CHANGELOG.next.asciidoc | 1 + filebeat/input/log/input.go | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 4b8f0c108ce4..2cff6a140109 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -92,6 +92,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add missing Kubernetes metadata fields to Filebeat CoreDNS module, and fix a documentation error. {pull}11591[11591] - Reduce memory usage if long lines are truncated to fit `max_bytes` limit. The line buffer is copied into a smaller buffer now. This allows the runtime to release unused memory earlier. {pull}11524[11524] - Fix memory leak in Filebeat pipeline acker. {pull}12063[12063] +- Fix goroutine leak caused on initialization failures of log input. {pull}12125[12125] *Heartbeat* diff --git a/filebeat/input/log/input.go b/filebeat/input/log/input.go index 3841fc23973f..ea19c20033be 100644 --- a/filebeat/input/log/input.go +++ b/filebeat/input/log/input.go @@ -76,6 +76,12 @@ func NewInput( outlet channel.Connector, context input.Context, ) (input.Input, error) { + cleanupNeeded := true + cleanupIfNeeded := func(f func() error) { + if cleanupNeeded { + f() + } + } // Note: underlying output. // The input and harvester do have different requirements @@ -87,11 +93,13 @@ func NewInput( if err != nil { return nil, err } + defer cleanupIfNeeded(out.Close) // stateOut will only be unblocked if the beat is shut down. // otherwise it can block on a full publisher pipeline, so state updates // can be forwarded correctly to the registrar. stateOut := channel.CloseOnSignal(channel.SubOutlet(out), context.BeatDone) + defer cleanupIfNeeded(stateOut.Close) meta := context.Meta if len(meta) == 0 { @@ -137,6 +145,7 @@ func NewInput( logp.Info("Configured paths: %v", p.config.Paths) + cleanupNeeded = false return p, nil } From 2cbdc9ad27f14aba8857df2b189abdb9c1661713 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Thu, 9 May 2019 16:52:18 +0200 Subject: [PATCH 23/59] Document and improve permission checks when running socket metricset from Docker (#12039) Update instructions for system/socket metricset on Docker. And base permission checks on capabilities rather than on the effective uid. Running a process as root doesn't mean that it has all privileges, specially when run as container. --- CHANGELOG.next.asciidoc | 2 + libbeat/common/capabilities_linux.go | 62 +++++++++++++++++ metricbeat/docs/running-on-docker.asciidoc | 13 ++++ metricbeat/helper/socket/ptable.go | 69 ++++++++++++++----- metricbeat/helper/socket/ptable_linux.go | 36 ++++++++++ metricbeat/helper/socket/ptable_other.go | 30 ++++++++ .../module/system/socket/_meta/docs.asciidoc | 8 ++- metricbeat/module/system/socket/socket.go | 8 +-- 8 files changed, 203 insertions(+), 25 deletions(-) create mode 100644 libbeat/common/capabilities_linux.go create mode 100644 metricbeat/helper/socket/ptable_linux.go create mode 100644 metricbeat/helper/socket/ptable_other.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 2cff6a140109..3d476e2091b8 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -111,6 +111,8 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Change diskio metrics retrieval method (only for Windows) from wmi query to DeviceIOControl function using the IOCTL_DISK_PERFORMANCE control code {pull}11635[11635] - Call GetMetricData api per region instead of per instance. {issue}11820[11820] {pull}11882[11882] - Update documentation with cloudwatch:ListMetrics permission. {pull}11987[11987] +- Check permissions in system socket metricset based on capabilities. {pull}12039[12039] +- Get process information from sockets owned by current user when system socket metricset is run without privileges. {pull}12039[12039] - Avoid generating hints-based configuration with empty hosts when no exposed port is suitable for the hosts hint. {issue}8264[8264] {pull}12086[12086] - Fixed a socket leak in the postgresql module under Windows when SSL is disabled on the server. {pull}11393[11393] diff --git a/libbeat/common/capabilities_linux.go b/libbeat/common/capabilities_linux.go new file mode 100644 index 000000000000..e05cf99fb72a --- /dev/null +++ b/libbeat/common/capabilities_linux.go @@ -0,0 +1,62 @@ +// 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. + +// +build linux + +package common + +import ( + "github.com/pkg/errors" + + "github.com/elastic/go-sysinfo" + "github.com/elastic/go-sysinfo/types" +) + +// Capabilities contains the capability sets of a process +type Capabilities types.CapabilityInfo + +// Check performs a permission check for a given capabilities set +func (c Capabilities) Check(set []string) bool { + for _, capability := range set { + found := false + for _, effective := range c.Effective { + if capability == effective { + found = true + break + } + } + if !found { + return false + } + } + return true +} + +// GetCapabilities gets the capabilities of this process +func GetCapabilities() (Capabilities, error) { + p, err := sysinfo.Self() + if err != nil { + return Capabilities{}, errors.Wrap(err, "failed to read self process information") + } + + if c, ok := p.(types.Capabilities); ok { + capabilities, err := c.Capabilities() + return Capabilities(*capabilities), errors.Wrap(err, "failed to read process capabilities") + } + + return Capabilities{}, errors.New("capabilities not available") +} diff --git a/metricbeat/docs/running-on-docker.asciidoc b/metricbeat/docs/running-on-docker.asciidoc index 98e5f5d7df62..97736a319c47 100644 --- a/metricbeat/docs/running-on-docker.asciidoc +++ b/metricbeat/docs/running-on-docker.asciidoc @@ -46,7 +46,20 @@ NOTE: The special filesystems +/proc+ and +/sys+ are only available if the host system is running Linux. Attempts to bind-mount these filesystems will fail on Windows and MacOS. + +If the <> +is being used on Linux, more privileges will need to be granted to Metricbeat. +This metricset reads files from `/proc` that are an interface to internal +objects owned by other users. The capabilities needed to read all these files +(`sys_ptrace` and `dac_read_search`) are disabled by default on Docker. To +grant these permissions these flags are needed too: + +["source","sh",subs="attributes"] +---- +--user root --cap-add sys_ptrace --cap-add dac_read_search +---- [float] + [[monitoring-service]] ==== Monitor a service in another container diff --git a/metricbeat/helper/socket/ptable.go b/metricbeat/helper/socket/ptable.go index 84d600fbe004..af22156849d9 100644 --- a/metricbeat/helper/socket/ptable.go +++ b/metricbeat/helper/socket/ptable.go @@ -15,12 +15,15 @@ // specific language governing permissions and limitations // under the License. +// +build !windows + package socket import ( "os" "strconv" "strings" + "syscall" "github.com/joeshaw/multierror" "github.com/prometheus/procfs" @@ -39,10 +42,10 @@ type Proc struct { // ProcTable contains all of the active processes (if the current user is root). type ProcTable struct { - fs procfs.FS - procs map[int]*Proc - inodes map[uint32]*Proc - euid int + fs procfs.FS + procs map[int]*Proc + inodes map[uint32]*Proc + privileged bool } // NewProcTable returns a new ProcTable that reads data from the /proc @@ -58,29 +61,30 @@ func NewProcTable(mountpoint string) (*ProcTable, error) { return nil, err } - p := &ProcTable{fs: fs, euid: os.Geteuid()} + privileged, err := isPrivileged() + if err != nil { + return nil, err + } + + p := &ProcTable{fs: fs, privileged: privileged} p.Refresh() return p, nil } +// Privileged returns true if the process has enough permissions to read +// sockets of all users +func (t *ProcTable) Privileged() bool { + return t.privileged +} + // Refresh updates the process table with new processes and removes processes // that have exited. It collects the PID, command, and socket inode information. // If running as non-root, only information from the current process will be // collected. func (t *ProcTable) Refresh() error { - var err error - var procs []procfs.Proc - if t.euid == 0 { - procs, err = t.fs.AllProcs() - if err != nil { - return err - } - } else { - proc, err := t.fs.Self() - if err != nil { - return err - } - procs = append(procs, proc) + procs, err := t.accessibleProcs() + if err != nil { + return err } var errs multierror.Errors @@ -124,6 +128,35 @@ func (t *ProcTable) Refresh() error { return errs.Err() } +func (t *ProcTable) accessibleProcs() ([]procfs.Proc, error) { + procs, err := t.fs.AllProcs() + if err != nil { + return nil, err + } + if t.privileged { + return procs, nil + } + + // Filter out not owned processes + k := 0 + euid := uint32(os.Geteuid()) + for i := 0; i < len(procs); i++ { + p := t.fs.Path(strconv.Itoa(procs[i].PID)) + info, err := os.Stat(p) + if err != nil { + continue + } + stat, ok := info.Sys().(*syscall.Stat_t) + if !ok || stat.Uid != euid { + continue + } + procs[k] = procs[i] + k++ + } + + return procs[:k], nil +} + func socketInodes(p *procfs.Proc) ([]uint32, error) { fds, err := p.FileDescriptorTargets() if err != nil { diff --git a/metricbeat/helper/socket/ptable_linux.go b/metricbeat/helper/socket/ptable_linux.go new file mode 100644 index 000000000000..091efe60bfea --- /dev/null +++ b/metricbeat/helper/socket/ptable_linux.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. + +// +build linux + +package socket + +import ( + "github.com/elastic/beats/libbeat/common" +) + +var requiredCapabilities = []string{"sys_ptrace", "dac_read_search"} + +// isPrivileged checks if this process has privileges to read sockets +// of all users +func isPrivileged() (bool, error) { + capabilities, err := common.GetCapabilities() + if err != nil { + return false, err + } + return capabilities.Check(requiredCapabilities), nil +} diff --git a/metricbeat/helper/socket/ptable_other.go b/metricbeat/helper/socket/ptable_other.go new file mode 100644 index 000000000000..447ba24448c0 --- /dev/null +++ b/metricbeat/helper/socket/ptable_other.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. + +// +build !linux,!windows + +package socket + +import ( + "os" +) + +// isPrivileged checks if this process has privileges to read sockets +// of all users +func isPrivileged() (bool, error) { + return os.Geteuid() == 0, nil +} diff --git a/metricbeat/module/system/socket/_meta/docs.asciidoc b/metricbeat/module/system/socket/_meta/docs.asciidoc index 7dd1697ba418..e705b8ea1b8d 100644 --- a/metricbeat/module/system/socket/_meta/docs.asciidoc +++ b/metricbeat/module/system/socket/_meta/docs.asciidoc @@ -19,9 +19,11 @@ metricbeat.modules: <1> You can configure the `socket` metricset separately to specify a different `period` value than the other metricsets. -The metricset reports the process that has the socket open. In order to provide -this information, Metricbeat must be running as root. Root access is also -required to read the file descriptor information of other processes. +The metricset reports the process that has the socket open. To provide this +information on Linux for all processes, Metricbeat must be run with +`sys_ptrace` and `dac_read_search` capabilities. These permissions are usually +granted when running as root, but they can and may need to be explictly added +when running Metricbeat inside a container. [float] === Configuration diff --git a/metricbeat/module/system/socket/socket.go b/metricbeat/module/system/socket/socket.go index 9bb25f7f675c..fe90231683c6 100644 --- a/metricbeat/module/system/socket/socket.go +++ b/metricbeat/module/system/socket/socket.go @@ -77,9 +77,9 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { if err != nil { return nil, err } - if os.Geteuid() != 0 { - logp.Info("socket process info will only be available for " + - "metricbeat because the process is running as a non-root user") + if !ptable.Privileged() { + logp.Info("socket process info will only be available for processes owned by the %v user "+ + "because this Beat is not running with enough privileges", os.Geteuid()) } m := &MetricSet{ @@ -212,7 +212,7 @@ func (m *MetricSet) enrichConnectionData(c *connection) { c.Command = proc.Command c.CmdLine = proc.CmdLine c.Args = proc.Args - } else if m.euid == 0 { + } else if m.ptable.Privileged() { if c.Inode == 0 { c.ProcessError = fmt.Errorf("process has exited. inode=%v, tcp_state=%v", c.Inode, c.State) From bbf4156ab09e3782149d43c1fa92d17895bb8d41 Mon Sep 17 00:00:00 2001 From: Alex K <8418476+fearful-symmetry@users.noreply.github.com> Date: Thu, 9 May 2019 10:14:29 -0500 Subject: [PATCH 24/59] [metricbeat] added CPU usage check to docker memory stats (#12062) --- metricbeat/module/docker/memory/helper.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/metricbeat/module/docker/memory/helper.go b/metricbeat/module/docker/memory/helper.go index 69f26c370ac9..1e5524e75ed7 100644 --- a/metricbeat/module/docker/memory/helper.go +++ b/metricbeat/module/docker/memory/helper.go @@ -43,8 +43,9 @@ func (s *MemoryService) getMemoryStatsList(containers []docker.Stat, dedot bool) for _, containerStats := range containers { //There appears to be a race where a container will report with a stat object before it actually starts //during this time, there doesn't appear to be any meaningful data, - // and Limit will never be 0 unless the container is not running & there's no cgroup data - if containerStats.Stats.MemoryStats.Limit == 0 { + // and Limit will never be 0 unless the container is not running + //and there's no cgroup data, and CPU usage should be greater than 0 for any running container. + if containerStats.Stats.MemoryStats.Limit == 0 && containerStats.Stats.PreCPUStats.CPUUsage.TotalUsage == 0 { continue } formattedStats = append(formattedStats, s.getMemoryStats(containerStats, dedot)) From 1b2613eb6dc3b81bf6fd3c5141b4f9f7976953dd Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Thu, 9 May 2019 09:29:56 -0600 Subject: [PATCH 25/59] Change type from scaled_float to long and add format (#11982) * Change type from scaled_float to long and add format --- CHANGELOG.next.asciidoc | 1 + metricbeat/docs/fields.asciidoc | 60 +++++++++++++------ .../module/aws/ec2/_meta/fields.yml | 28 +++++---- x-pack/metricbeat/module/aws/fields.go | 2 +- .../aws/s3_daily_storage/_meta/fields.yml | 5 +- .../module/aws/s3_request/_meta/fields.yml | 14 +++-- .../module/aws/sqs/_meta/fields.yml | 1 + 7 files changed, 74 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 3d476e2091b8..0549f3dd6094 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -36,6 +36,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add new option `OpMultiplyBuckets` to scale histogram buckets to avoid decimal points in final events {pull}10994[10994] - Change cloud.provider from ec2 to aws and from gce to gcp in add_cloud_metadata to align with ECS. {issue}10775[10775] {pull}11687[11687] - system/raid metricset now uses /sys/block instead of /proc/mdstat for data. {pull}11613[11613] +- Change some field type from scaled_float to long in aws module. {pull}11982[11982] *Packetbeat* diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index fad706b26b20..044af1ca15eb 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -887,7 +887,7 @@ The percentage of allocated EC2 compute units that are currently in use on the i *`aws.ec2.cpu.credit_usage`*:: + -- -type: scaled_float +type: long The number of CPU credits spent by the instance for CPU utilization. @@ -897,7 +897,7 @@ The number of CPU credits spent by the instance for CPU utilization. *`aws.ec2.cpu.credit_balance`*:: + -- -type: scaled_float +type: long The number of earned CPU credits that an instance has accrued since it was launched or started. @@ -907,7 +907,7 @@ The number of earned CPU credits that an instance has accrued since it was launc *`aws.ec2.cpu.surplus_credit_balance`*:: + -- -type: scaled_float +type: long The number of surplus credits that have been spent by an unlimited instance when its CPUCreditBalance value is zero. @@ -917,7 +917,7 @@ The number of surplus credits that have been spent by an unlimited instance when *`aws.ec2.cpu.surplus_credits_charged`*:: + -- -type: scaled_float +type: long The number of spent surplus credits that are not paid down by earned CPU credits, and which thus incur an additional charge. @@ -927,7 +927,7 @@ The number of spent surplus credits that are not paid down by earned CPU credits *`aws.ec2.network.in.packets`*:: + -- -type: scaled_float +type: long The number of packets received on all network interfaces by the instance. @@ -937,7 +937,7 @@ The number of packets received on all network interfaces by the instance. *`aws.ec2.network.out.packets`*:: + -- -type: scaled_float +type: long The number of packets sent out on all network interfaces by the instance. @@ -947,7 +947,9 @@ The number of packets sent out on all network interfaces by the instance. *`aws.ec2.network.in.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes The number of bytes received on all network interfaces by the instance. @@ -957,7 +959,9 @@ The number of bytes received on all network interfaces by the instance. *`aws.ec2.network.out.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes The number of bytes sent out on all network interfaces by the instance. @@ -967,7 +971,9 @@ The number of bytes sent out on all network interfaces by the instance. *`aws.ec2.diskio.read.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes Bytes read from all instance store volumes available to the instance. @@ -977,7 +983,9 @@ Bytes read from all instance store volumes available to the instance. *`aws.ec2.diskio.write.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes Bytes written to all instance store volumes available to the instance. @@ -987,7 +995,7 @@ Bytes written to all instance store volumes available to the instance. *`aws.ec2.diskio.read.ops`*:: + -- -type: scaled_float +type: long Completed read operations from all instance store volumes available to the instance in a specified period of time. @@ -997,7 +1005,7 @@ Completed read operations from all instance store volumes available to the insta *`aws.ec2.diskio.write.ops`*:: + -- -type: scaled_float +type: long Completed write operations to all instance store volumes available to the instance in a specified period of time. @@ -1154,7 +1162,9 @@ Name of a S3 bucket. *`aws.s3_daily_storage.bucket.size.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes The amount of data in bytes stored in a bucket. @@ -1164,7 +1174,7 @@ The amount of data in bytes stored in a bucket. *`aws.s3_daily_storage.number_of_objects`*:: + -- -type: scaled_float +type: long The total number of objects stored in a bucket for all storage classes. @@ -1261,7 +1271,9 @@ The number of Amazon S3 SELECT Object Content requests made for objects in an Am *`aws.s3_request.requests.select_scanned.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes The number of bytes of data scanned with Amazon S3 SELECT Object Content requests in an Amazon S3 bucket. @@ -1271,7 +1283,9 @@ The number of bytes of data scanned with Amazon S3 SELECT Object Content request *`aws.s3_request.requests.select_returned.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes The number of bytes of data returned with Amazon S3 SELECT Object Content requests in an Amazon S3 bucket. @@ -1291,7 +1305,9 @@ The number of HTTP requests that list the contents of a bucket. *`aws.s3_request.downloaded.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes The number bytes downloaded for requests made to an Amazon S3 bucket, where the response includes a body. @@ -1301,7 +1317,9 @@ The number bytes downloaded for requests made to an Amazon S3 bucket, where the *`aws.s3_request.uploaded.bytes`*:: + -- -type: scaled_float +type: long + +format: bytes The number bytes uploaded that contain a request body, made to an Amazon S3 bucket. @@ -1333,6 +1351,8 @@ The number of HTTP 5xx server error status code requests made to an Amazon S3 bu -- type: long +format: duration + The per-request time from the complete request being received by an Amazon S3 bucket to when the response starts to be returned. @@ -1343,6 +1363,8 @@ The per-request time from the complete request being received by an Amazon S3 bu -- type: long +format: duration + The elapsed per-request time from the first byte received to the last byte sent to an Amazon S3 bucket. @@ -1360,6 +1382,8 @@ The elapsed per-request time from the first byte received to the last byte sent -- type: long +format: duration + The approximate age of the oldest non-deleted message in the queue. diff --git a/x-pack/metricbeat/module/aws/ec2/_meta/fields.yml b/x-pack/metricbeat/module/aws/ec2/_meta/fields.yml index 45c76e7ac2fd..34e6686d24fa 100644 --- a/x-pack/metricbeat/module/aws/ec2/_meta/fields.yml +++ b/x-pack/metricbeat/module/aws/ec2/_meta/fields.yml @@ -9,51 +9,55 @@ description: > The percentage of allocated EC2 compute units that are currently in use on the instance. - name: cpu.credit_usage - type: scaled_float + type: long description: > The number of CPU credits spent by the instance for CPU utilization. - name: cpu.credit_balance - type: scaled_float + type: long description: > The number of earned CPU credits that an instance has accrued since it was launched or started. - name: cpu.surplus_credit_balance - type: scaled_float + type: long description: > The number of surplus credits that have been spent by an unlimited instance when its CPUCreditBalance value is zero. - name: cpu.surplus_credits_charged - type: scaled_float + type: long description: > The number of spent surplus credits that are not paid down by earned CPU credits, and which thus incur an additional charge. - name: network.in.packets - type: scaled_float + type: long description: > The number of packets received on all network interfaces by the instance. - name: network.out.packets - type: scaled_float + type: long description: > The number of packets sent out on all network interfaces by the instance. - name: network.in.bytes - type: scaled_float + type: long + format: bytes description: > The number of bytes received on all network interfaces by the instance. - name: network.out.bytes - type: scaled_float + type: long + format: bytes description: > The number of bytes sent out on all network interfaces by the instance. - name: diskio.read.bytes - type: scaled_float + type: long + format: bytes description: > Bytes read from all instance store volumes available to the instance. - name: diskio.write.bytes - type: scaled_float + type: long + format: bytes description: > Bytes written to all instance store volumes available to the instance. - name: diskio.read.ops - type: scaled_float + type: long description: > Completed read operations from all instance store volumes available to the instance in a specified period of time. - name: diskio.write.ops - type: scaled_float + type: long description: > Completed write operations to all instance store volumes available to the instance in a specified period of time. - name: status.check_failed diff --git a/x-pack/metricbeat/module/aws/fields.go b/x-pack/metricbeat/module/aws/fields.go index 2bb0e5771ba5..0db3a4368c98 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 gzipped 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/s3_daily_storage/_meta/fields.yml b/x-pack/metricbeat/module/aws/s3_daily_storage/_meta/fields.yml index 6e9357cdad6f..06c315e2cb2d 100644 --- a/x-pack/metricbeat/module/aws/s3_daily_storage/_meta/fields.yml +++ b/x-pack/metricbeat/module/aws/s3_daily_storage/_meta/fields.yml @@ -9,10 +9,11 @@ description: > Name of a S3 bucket. - name: bucket.size.bytes - type: scaled_float + type: long + format: bytes description: > The amount of data in bytes stored in a bucket. - name: number_of_objects - type: scaled_float + type: long description: > The total number of objects stored in a bucket for all storage classes. diff --git a/x-pack/metricbeat/module/aws/s3_request/_meta/fields.yml b/x-pack/metricbeat/module/aws/s3_request/_meta/fields.yml index 45ec464f8a38..70380bd36b8b 100644 --- a/x-pack/metricbeat/module/aws/s3_request/_meta/fields.yml +++ b/x-pack/metricbeat/module/aws/s3_request/_meta/fields.yml @@ -37,11 +37,13 @@ description: > The number of Amazon S3 SELECT Object Content requests made for objects in an Amazon S3 bucket. - name: requests.select_scanned.bytes - type: scaled_float + type: long + format: bytes description: > The number of bytes of data scanned with Amazon S3 SELECT Object Content requests in an Amazon S3 bucket. - name: requests.select_returned.bytes - type: scaled_float + type: long + format: bytes description: > The number of bytes of data returned with Amazon S3 SELECT Object Content requests in an Amazon S3 bucket. - name: requests.list @@ -49,11 +51,13 @@ description: > The number of HTTP requests that list the contents of a bucket. - name: downloaded.bytes - type: scaled_float + type: long + format: bytes description: > The number bytes downloaded for requests made to an Amazon S3 bucket, where the response includes a body. - name: uploaded.bytes - type: scaled_float + type: long + format: bytes description: > The number bytes uploaded that contain a request body, made to an Amazon S3 bucket. - name: errors.4xx @@ -66,9 +70,11 @@ The number of HTTP 5xx server error status code requests made to an Amazon S3 bucket with a value of either 0 or 1. - name: latency.first_byte.ms type: long + format: duration description: > The per-request time from the complete request being received by an Amazon S3 bucket to when the response starts to be returned. - name: latency.total_request.ms type: long + format: duration description: > The elapsed per-request time from the first byte received to the last byte sent to an Amazon S3 bucket. diff --git a/x-pack/metricbeat/module/aws/sqs/_meta/fields.yml b/x-pack/metricbeat/module/aws/sqs/_meta/fields.yml index 1e36b2465741..708c856b20e8 100644 --- a/x-pack/metricbeat/module/aws/sqs/_meta/fields.yml +++ b/x-pack/metricbeat/module/aws/sqs/_meta/fields.yml @@ -6,6 +6,7 @@ fields: - name: oldest_message_age.sec type: long + format: duration description: > The approximate age of the oldest non-deleted message in the queue. - name: messages.delayed From 88a2604971fe17d532a7bd44a176751633288678 Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Thu, 9 May 2019 11:40:29 -0400 Subject: [PATCH 26/59] [libbeat] Add unit tests for libbeat's client proxy settings (#12044) These tests set up server listeners and create libbeat clients with varying proxy settings, and verify that the clients ping the correct target URL. This is a preparation for #11713, since most of the logic (and work) is in testing the proxy settings; the much simpler PR adding the proxy-disable flag will be a followup to this one, to keep the functional changes isolated in case of rollbacks etc. --- .../elasticsearch/client_proxy_test.go | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 libbeat/outputs/elasticsearch/client_proxy_test.go diff --git a/libbeat/outputs/elasticsearch/client_proxy_test.go b/libbeat/outputs/elasticsearch/client_proxy_test.go new file mode 100644 index 000000000000..d4a2e0c12eb9 --- /dev/null +++ b/libbeat/outputs/elasticsearch/client_proxy_test.go @@ -0,0 +1,215 @@ +// 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. + +// This file contains tests to confirm that elasticsearch.Client uses proxy +// settings following the intended precedence. + +package elasticsearch + +import ( + "bytes" + "fmt" + "net/http" + "net/http/httptest" + "net/url" + "os" + "os/exec" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/elastic/beats/libbeat/common/atomic" + "github.com/elastic/beats/libbeat/outputs/outil" +) + +// These constants are inserted into client http request headers and confirmed +// by the server listeners. +const ( + headerTestField = "X-Test-Value" + headerTestValue = "client_proxy_test test value" +) + +// TestClientPing is a placeholder test that does nothing on a standard run, +// but starts up a client and sends a ping when the environment variable +// TEST_START_CLIENT is set to 1 as in execClient). +func TestClientPing(t *testing.T) { + // If this is the child process, start up the client, otherwise do nothing. + if os.Getenv("TEST_START_CLIENT") == "1" { + doClientPing(t) + return + } +} + +// TestBaseline makes sure we can have a client process ping the server that +// we start, with no changes to the proxy settings. (This is really a +// meta-test for the helpers that create the servers / client.) +func TestBaseline(t *testing.T) { + servers, teardown := startServers(t) + defer teardown() + + // Start a bare client with no proxy settings, pointed at the main server. + execClient(t, "TEST_SERVER_URL="+servers.serverURL) + // We expect one server request and 0 proxy requests + assert.Equal(t, 1, servers.serverRequestCount()) + assert.Equal(t, 0, servers.proxyRequestCount()) +} + +// TestClientSettingsProxy confirms that we can control the proxy of a client +// by setting its ClientSettings.Proxy value on creation. (The child process +// uses the TEST_PROXY_URL environment variable to initialize the flag.) +func TestClientSettingsProxy(t *testing.T) { + servers, teardown := startServers(t) + defer teardown() + + // Start a client with ClientSettings.Proxy set to the proxy listener. + execClient(t, + "TEST_SERVER_URL="+servers.serverURL, + "TEST_PROXY_URL="+servers.proxyURL) + // We expect one proxy request and 0 server requests + assert.Equal(t, 0, servers.serverRequestCount()) + assert.Equal(t, 1, servers.proxyRequestCount()) +} + +// TestEnvironmentProxy confirms that we can control the proxy of a client by +// setting the HTTP_PROXY environment variable (see +// https://golang.org/pkg/net/http/#ProxyFromEnvironment). +func TestEnvironmentProxy(t *testing.T) { + servers, teardown := startServers(t) + defer teardown() + + // Start a client with HTTP_PROXY set to the proxy listener. + // The server is set to a nonexistent URL because ProxyFromEnvironment + // always returns a nil proxy for local destination URLs. + execClient(t, + "TEST_SERVER_URL=http://fakeurl.fake.not-real", + "HTTP_PROXY="+servers.proxyURL) + // We expect one proxy request and 0 server requests + assert.Equal(t, 0, servers.serverRequestCount()) + assert.Equal(t, 1, servers.proxyRequestCount()) +} + +// TestClientSettingsOverrideEnvironmentProxy confirms that when both +// ClientSettings.Proxy and HTTP_PROXY are set, ClientSettings takes precedence. +func TestClientSettingsOverrideEnvironmentProxy(t *testing.T) { + servers, teardown := startServers(t) + defer teardown() + + // Start a client with ClientSettings.Proxy set to the proxy listener and + // HTTP_PROXY set to the server listener. We expect that the former will + // override the latter and thus we will only see a ping to the proxy. + // As above, the fake URL is needed to ensure ProxyFromEnvironment gives a + // non-nil result. + execClient(t, + "TEST_SERVER_URL=http://fakeurl.fake.not-real", + "TEST_PROXY_URL="+servers.proxyURL, + "HTTP_PROXY="+servers.serverURL) + // We expect one proxy request and 0 server requests + assert.Equal(t, 0, servers.serverRequestCount()) + assert.Equal(t, 1, servers.proxyRequestCount()) +} + +// runClientTest executes the current test binary as a child process, +// running only the TestClientPing, and calling it with the environment variable +// TEST_START_CLIENT=1 (so the test can recognize that it is the child process), +// and any additional environment settings specified in env. +// This is helpful for testing proxy settings, since we need to have both a +// proxy / server-side listener and a client that communicates with the server +// using various proxy settings. +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") + cmd.Env = append(append(os.Environ(), + "TEST_START_CLIENT=1"), + env...) + cmdOutput := new(bytes.Buffer) + cmd.Stderr = cmdOutput + cmd.Stdout = cmdOutput + + err := cmd.Run() + if err != nil { + t.Error("Error executing client:\n" + cmdOutput.String()) + } +} + +func doClientPing(t *testing.T) { + serverURL := os.Getenv("TEST_SERVER_URL") + require.NotEqual(t, serverURL, "") + proxy := os.Getenv("TEST_PROXY_URL") + clientSettings := ClientSettings{ + URL: serverURL, + Index: outil.MakeSelector(outil.ConstSelectorExpr("test")), + Headers: map[string]string{headerTestField: headerTestValue}, + } + if proxy != "" { + proxyURL, err := url.Parse(proxy) + require.NoError(t, err) + clientSettings.Proxy = proxyURL + } + client, err := NewClient(clientSettings, nil) + require.NoError(t, err) + + // 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.Ping() +} + +// serverState contains the state of the http listeners for proxy tests, +// including the endpoint URLs and the observed request count for each one. +type serverState struct { + serverURL string + proxyURL string + + _serverRequestCount atomic.Int // Requests directly to the server + _proxyRequestCount atomic.Int // Requests via the proxy +} + +// Convenience functions to unwrap the atomic primitives +func (s serverState) serverRequestCount() int { + return s._serverRequestCount.Load() +} + +func (s serverState) proxyRequestCount() int { + return s._proxyRequestCount.Load() +} + +// startServers starts endpoints representing a backend server and a proxy, +// and returns the corresponding serverState and a teardown function that +// should be called to shut them down at the end of the test. +func startServers(t *testing.T) (*serverState, func()) { + state := serverState{} + server := httptest.NewServer( + http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + assert.Equal(t, headerTestValue, r.Header.Get(headerTestField)) + fmt.Fprintln(w, "Hello, client") + state._serverRequestCount.Inc() + })) + proxy := httptest.NewServer( + http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + assert.Equal(t, headerTestValue, r.Header.Get(headerTestField)) + fmt.Fprintln(w, "Hello, client") + state._proxyRequestCount.Inc() + })) + state.serverURL = server.URL + state.proxyURL = proxy.URL + return &state, func() { + server.Close() + proxy.Close() + } +} From cd5c3ad4050dbfb6e50393e23390d037a162ee62 Mon Sep 17 00:00:00 2001 From: Pablo Mercado Date: Thu, 9 May 2019 17:59:23 +0200 Subject: [PATCH 27/59] [Metricbeat](Etcd-Leader)Followers wont report leader metrics (#12004) * manage leader metricset so that followers don't report errors nor events * add debug message when skipping leader events from non leader members --- CHANGELOG.next.asciidoc | 1 + .../etcd/_meta/test/leaderstats_empty.json | 0 .../etcd/_meta/test/leaderstats_follower.json | 1 + .../_meta/test/leaderstats_internalerror.json | 1 + metricbeat/module/etcd/leader/leader.go | 70 +++++++++-- metricbeat/module/etcd/leader/leader_test.go | 110 ++++++++++++++---- 6 files changed, 153 insertions(+), 30 deletions(-) create mode 100644 metricbeat/module/etcd/_meta/test/leaderstats_empty.json create mode 100644 metricbeat/module/etcd/_meta/test/leaderstats_follower.json create mode 100644 metricbeat/module/etcd/_meta/test/leaderstats_internalerror.json diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 0549f3dd6094..32f2e92a6b79 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -193,6 +193,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add check on object name in the counter path if the instance name is missing {issue}6528[6528] {pull}11878[11878] - Add AWS cloudwatch metricset. {pull}11798[11798] {issue}11734[11734] - Add `regions` in aws module config to specify target regions for querying cloudwatch metrics. {issue}11932[11932] {pull}11956[11956] +- Keep `etcd` followers members from reporting `leader` metricset events {pull}12004[12004] *Packetbeat* diff --git a/metricbeat/module/etcd/_meta/test/leaderstats_empty.json b/metricbeat/module/etcd/_meta/test/leaderstats_empty.json new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/metricbeat/module/etcd/_meta/test/leaderstats_follower.json b/metricbeat/module/etcd/_meta/test/leaderstats_follower.json new file mode 100644 index 000000000000..c64ace3c384e --- /dev/null +++ b/metricbeat/module/etcd/_meta/test/leaderstats_follower.json @@ -0,0 +1 @@ +{"message":"not current leader"} \ No newline at end of file diff --git a/metricbeat/module/etcd/_meta/test/leaderstats_internalerror.json b/metricbeat/module/etcd/_meta/test/leaderstats_internalerror.json new file mode 100644 index 000000000000..af1c2edca60a --- /dev/null +++ b/metricbeat/module/etcd/_meta/test/leaderstats_internalerror.json @@ -0,0 +1 @@ +{"message":"random error message"} \ No newline at end of file diff --git a/metricbeat/module/etcd/leader/leader.go b/metricbeat/module/etcd/leader/leader.go index 51c100075150..16a635554109 100644 --- a/metricbeat/module/etcd/leader/leader.go +++ b/metricbeat/module/etcd/leader/leader.go @@ -18,9 +18,16 @@ package leader import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "github.com/pkg/errors" "github.com/elastic/beats/libbeat/common" + "github.com/elastic/beats/libbeat/logp" + "github.com/elastic/beats/metricbeat/helper" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/mb/parse" @@ -30,6 +37,12 @@ const ( defaultScheme = "http" defaultPath = "/v2/stats/leader" apiVersion = "2" + + // returned JSON management + msgElement = "message" + msgValueNonLeader = "not current leader" + + logSelector = "etcd.leader" ) var ( @@ -46,11 +59,15 @@ func init() { ) } +// MetricSet for etcd.leader type MetricSet struct { mb.BaseMetricSet - http *helper.HTTP + http *helper.HTTP + logger *logp.Logger + debugEnabled bool } +// New etcd.leader metricset object func New(base mb.BaseMetricSet) (mb.MetricSet, error) { config := struct{}{} if err := base.Module().UnpackConfig(&config); err != nil { @@ -64,6 +81,8 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return &MetricSet{ base, http, + logp.NewLogger(logSelector), + logp.IsDebug(logSelector), }, nil } @@ -71,14 +90,49 @@ 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 { - content, err := m.http.FetchContent() + res, err := m.http.FetchResponse() + if err != nil { + return errors.Wrap(err, "error fetching response") + } + defer res.Body.Close() + + content, err := ioutil.ReadAll(res.Body) if err != nil { - return errors.Wrap(err, "error in http fetch") + return errors.Wrapf(err, "error reading body response") } - reporter.Event(mb.Event{ - MetricSetFields: eventMapping(content), - ModuleFields: common.MapStr{"api_version": apiVersion}, - }) - return nil + if res.StatusCode == http.StatusOK { + reporter.Event(mb.Event{ + MetricSetFields: eventMapping(content), + ModuleFields: common.MapStr{"api_version": apiVersion}, + }) + return nil + } + + // Errors might be reported as {"message":""} + // let's look for that structure + var jsonResponse map[string]interface{} + if err = json.Unmarshal(content, &jsonResponse); err == nil { + if retMessage := jsonResponse[msgElement]; retMessage != "" { + // there is an error message element, let's use it + + // If a 403 is returned and {"message":"not current leader"} + // do not consider this an error + // do not report events since this is not a leader + if res.StatusCode == http.StatusForbidden && + retMessage == msgValueNonLeader { + if m.debugEnabled { + m.logger.Debugf("skipping event for non leader member %q", m.Host()) + } + return nil + } + + return fmt.Errorf("fetching HTTP response returned status code %d: %s", + res.StatusCode, retMessage) + } + } + + // no message in the JSON payload, return standard error + return fmt.Errorf("fetching HTTP response returned status code %d", res.StatusCode) + } diff --git a/metricbeat/module/etcd/leader/leader_test.go b/metricbeat/module/etcd/leader/leader_test.go index 990c0bca43f1..31dfa2e718ea 100644 --- a/metricbeat/module/etcd/leader/leader_test.go +++ b/metricbeat/module/etcd/leader/leader_test.go @@ -22,6 +22,7 @@ import ( "net/http" "net/http/httptest" "path/filepath" + "regexp" "github.com/stretchr/testify/assert" @@ -40,29 +41,94 @@ func TestEventMapping(t *testing.T) { } func TestFetchEventContent(t *testing.T) { - absPath, err := filepath.Abs("../_meta/test/") - assert.NoError(t, err) - response, err := ioutil.ReadFile(absPath + "/leaderstats.json") - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) - w.Header().Set("Content-Type", "application/json;") - w.Write([]byte(response)) - })) - defer server.Close() - - config := map[string]interface{}{ - "module": "etcd", - "metricsets": []string{"leader"}, - "hosts": []string{server.URL}, - } + const ( + module = "etcd" + metricset = "leader" + mockedFetchLocation = "../_meta/test/" + ) - f := mbtest.NewReportingMetricSetV2Error(t, config) - events, errs := mbtest.ReportingFetchV2Error(f) - if len(errs) > 0 { - t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) - } - assert.NotEmpty(t, events) + var testcases = []struct { + name string + mockedFetchFile string + httpCode int + + expectedFetchErrorRegexp string + expectedNumEvents int + }{ + { + name: "Leader member stats", + mockedFetchFile: "/leaderstats.json", + httpCode: http.StatusOK, + expectedNumEvents: 1, + }, + { + name: "Follower member", + mockedFetchFile: "/leaderstats_follower.json", + httpCode: http.StatusForbidden, + expectedNumEvents: 0, + }, + { + name: "Simulating credentials issue", + mockedFetchFile: "/leaderstats_empty.json", + httpCode: http.StatusForbidden, + expectedFetchErrorRegexp: "fetching HTTP response returned status code 403", + expectedNumEvents: 0, + }, + { + name: "Simulating failure message", + mockedFetchFile: "/leaderstats_internalerror.json", + httpCode: http.StatusInternalServerError, + expectedFetchErrorRegexp: "fetching HTTP response returned status code 500:.+", + expectedNumEvents: 0, + }} + + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + + absPath, err := filepath.Abs(mockedFetchLocation + tc.mockedFetchFile) + assert.NoError(t, err) + + response, err := ioutil.ReadFile(absPath) + assert.NoError(t, err) - t.Logf("%s/%s event: %+v", f.Module().Name(), f.Name(), events[0]) + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(tc.httpCode) + w.Header().Set("Content-Type", "application/json;") + w.Write([]byte(response)) + })) + defer server.Close() + + config := map[string]interface{}{ + "module": module, + "metricsets": []string{metricset}, + "hosts": []string{server.URL}, + } + + f := mbtest.NewReportingMetricSetV2Error(t, config) + events, errs := mbtest.ReportingFetchV2Error(f) + + if tc.expectedFetchErrorRegexp != "" { + for _, err := range errs { + if match, _ := regexp.MatchString(tc.expectedFetchErrorRegexp, err.Error()); match { + // found expected fetch error, no need for further checks + return + } + } + t.Fatalf("Expected fetch error not found:\n Expected:%s\n Got: %+v", + tc.expectedFetchErrorRegexp, + errs) + } + + if len(errs) > 0 { + t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) + } + + assert.Equal(t, tc.expectedNumEvents, len(events)) + + for i := range events { + t.Logf("%s/%s event[%d]: %+v", f.Module().Name(), f.Name(), i, events[i]) + } + }) + } } From 44a87a8b05fda8b4bbca29011a3880dd9f989100 Mon Sep 17 00:00:00 2001 From: Steffen Siering Date: Thu, 9 May 2019 18:32:46 +0200 Subject: [PATCH 28/59] Add package libbeat/common/cleanup (#12134) * Add package libbeat/common/cleanup The cleanup package adds helpers for deferred optional cleanup on errors. For example: ``` ok := False defer cleanup.IfNot(&ok, func() { ... }) // continue initialization ok = True return // some value ``` * Add changelog entry --- CHANGELOG-developer.next.asciidoc | 1 + libbeat/common/cleanup/cleanup.go | 74 ++++++++++++++++++++++++++ libbeat/common/cleanup/cleanup_test.go | 65 ++++++++++++++++++++++ libbeat/common/cleanup/multi.go | 46 ++++++++++++++++ 4 files changed, 186 insertions(+) create mode 100644 libbeat/common/cleanup/cleanup.go create mode 100644 libbeat/common/cleanup/cleanup_test.go create mode 100644 libbeat/common/cleanup/multi.go diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index c0a07bcd80e5..1162a5835753 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -37,3 +37,4 @@ The list below covers the major changes between 7.0.0-rc2 and master only. - Update Jinja2 version to 2.10.1. {pull}11817[11817] - Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777], {pull}12065[12065], {pull}12067[12067] - Update urllib3 version to 1.24.2 {pull}11930[11930] +- Add libbeat/common/cleanup package. {pull}12134[12134] diff --git a/libbeat/common/cleanup/cleanup.go b/libbeat/common/cleanup/cleanup.go new file mode 100644 index 000000000000..5b1354697064 --- /dev/null +++ b/libbeat/common/cleanup/cleanup.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. + +// Package cleanup provides common helpers for common cleanup patterns on defer +// +// Use the helpers with `defer`. For example use IfNot with `defer`, such that +// cleanup functions will be executed if `check` is false, no matter if an +// error has been returned or an panic has occured. +// +// initOK := false +// defer cleanup.IfNot(&initOK, func() { +// cleanup +// }) +// +// ... // init structures... +// +// initOK = true // notify handler cleanup code must not be executed +package cleanup + +// If will run the cleanup function if the bool value is true. +func If(check *bool, cleanup func()) { + if *check { + cleanup() + } +} + +// IfNot will run the cleanup function if the bool value is false. +func IfNot(check *bool, cleanup func()) { + if !(*check) { + cleanup() + } +} + +// IfPred will run the cleanup function if pred returns true. +func IfPred(pred func() bool, cleanup func()) { + if pred() { + cleanup() + } +} + +// IfNotPred will run the cleanup function if pred returns false. +func IfNotPred(pred func() bool, cleanup func()) { + if !pred() { + cleanup() + } +} + +// WithError returns a cleanup function calling a custom handler if an error occured. +func WithError(fn func(error), cleanup func() error) func() { + return func() { + if err := cleanup(); err != nil { + fn(err) + } + } +} + +// IgnoreError silently ignores errors in the cleanup function. +func IgnoreError(cleanup func() error) func() { + return func() { _ = cleanup() } +} diff --git a/libbeat/common/cleanup/cleanup_test.go b/libbeat/common/cleanup/cleanup_test.go new file mode 100644 index 000000000000..5208dc750aa4 --- /dev/null +++ b/libbeat/common/cleanup/cleanup_test.go @@ -0,0 +1,65 @@ +// 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 cleanup_test + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/elastic/beats/libbeat/common/cleanup" +) + +func TestIfBool(t *testing.T) { + testcases := []struct { + title string + fn func(*bool, func()) + value bool + cleanup bool + }{ + { + "IfNot runs cleanup", + cleanup.IfNot, false, true, + }, + { + "IfNot does not run cleanup", + cleanup.IfNot, true, false, + }, + { + "If runs cleanup", + cleanup.If, true, true, + }, + { + "If does not run cleanup", + cleanup.If, false, false, + }, + } + + for _, test := range testcases { + test := test + t.Run(test.title, func(t *testing.T) { + executed := false + func() { + v := test.value + defer test.fn(&v, func() { executed = true }) + }() + + assert.Equal(t, test.cleanup, executed) + }) + } +} diff --git a/libbeat/common/cleanup/multi.go b/libbeat/common/cleanup/multi.go new file mode 100644 index 000000000000..54f831f96197 --- /dev/null +++ b/libbeat/common/cleanup/multi.go @@ -0,0 +1,46 @@ +// 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 cleanup + +// FailClean keeps track of functions to be executed of FailClean did +// not receive a success signal. +type FailClean struct { + success bool + fns []func() +} + +// Signal sends a success or fail signal to FailClean. +func (f *FailClean) Signal(success bool) { + f.success = success +} + +// Add adds another cleanup handler. The last added handler will be run first. +func (f *FailClean) Add(fn func()) { + f.fns = append(f.fns, fn) +} + +// Cleanup runs all cleanup handlers in reverse order. +func (f *FailClean) Cleanup() { + if f.success { + return + } + + for i := len(f.fns) - 1; i >= 0; i-- { + f.fns[i]() + } +} From 0460448b717031742cf0e0d98481578a925e215e Mon Sep 17 00:00:00 2001 From: Alex K <8418476+fearful-symmetry@users.noreply.github.com> Date: Thu, 9 May 2019 12:53:16 -0500 Subject: [PATCH 29/59] [docs] add make fmt to contributing guide (#12118) --- docs/devguide/contributing.asciidoc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/devguide/contributing.asciidoc b/docs/devguide/contributing.asciidoc index 21ca1af6e24d..db6f28a1b206 100644 --- a/docs/devguide/contributing.asciidoc +++ b/docs/devguide/contributing.asciidoc @@ -83,21 +83,28 @@ recommend that you install it. === Update scripts The Beats use a variety of scripts based on Python to generate configuration files -and documentation. The command used for this is: +and documentation. The primary command used for this is: [source,shell] -------------------------------------------------------------------------------- make update -------------------------------------------------------------------------------- -This command has the following dependencies: +Another command properly formats go source files and adds a copyright header: + +[source,shell] +-------------------------------------------------------------------------------- +make fmt +-------------------------------------------------------------------------------- + +These commands have the following dependencies: * Python >= {python} * https://virtualenv.pypa.io/en/latest/[virtualenv] for Python Virtualenv can be installed with the command `easy_install virtualenv` or `pip install virtualenv`. More details can be found -https://virtualenv.pypa.io/en/latest/installation.html[here]. +https://virtualenv.pypa.io/en/latest/installation.html[here]. Both of these commands should be run before submitting a PR. [float] [[running-testsuite]] From 6f8ddd6d932bf1937528e6e7dd2638d3bd14d0a6 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Thu, 9 May 2019 11:54:04 -0600 Subject: [PATCH 30/59] Move one changelog entry from breaking change to bug fix (#12146) --- CHANGELOG.next.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 32f2e92a6b79..c2084115a165 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -36,7 +36,6 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add new option `OpMultiplyBuckets` to scale histogram buckets to avoid decimal points in final events {pull}10994[10994] - Change cloud.provider from ec2 to aws and from gce to gcp in add_cloud_metadata to align with ECS. {issue}10775[10775] {pull}11687[11687] - system/raid metricset now uses /sys/block instead of /proc/mdstat for data. {pull}11613[11613] -- Change some field type from scaled_float to long in aws module. {pull}11982[11982] *Packetbeat* @@ -116,6 +115,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Get process information from sockets owned by current user when system socket metricset is run without privileges. {pull}12039[12039] - Avoid generating hints-based configuration with empty hosts when no exposed port is suitable for the hosts hint. {issue}8264[8264] {pull}12086[12086] - Fixed a socket leak in the postgresql module under Windows when SSL is disabled on the server. {pull}11393[11393] +- Change some field type from scaled_float to long in aws module. {pull}11982[11982] *Packetbeat* From cf5de0a3f3993d65e2eaf86bc6a2c35301080983 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Thu, 9 May 2019 16:26:27 -0400 Subject: [PATCH 31/59] Sysmon and Security "modules" for Winlogbeat (#11651) Add pipelines for the Security and Sysmon event logs The Security processor handles just three events to start with - 4624, 4625, and 4648. These are event.category=authentication events. The Sysmon processor handles all event IDs found in the sysmon manifest (sysmon -s). It moves the event_data fields that are in ECS and does some type conversions. --- winlogbeat/.gitignore | 2 +- winlogbeat/cmd/root.go | 1 + .../javascript/module/winlogbeat/doc.go | 21 + .../module/winlogbeat/winlogbeat.go | 82 + .../module/winlogbeat/winlogbeat_test.go | 57 + x-pack/winlogbeat/_meta/beat.yml.tmpl | 13 + .../security/config/winlogbeat-security.js | 86 + .../security/test/security_windows_test.go | 15 + .../security-windows2012r2-logon.evtx | Bin 0 -> 69632 bytes ...urity-windows2012r2-logon.evtx.golden.json | 1129 +++++++++++ .../module/sysmon/config/winlogbeat-sysmon.js | 590 ++++++ .../module/sysmon/test/sysmon_windows_test.go | 24 + .../sysmon/test/testdata/sysmon-9.01.evtx | Bin 0 -> 69632 bytes .../testdata/sysmon-9.01.evtx.golden.json | 1671 +++++++++++++++++ x-pack/winlogbeat/module/testing_windows.go | 201 ++ x-pack/winlogbeat/winlogbeat.reference.yml | 13 + x-pack/winlogbeat/winlogbeat.yml | 13 + 17 files changed, 3917 insertions(+), 1 deletion(-) create mode 100644 winlogbeat/processors/script/javascript/module/winlogbeat/doc.go create mode 100644 winlogbeat/processors/script/javascript/module/winlogbeat/winlogbeat.go create mode 100644 winlogbeat/processors/script/javascript/module/winlogbeat/winlogbeat_test.go create mode 100644 x-pack/winlogbeat/module/security/config/winlogbeat-security.js create mode 100644 x-pack/winlogbeat/module/security/test/security_windows_test.go create mode 100644 x-pack/winlogbeat/module/security/test/testdata/security-windows2012r2-logon.evtx create mode 100644 x-pack/winlogbeat/module/security/test/testdata/security-windows2012r2-logon.evtx.golden.json create mode 100644 x-pack/winlogbeat/module/sysmon/config/winlogbeat-sysmon.js create mode 100644 x-pack/winlogbeat/module/sysmon/test/sysmon_windows_test.go create mode 100644 x-pack/winlogbeat/module/sysmon/test/testdata/sysmon-9.01.evtx create mode 100644 x-pack/winlogbeat/module/sysmon/test/testdata/sysmon-9.01.evtx.golden.json create mode 100644 x-pack/winlogbeat/module/testing_windows.go diff --git a/winlogbeat/.gitignore b/winlogbeat/.gitignore index e48a3cb74cbb..95a09897efc4 100644 --- a/winlogbeat/.gitignore +++ b/winlogbeat/.gitignore @@ -1,5 +1,5 @@ # Compiled Object files, Static and Dynamic libs (Shared Objects) -winlogbeat +/winlogbeat # Folders _obj diff --git a/winlogbeat/cmd/root.go b/winlogbeat/cmd/root.go index 8947d0bb9b18..aeb44503463b 100644 --- a/winlogbeat/cmd/root.go +++ b/winlogbeat/cmd/root.go @@ -27,6 +27,7 @@ import ( // Import the script processor and supporting modules. _ "github.com/elastic/beats/libbeat/processors/script" + _ "github.com/elastic/beats/winlogbeat/processors/script/javascript/module/winlogbeat" ) // Name of this beat diff --git a/winlogbeat/processors/script/javascript/module/winlogbeat/doc.go b/winlogbeat/processors/script/javascript/module/winlogbeat/doc.go new file mode 100644 index 000000000000..fc782636d09e --- /dev/null +++ b/winlogbeat/processors/script/javascript/module/winlogbeat/doc.go @@ -0,0 +1,21 @@ +// 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 winlogbeat registers the winlogbeat module with the javascript script +// processor. The module has utilities specific to Winlogbeat like parsing +// Windows command lines. +package winlogbeat diff --git a/winlogbeat/processors/script/javascript/module/winlogbeat/winlogbeat.go b/winlogbeat/processors/script/javascript/module/winlogbeat/winlogbeat.go new file mode 100644 index 000000000000..dc9439c5c673 --- /dev/null +++ b/winlogbeat/processors/script/javascript/module/winlogbeat/winlogbeat.go @@ -0,0 +1,82 @@ +// 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. + +// +build windows + +package winlogbeat + +import ( + "syscall" + "unsafe" + + "github.com/dop251/goja" + "github.com/dop251/goja_nodejs/require" +) + +// SplitCommandLine splits a string into a list of space separated arguments. +// See Window's CommandLineToArgvW for more details. +func SplitCommandLine(cmd string) []string { + args, err := commandLineToArgvW(cmd) + if err != nil { + panic(err) + } + + return args +} + +func commandLineToArgvW(in string) ([]string, error) { + ptr, err := syscall.UTF16PtrFromString(in) + if err != nil { + return nil, err + } + + var numArgs int32 + argsWide, err := syscall.CommandLineToArgv(ptr, &numArgs) + if err != nil { + return nil, err + } + + // Free memory allocated for CommandLineToArgvW arguments. + defer syscall.LocalFree((syscall.Handle)(unsafe.Pointer(argsWide))) + + args := make([]string, numArgs) + for idx := range args { + args[idx] = syscall.UTF16ToString(argsWide[idx][:]) + } + return args, nil +} + +// Require registers the winlogbeat module that has utilities specific to +// Winlogbeat like parsing Windows command lines. It can be accessed using: +// +// // javascript +// var winlogbeat = require('winlogbeat'); +// +func Require(vm *goja.Runtime, module *goja.Object) { + o := module.Get("exports").(*goja.Object) + + o.Set("splitCommandLine", SplitCommandLine) +} + +// Enable adds path to the given runtime. +func Enable(runtime *goja.Runtime) { + runtime.Set("winlogbeat", require.Require(runtime, "winlogbeat")) +} + +func init() { + require.RegisterNativeModule("winlogbeat", Require) +} diff --git a/winlogbeat/processors/script/javascript/module/winlogbeat/winlogbeat_test.go b/winlogbeat/processors/script/javascript/module/winlogbeat/winlogbeat_test.go new file mode 100644 index 000000000000..45c339cc1f2c --- /dev/null +++ b/winlogbeat/processors/script/javascript/module/winlogbeat/winlogbeat_test.go @@ -0,0 +1,57 @@ +// 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. + +// +build windows + +package winlogbeat + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +const quotedCommandLine = `"C:\Program Files (x86)\Steam\bin\cef\cef.win7x64\steamwebhelper.exe" "-lang=en_US" "-cachedir=C:\Users\jimmy\AppData\Local\Steam\htmlcache" "-steampid=796" "-buildid=1546909276" "-steamid=0" "-steamuniverse=Dev" "-clientui=C:\Program Files (x86)\Steam\clientui" --disable-spell-checking --disable-out-of-process-pac --enable-blink-features=ResizeObserver,Worklet,AudioWorklet --disable-features=TouchpadAndWheelScrollLatching,AsyncWheelEvents --enable-media-stream --disable-smooth-scrolling --num-raster-threads=4 --enable-direct-write "--log-file=C:\Program Files (x86)\Steam\logs\cef_log.txt"` + +func TestSplitCommandLine(t *testing.T) { + args := SplitCommandLine(quotedCommandLine) + + for _, a := range args { + t.Log(a) + } + + expected := []string{ + `C:\Program Files (x86)\Steam\bin\cef\cef.win7x64\steamwebhelper.exe`, + `-lang=en_US`, + `-cachedir=C:\Users\jimmy\AppData\Local\Steam\htmlcache`, + `-steampid=796`, + `-buildid=1546909276`, + `-steamid=0`, + `-steamuniverse=Dev`, + `-clientui=C:\Program Files (x86)\Steam\clientui`, + `--disable-spell-checking`, + `--disable-out-of-process-pac`, + `--enable-blink-features=ResizeObserver,Worklet,AudioWorklet`, + `--disable-features=TouchpadAndWheelScrollLatching,AsyncWheelEvents`, + `--enable-media-stream`, + `--disable-smooth-scrolling`, + `--num-raster-threads=4`, + `--enable-direct-write`, + `--log-file=C:\Program Files (x86)\Steam\logs\cef_log.txt`, + } + assert.Equal(t, expected, args) +} diff --git a/x-pack/winlogbeat/_meta/beat.yml.tmpl b/x-pack/winlogbeat/_meta/beat.yml.tmpl index 5c2878664e41..f2660df68bd9 100644 --- a/x-pack/winlogbeat/_meta/beat.yml.tmpl +++ b/x-pack/winlogbeat/_meta/beat.yml.tmpl @@ -6,4 +6,17 @@ winlogbeat.event_logs: - name: System - name: Security + processors: + - script: + lang: javascript + id: security + file: ${path.home}/module/security/config/winlogbeat-security.js + + - name: Microsoft-Windows-Sysmon/Operational + processors: + - script: + lang: javascript + id: sysmon + file: ${path.home}/module/sysmon/config/winlogbeat-sysmon.js + {{if not .Reference}}{{ template "elasticsearch_settings" . }}{{end}} diff --git a/x-pack/winlogbeat/module/security/config/winlogbeat-security.js b/x-pack/winlogbeat/module/security/config/winlogbeat-security.js new file mode 100644 index 000000000000..c8c5973320ab --- /dev/null +++ b/x-pack/winlogbeat/module/security/config/winlogbeat-security.js @@ -0,0 +1,86 @@ +// 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. + +var security = (function () { + var path = require("path"); + var processor = require("processor"); + var winlogbeat = require("winlogbeat"); + + var addAuthSuccess = new processor.AddFields({ + fields: { + "event.category": "authentication", + "event.type": "authentication_success", + }, + target: "", + }); + + var addAuthFailed = new processor.AddFields({ + fields: { + "event.category": "authentication", + "event.type": "authentication_failed", + }, + target: "", + }); + + var convertAuthentication = new processor.Convert({ + fields: [ + {from: "winlog.event_data.TargetUserSid", to: "user.id"}, + {from: "winlog.event_data.TargetUserName", to: "user.name"}, + {from: "winlog.event_data.TargetDomainName", to: "user.domain"}, + {from: "winlog.event_data.ProcessId", to: "process.pid", type: "long"}, + {from: "winlog.event_data.ProcessName", to: "process.executable"}, + {from: "winlog.event_data.IpAddress", to: "source.ip", type: "ip"}, + {from: "winlog.event_data.IpPort", to: "source.port", type: "long"}, + {from: "winlog.event_data.WorkstationName", to: "source.domain"}, + ], + mode: "rename", + ignore_missing: true, + fail_on_error: false, + }); + + var setProcessNameUsingExe = function(evt) { + var name = evt.Get("process.name"); + if (name) { + return; + } + var exe = evt.Get("process.executable"); + evt.Put("process.name", path.basename(exe)); + }; + + var logonSuccess = new processor.Chain() + .Add(addAuthSuccess) + .Add(convertAuthentication) + .Add(setProcessNameUsingExe) + .Build(); + + var logonFailed = new processor.Chain() + .Add(addAuthFailed) + .Add(convertAuthentication) + .Add(setProcessNameUsingExe) + .Build(); + + return { + // 4624 - An account was successfully logged on. + 4624: logonSuccess.Run, + + // 4625 - An account failed to log on. + 4625: logonFailed.Run, + + // 4648 - A logon was attempted using explicit credentials. + 4648: logonSuccess.Run, + + process: function(evt) { + var event_id = evt.Get("winlog.event_id"); + var processor = this[event_id]; + if (processor === undefined) { + return; + } + processor(evt); + }, + }; +})(); + +function process(evt) { + return security.process(evt); +} diff --git a/x-pack/winlogbeat/module/security/test/security_windows_test.go b/x-pack/winlogbeat/module/security/test/security_windows_test.go new file mode 100644 index 000000000000..03198ce5279d --- /dev/null +++ b/x-pack/winlogbeat/module/security/test/security_windows_test.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. + +package test + +import ( + "testing" + + "github.com/elastic/beats/x-pack/winlogbeat/module" +) + +func TestSecurity(t *testing.T) { + module.TestPipeline(t, "testdata/*.evtx", "../config/winlogbeat-security.js") +} diff --git a/x-pack/winlogbeat/module/security/test/testdata/security-windows2012r2-logon.evtx b/x-pack/winlogbeat/module/security/test/testdata/security-windows2012r2-logon.evtx new file mode 100644 index 0000000000000000000000000000000000000000..c7bb37fc0675aed774264a980a67037f50f8083a GIT binary patch literal 69632 zcmeI33vAt09mjwF+k0WCmwwA zT;JO%?->8qk>H)l5nK=!d9_gFUm=mVg2{J8iX$RdV;Ew(?)gc=Jb*OmEXN zfo;0G{Bn`Cr5xk2Zt-s({p-*hFL*J}lTvTjz@2RjNyp>nw|ee<_e6U&O#`)*5g>Uh1{yG+t!_p_cxH*IyA#b(phqqxlDC=bf z{)S{Pu5`msCytk6--9cIGJvxI*$1D?aXx_SE96$(>&L!UR^o3Jj#kQA{C1BgKa_G7 z@W#eoLS4Cf8)y&9PPq*+51SN40*zy1yOA$fqbH9E0$vBuAx6-K=nZi z%$$8z0wFI39G!AA(qbILQf(gC8vIt{TCI>cBXXwrk>wFoDl2CM_bo_~i{K;dtn$9i zVYwb9V;X+xN@ZR_u&i7b2Ze1I1ZXzsRk+bbqyk&HIS%58TSSVDKXVa3EjWuy44Wr+ zg%|U3P26u3D@UDm3_^Pgu#EvHowo(~Of^&0vJ2PxQNIHa{1D2TUZ!f){0Q!|g!Fl{ zT=MWe?T6dH-u8oI*EAF?`)xEmgf+^)U)X)ZnQ|TnzqReAzddzwaO{Cs-g*ZWL0_nw zS8>SJl&g1q5H^Sp8}D9%ElfKX^2(6=5!oZRn0gr= zhrbg!?~*`NWFD Rw4Xc}Q)@*aRV+%?w15TZUcdhrJ?^YI$1NCa`3~Kw63L0UN%~ z51%8~n-TtIZ2b@ob6sFfPmLdPNh0N_F?xgW-3=H{YOb_FTiUEC(paX4OXM|V^IGqx zSd~aIo|0nrl7?;QN%Nat&O%#GrpB5+Kapw?S^&qS9R}+l${UE{v0#m4&1J&BZ5W-A zNtCh3=CaLCts#-xc}DTWrh%s=;4?$9S$n!2$9v@fen~wMA0E&NwY3YmA4C{7;fa_M zVM}b-NlNY-=|HqpVod95Kkq9Nd7p>+u@-Cy8ssx;TO>ZCgT~-n5`kzmM=fne*on%C zt^?D~npfL!vbCn2Ai+R1W@{;{|J1s%YL82t@mKq0GX~W@qa|q#MuJ~?jy$zNEsc1N zx=?=G&;+9ASpR&IsI-a%zc8M;gGh(S!6@>f%{!Xo_0o~n4s{?8 zi7sy)^55Y%r0ld<4KGJZ>}4>%OYm2NZgn001inQc;rjyL8%EIr;@`Nxw7i|=y&+#M z@eyw^Q%P!xU3zSZuVg;_?uvINT4KsvHE48TG{d8r)8G(wNBupAz5kradpCYGgZew3 zp+A?N(_eV5>2DEiAX*f>@mZTlJI8a{Kwg{32J(KMZ6J*qEGeIo2j8ps^V^Sn;`W*s z-`VkZ)LrVEL2f&HKXOKgS|9I`(SBvKjJabn(IoviyLn=ocGC_(^ui|FUZt~}e7C8` ztLI98tHDvK9fis5G5U3O6rFYB7WT$p&K!T4IXmjob2=`XYdY4p+zKQAZMkW`slR1- zqUKC59r7)meamgwcB6O5KIBf=waqwcHCNg1%+_B#S!GQYo58K<8S?#NCydKM z_-2^RX1I}QC0zCRol5j<`7)Vs%w2k)Z#(rtovg&(uO2ym=jiJ*r<1A-oj6@OonU;= zxHH<{bM;J}WNUBv&XE_L5k>+$?9!uvdW~i+?U1tj$?h8C)IM?%8p{yV$W$dX`@(8C_-6;`gQgcp9YNE zbj|*TnQMP?lj-viC zBf+@l$G_P+GGqP1%roBDI?=DZ~S{Eb!cb#iadVB7h{KJvH$1NqyBD${ac~>J6rVE;q2c{_~^xv=VWK6ZoBm~ z`5Kqr<%uwO420#%D>tVxbIy70 zSoxiU&L85Q#tigBNOix-JC}Ic`RD8Lk%VK=_=3YHhV5$d`lJhRBb>VaG6b|-Jz&2A z1)^94MuoJ(XX@G}v$7*SY#C-uC06gW7>mUf7j|`LAnLE)p)E*_jW#bMCoz?x5T&R7=sZxhUwwJy5RRYs zukkv^_G@GvYHua9P>tiYQis+awQ_ycJZtcv)2ydPU`BQ z4xb{~3A$01DVi%iR)Yf6vJ8{)f?itD!*B95Hvwm$|B6Rg*^__Nt4KnW-TC7=Y9 zfD%vwNNt4KnW-TC7=Y9 zfD%vwN=3we;|mQ^sOy1e zhqk7o1eAahPy$Lo2`B+2pahhF5>Nt4KnW-TC7=Y9fD%vwNNt4KnW-TC7=Y9fD%vwNNt4KnW-TC7=Y9fD%vwNzCIkKgd#*!Z) zlR?l)%4-NTv~&o67)a;?$b&s5^iqHMK&wk() z7a|1+0)l`bAP5Kof`A|(2nYg#fFK|U2m*pYK?M3H#(Hi^9K{^pY%zPxKA%JUz@$liTH} zliPpW^bgv2#@&Osv8?u7i}RQLysFe?S#?a>vUu&UYC=z%BJ(8pu8{gYK+`0P)AuCpU)s zo*TdOHy`-ezurFZ_gnuAcfwTNb?W^H@&>s*ToqD%>Vz6q2{nuJKgJ$DVlO^Y6H=$t zq?*9R8C(eY+SM&cHmj!94z&$`Gin4eqewG^a3hZ6h&iUFa5kmJkg^fyQ;6TDPU2bu z#}?Iuzcz%LR40B%lhw~;ocVp{&OM2~a{V@SFsu%!TT$|?u2Cs}_qlTf-Sz0%+ahY8 zuKfh+iX+uATHL z(zR>UO*Yv$kV@d1zq(QdgXrUpIB^t@p9!fwNXWjL(1{ci`PBxTY_L4-yDg{=>b^Lt zllWPoPsMOT5#VC)aM#DoXBB$PXTSZ0>x=es4tm*>33a}-mOZo%R zG_?1lKsK2zG06L?D^vyBatAUwh485tDpik8#&%5TmN-}kk*>c#gkNkGXDd`UN}NT* z$(C8%sVTR5jj9P#DX`ny|DjH?YEu&LDNm*->2mHIbZ%0KJoM$YxPeo;;m37Frh5mF zrXRhj*p`aN*ILewAmI%DY%3xv5~gZp*WS?;0m8RfY#jjAYgHuRtJQR(GUoP2plAa|D_c3OFCPguPbcg8yG-Bqb|fnar=+7wh5At?x` zckoql=N3`xvDfKv5FzdnRiV>uQ0sJj6V7T?jT*r5S>Gn4sl}h&=1$EitsNt%Vivp8 zngMW~TWCFgKK#P^fBE;*H@vg?@&DNWOZ50&+(V`cYfy&}mq6c7K^SI$gHc11I8Uf| zbWR_t|HjijU*8jcas00T`N=}_Z`0C9Xec#?tJEJxrT^m2+1B4d;d5j7=?{JN#h<>k z_Q2Rfjd%VEaZH7teHy_S#$0Z_?;-7+O7GRh4k4b}ayyP3o5{ZSPX(dDSShbwf;~(v z8S zak@R5>7jY@^rBQwG-zE+gTrQw^hd)ck0(B68W0DjH1Yh=HS?sUy+|{N_Rg(H3mMDX zev_8>N_$`r+CnSKA6;wmxbc;kS}bcZg3vOeJxY737kL-5o}5n4n=S|IifnH_ zPF;-rK@A8j1w8`L)TJ3*k8_R$92Ks_-jAJeTkJX0(R^mwD#X1FyUTkW!rY4)L5%g( zh7sfH4QF@y&fLW*RPDFkRIg|#7|STrHXh8djh*G=Mx6BNdklzYPQPN{7#U2CP%=zv zN|>3RB#>hQOo(OFkv~-fQl8X*jmSmEL2g;jJyHC5R5#}l|(~3qubIXYV zcWTvX{hO-MyEk(6S>fK`+_n$+ve)AHBbJBr^mcCfrP7xj&~^RjYr~9g%@1;TC*t@^ z=4?mrw<1*+(vk~(*!vOFh3jqDnU^WIBM%w<8l$mmw+$)PglUsEhPjNM0guQXy2t4n zH!Swfor{onZlX@c_M&9kv3tNK$_wk!8}%pkXaqwGf_f{h9{sV8dNh=*P0hLboPWW! zV;TDwp1Jx*7r93_4A-50>NCIl=-oHmcr+~LPQa=<2x;Oh&f5Y- zlgWR|0Sz4MEmw!y?<=7_@kLcg4qQ9RKn}e6o%TdA_JDW4uR*_WDXQPSJhMi-ni+%B zq?(%SU)|3z*5F#z+nay)~@>-1Xqz=SJ?Y(J@lS7uF-p(Gjk3y z0bi~4&3pQ)cVTuyAK$p1_j0aC|9q6b-ECkoy}+Arv|ivUXl~B3kD=^Q%%izLVj3E% z1Gyq5muH(Yb4??)_0fC!sMAwBolSou*9j&4^Yn_db(g1F#|15^*6l->J_h>g!@Qq@ zb-5g=r#|r4=Jj%$Cm}?RZF4?@OiZE%lV;o2*QMGTg*K!oJvTqm!P7<7dyUPFH(oUAY3)5Gpvx4VCO_cdY*sNdyHVOOU;<}~ZFXDIYubz%oEp~9ki-+?gGnFS{% zo))c(qvyP^b=!uKrV(ZH$XU(jE44Sb_GgbM^$94EVyzbM*?oSm$c-4y4#G1;&+=|X z?@u2>H$ggj5IPR2nzr|%z!i>kJM`U*;m9y|u9z4?><&oNs7=G;4y@-ee_wlnc%RO|c9g+5RxH~u z0vmd@wGmGUf9LaFowF z)3vu3pD#li$L9)!i_zZXb2GHJ@$CNf_l-~LOV3=Tu7hE1w70Qu%$mqa=vudmfu8>@ zSliVJ{kavMr|ZESK8NS(wL#=HPYGy43}O!A1VTR%li=j(pl zQ})U=uGKTTK9`|O#r|XZ$yb|}s_lBjYe7pmk8XhsG^xM!xrN~~mhwq|8|A<)ad*5d z&3dB3a^Tt_ascM0uaqSJ*_V_A>UEI=?@?f8@pAA0#)Yc$G9H}t6&ep*JIYiJXscX_ zJ>PhMl{4DH=h2M^3>P~d7@bBrc(r}f_dJvsyFT69nBO)}U*VCm#M$?m_QO(X=l5Yg zIEr~4Z5H|)8*py)aAtkHuXdF`HCw32Q`#>)Ms-Z7?eW5Vb?sO|e9h)2XQk;j&4uNw z?e{Fc7UEAP+e*)F-Ac#TT8L=%dEx8hzC!xdwWCb=>g6qYBlKtX{PFc^`gI}pc1pi4 zM{mg(bSa+=r2HfdkLo!>Cql!x+76qWZ<){rrvHTA63zmaVy5}h6CAZzVv{aAyCpnt z#@?!)znE)|CZX+*If2FcOvnNC_iv!TYtD;2e5If~xOS`{c_`#PTsiWP?)_Vs_s}re zcoxapF)cN1)_+K^qj?6m12an6W=zwed2d4TWE|(1P2PMb&&l^W9NoKrrJZM9Uy$#v z9c9XQFZ+5!ny#m9LVIOnR@`#1ulc0ccqRCL6FuC<6F8sU%b9R`E@S7IQs&F2wJUk& z_{TRlxLs)expu4|{$+EG{LAL#LilH%_%GG`&U8EHcZ*|EcD~|xt7~=q`!;xJ9tM<} ze|Hzuf36*6%D;T}uk$7FNdCPN``7TVeC*#2&25hVT%A9LCwR1k`5_O+4dcl7QSbZ7 zqHS05mwNPvIIgquR9Zdyv4T8y?N~uPCbzSBOkbLdTd3W-e0e+sK5{OXVrObb$Jv^h z&)BHu$+uy0w(ZIkxx42)j65cvAHebA^TOxb3-Z~uqfGhiWtV3A%&3>s zp93z;kLKQ4S}MDMa>ea@d&crVsmtsAB~QuMzr@kJJf_sAues%+(yg1GDacpXjup<= z^mP~u<11IWuDs_It@AyjAV0~|hj4tAk**T+^xZi;b#md>SGabpaGqw*!HSu0nRzwe zxLg@LUEKT*JSATpZ}|lpZco1S=U*+IetlO#-nw?IaNaJ)PvCfK)&-TjJ@5+r3y!y! zg1?s<+Nz1!kC%|QKg)S<&dG^;pUSnPOy8U1dbYy4lTVlUemi~N)Sch7YturJt?Frb zST4-kG|K>R!Rj*}`6VN6-|9JiUU}ho=y>7Uu_}1s<|^N}ym;=at?Ip4*|SV|QHwW5 zFEg}I58n5w67u5l0H4SE@n^R=$3w>p*A9LRmD@7>p53E=_tcqZZ#Fl;@EwmO9&4Z2 z`}0q3sei-6XtjMW>3#%P*Lz8=z$E9JQvAs6F|4%ZswcM^H}$@beOJlzJ(ScJYR&hn zvcIH;HD!Dcrq9;OFM8ScU@p;blJX0@%*pS56e^2f9pg8cxMjXE&k^8J8^@K+#g7J^ z_C1s3u|m`6n#I1eKi_(3S0=w~!FQd8un*8T?hT!=9>j9rO-DQ-H6RTN^aDHwEH`;F2j8a zytMi-ZJu0E#^T|3G^A18z;T0>CdcE_yg#tMpxn52l(F2LS;VNb zy5)v%u2N3;eb!lwLX;lP$v7It@yiis1aTu;jz;y2jnc!fPxJd?OvU%aS`o)@WARN< z`fV2?N9{;Wx!{)$iW`NJazy!Ya>O^6xs6BeE1^AJSdLsfM2;@#duHd?ddrq0$_HhG z>j_3N?ld4Y0!g7n@v9yDl3#hzSt4&*ORj`)PP9eEdO%^BSX znQ?MNe+U0#4sNBDqg+3jtIyeSt{tnu-@#rt&k#Oq{T=b=uTrNfmW{vT0q9wN!I_)u zr_$IdCv)r+SD)jBYeyOD*Cx1XI5S?z>^Q}d)o9;m>sS771^ga~`7Zk)bml2-za%jC zoy1$mNAbt6a*yDTY2vVN;y8}ukMAt=3ljV~=?KmaW9PR^<48G(Us^;gk@IRZW8e&d zI+}J6XAjiiT(fQF*VJ`$*XIJ$m=r~^1b^DYY*j<*TayTIAoPlIj!Yq8dAgm Date: Thu, 9 May 2019 13:43:39 -0700 Subject: [PATCH 32/59] [Auditbeat] Process: Add hash of executable (#11722) Adds the hash(es) of the process executable to `process.hash.*`. The default is to add SHA-1 only as `process.hash.sha1`. --- CHANGELOG.next.asciidoc | 1 + auditbeat/docs/fields.asciidoc | 151 ++++++++++ auditbeat/helper/hasher/hasher.go | 264 ++++++++++++++++++ auditbeat/helper/hasher/hasher_test.go | 92 ++++++ x-pack/auditbeat/auditbeat.reference.yml | 12 + .../module/system/_meta/config.yml.tmpl | 14 +- .../auditbeat/module/system/_meta/fields.yml | 70 +++++ x-pack/auditbeat/module/system/fields.go | 2 +- .../module/system/process/_meta/data.json | 3 + .../auditbeat/module/system/process/config.go | 16 +- .../module/system/process/process.go | 57 +++- .../module/system/process/process_test.go | 15 +- .../auditbeat/tests/system/test_metricsets.py | 7 +- 13 files changed, 686 insertions(+), 18 deletions(-) create mode 100644 auditbeat/helper/hasher/hasher.go create mode 100644 auditbeat/helper/hasher/hasher_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index c2084115a165..aa1ddbc4119e 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -154,6 +154,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Auditd module: Add `event.outcome` and `event.type` for ECS. {pull}11432[11432] - Package: Enable suse. {pull}11634[11634] - Add support to the system package dataset for the SUSE OS family. {pull}11634[11634] +- Process: Add file hash of process executable. {pull}11722[11722] *Filebeat* diff --git a/auditbeat/docs/fields.asciidoc b/auditbeat/docs/fields.asciidoc index 085afd251589..963372f995dd 100644 --- a/auditbeat/docs/fields.asciidoc +++ b/auditbeat/docs/fields.asciidoc @@ -6540,6 +6540,157 @@ type: keyword ID uniquely identifying the process. It is computed as a SHA-256 hash of the host ID, PID, and process start time. +-- + +[float] +== hash fields + +Hashes of the executable. The keys are algorithm names and the values are the hex encoded digest values. + + + +*`process.hash.blake2b_256`*:: ++ +-- +type: keyword + +BLAKE2b-256 hash of the executable. + +-- + +*`process.hash.blake2b_384`*:: ++ +-- +type: keyword + +BLAKE2b-384 hash of the executable. + +-- + +*`process.hash.blake2b_512`*:: ++ +-- +type: keyword + +BLAKE2b-512 hash of the executable. + +-- + +*`process.hash.md5`*:: ++ +-- +type: keyword + +MD5 hash of the executable. + +-- + +*`process.hash.sha1`*:: ++ +-- +type: keyword + +SHA1 hash of the executable. + +-- + +*`process.hash.sha224`*:: ++ +-- +type: keyword + +SHA224 hash of the executable. + +-- + +*`process.hash.sha256`*:: ++ +-- +type: keyword + +SHA256 hash of the executable. + +-- + +*`process.hash.sha384`*:: ++ +-- +type: keyword + +SHA384 hash of the executable. + +-- + +*`process.hash.sha3_224`*:: ++ +-- +type: keyword + +SHA3_224 hash of the executable. + +-- + +*`process.hash.sha3_256`*:: ++ +-- +type: keyword + +SHA3_256 hash of the executable. + +-- + +*`process.hash.sha3_384`*:: ++ +-- +type: keyword + +SHA3_384 hash of the executable. + +-- + +*`process.hash.sha3_512`*:: ++ +-- +type: keyword + +SHA3_512 hash of the executable. + +-- + +*`process.hash.sha512`*:: ++ +-- +type: keyword + +SHA512 hash of the executable. + +-- + +*`process.hash.sha512_224`*:: ++ +-- +type: keyword + +SHA512/224 hash of the executable. + +-- + +*`process.hash.sha512_256`*:: ++ +-- +type: keyword + +SHA512/256 hash of the executable. + +-- + +*`process.hash.xxh64`*:: ++ +-- +type: keyword + +XX64 hash of the executable. + -- diff --git a/auditbeat/helper/hasher/hasher.go b/auditbeat/helper/hasher/hasher.go new file mode 100644 index 000000000000..8f9cc25ab113 --- /dev/null +++ b/auditbeat/helper/hasher/hasher.go @@ -0,0 +1,264 @@ +// 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 hasher + +import ( + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "encoding/hex" + "fmt" + "hash" + "io" + "os" + "strings" + "time" + + "github.com/OneOfOne/xxhash" + "github.com/dustin/go-humanize" + "github.com/joeshaw/multierror" + "github.com/pkg/errors" + "golang.org/x/crypto/blake2b" + "golang.org/x/crypto/sha3" + "golang.org/x/time/rate" + + "github.com/elastic/beats/libbeat/common/file" +) + +// HashType identifies a cryptographic algorithm. +type HashType string + +// Unpack unpacks a string to a HashType for config parsing. +func (t *HashType) Unpack(v string) error { + *t = HashType(strings.ToLower(v)) + return nil +} + +// IsValid checks if the hash type is valid. +func (t *HashType) IsValid() bool { + _, valid := validHashes[*t] + return valid +} + +var validHashes = map[HashType](func() hash.Hash){ + BLAKE2B_256: func() hash.Hash { + h, _ := blake2b.New256(nil) + return h + }, + BLAKE2B_384: func() hash.Hash { + h, _ := blake2b.New384(nil) + return h + }, + BLAKE2B_512: func() hash.Hash { + h, _ := blake2b.New512(nil) + return h + }, + MD5: md5.New, + SHA1: sha1.New, + SHA224: sha256.New224, + SHA256: sha256.New, + SHA384: sha512.New384, + SHA512: sha512.New, + SHA512_224: sha512.New512_224, + SHA512_256: sha512.New512_256, + SHA3_224: sha3.New224, + SHA3_256: sha3.New256, + SHA3_384: sha3.New384, + SHA3_512: sha3.New512, + XXH64: func() hash.Hash { + return xxhash.New64() + }, +} + +// Enum of hash types. +const ( + BLAKE2B_256 HashType = "blake2b_256" + BLAKE2B_384 HashType = "blake2b_384" + BLAKE2B_512 HashType = "blake2b_512" + MD5 HashType = "md5" + SHA1 HashType = "sha1" + SHA224 HashType = "sha224" + SHA256 HashType = "sha256" + SHA384 HashType = "sha384" + SHA3_224 HashType = "sha3_224" + SHA3_256 HashType = "sha3_256" + SHA3_384 HashType = "sha3_384" + SHA3_512 HashType = "sha3_512" + SHA512 HashType = "sha512" + SHA512_224 HashType = "sha512_224" + SHA512_256 HashType = "sha512_256" + XXH64 HashType = "xxh64" +) + +// Digest is a output of a hash function. +type Digest []byte + +// String returns the digest value in lower-case hexadecimal form. +func (d Digest) String() string { + return hex.EncodeToString(d) +} + +// MarshalText encodes the digest to a hexadecimal representation of itself. +func (d Digest) MarshalText() ([]byte, error) { return []byte(d.String()), nil } + +// FileTooLargeError is the error that occurs when a file that +// exceeds the max file size is attempting to be hashed. +type FileTooLargeError struct { + fileSize int64 +} + +// Error returns the error message for FileTooLargeError. +func (e FileTooLargeError) Error() string { + return fmt.Sprintf("hasher: file size %d exceeds max file size", e.fileSize) +} + +// Config contains the configuration of a FileHasher. +type Config struct { + HashTypes []HashType `config:"hash_types,replace"` + MaxFileSize string `config:"max_file_size"` + MaxFileSizeBytes uint64 `config:",ignore"` + ScanRatePerSec string `config:"scan_rate_per_sec"` + ScanRateBytesPerSec uint64 `config:",ignore"` +} + +// Validate validates the config. +func (c *Config) Validate() error { + var errs multierror.Errors + + for _, ht := range c.HashTypes { + if !ht.IsValid() { + errs = append(errs, errors.Errorf("invalid hash_types value '%v'", ht)) + } + } + + var err error + + c.MaxFileSizeBytes, err = humanize.ParseBytes(c.MaxFileSize) + if err != nil { + errs = append(errs, errors.Wrap(err, "invalid max_file_size value")) + } else if c.MaxFileSizeBytes <= 0 { + errs = append(errs, errors.Errorf("max_file_size value (%v) must be positive", c.MaxFileSize)) + } + + c.ScanRateBytesPerSec, err = humanize.ParseBytes(c.ScanRatePerSec) + if err != nil { + errs = append(errs, errors.Wrap(err, "invalid scan_rate_per_sec value")) + } + + return errs.Err() +} + +// FileHasher hashes the contents of files. +type FileHasher struct { + config Config + limiter *rate.Limiter + + // To cancel hashing + done <-chan struct{} +} + +// NewFileHasher creates a new FileHasher. +func NewFileHasher(c Config, done <-chan struct{}) (*FileHasher, error) { + return &FileHasher{ + config: c, + limiter: rate.NewLimiter( + rate.Limit(c.ScanRateBytesPerSec), // Rate + int(c.MaxFileSizeBytes), // Burst + ), + done: done, + }, nil +} + +// HashFile hashes the contents of a file. +func (hasher *FileHasher) HashFile(path string) (map[HashType]Digest, error) { + info, err := os.Stat(path) + if err != nil { + return nil, errors.Wrapf(err, "failed to stat file %v", path) + } + + // Throttle reading and hashing rate. + if len(hasher.config.HashTypes) > 0 { + err = hasher.throttle(info.Size()) + if err != nil { + return nil, errors.Wrapf(err, "failed to hash file %v", path) + } + } + + var hashes []hash.Hash + for _, hashType := range hasher.config.HashTypes { + h, valid := validHashes[hashType] + if !valid { + return nil, errors.Errorf("unknown hash type '%v'", hashType) + } + + hashes = append(hashes, h()) + } + + if len(hashes) > 0 { + f, err := file.ReadOpen(path) + if err != nil { + return nil, errors.Wrap(err, "failed to open file for hashing") + } + defer f.Close() + + hashWriter := multiWriter(hashes) + if _, err := io.Copy(hashWriter, f); err != nil { + return nil, errors.Wrap(err, "failed to calculate file hashes") + } + + nameToHash := make(map[HashType]Digest, len(hashes)) + for i, h := range hashes { + nameToHash[hasher.config.HashTypes[i]] = h.Sum(nil) + } + + return nameToHash, nil + } + + return nil, nil +} + +func (hasher *FileHasher) throttle(fileSize int64) error { + reservation := hasher.limiter.ReserveN(time.Now(), int(fileSize)) + if !reservation.OK() { + // File is bigger than the max file size + return FileTooLargeError{fileSize} + } + + delay := reservation.Delay() + if delay == 0 { + return nil + } + + timer := time.NewTimer(delay) + defer timer.Stop() + select { + case <-hasher.done: + case <-timer.C: + } + + return nil +} + +func multiWriter(hash []hash.Hash) io.Writer { + writers := make([]io.Writer, 0, len(hash)) + for _, h := range hash { + writers = append(writers, h) + } + return io.MultiWriter(writers...) +} diff --git a/auditbeat/helper/hasher/hasher_test.go b/auditbeat/helper/hasher/hasher_test.go new file mode 100644 index 000000000000..c9d781b35a42 --- /dev/null +++ b/auditbeat/helper/hasher/hasher_test.go @@ -0,0 +1,92 @@ +// 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 hasher + +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" + + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" +) + +func TestHasher(t *testing.T) { + dir, err := ioutil.TempDir("", "auditbeat-hasher-test") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) + + file := filepath.Join(dir, "exe") + if err = ioutil.WriteFile(file, []byte("test exe\n"), 0600); err != nil { + t.Fatal(err) + } + + config := Config{ + HashTypes: []HashType{SHA1, MD5}, + MaxFileSize: "100 MiB", + MaxFileSizeBytes: 100 * 1024 * 1024, + ScanRatePerSec: "50 MiB", + ScanRateBytesPerSec: 50 * 1024 * 1024, + } + hasher, err := NewFileHasher(config, nil) + if err != nil { + t.Fatal(err) + } + + hashes, err := hasher.HashFile(file) + if err != nil { + t.Fatal(err) + } + + assert.Len(t, hashes, 2) + assert.Equal(t, "44a36f2cd27e56794cd405ad8d44e82dba4c54fa", hashes["sha1"].String()) + assert.Equal(t, "1d7572082f6b0d18a393d618285d7100", hashes["md5"].String()) +} + +func TestHasherLimits(t *testing.T) { + dir, err := ioutil.TempDir("", "auditbeat-hasher-test") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) + + file := filepath.Join(dir, "exe") + if err = ioutil.WriteFile(file, []byte("test exe\n"), 0600); err != nil { + t.Fatal(err) + } + + configZeroSize := Config{ + HashTypes: []HashType{SHA1}, + MaxFileSize: "0 MiB", + MaxFileSizeBytes: 0, + ScanRatePerSec: "0 MiB", + ScanRateBytesPerSec: 0, + } + hasher, err := NewFileHasher(configZeroSize, nil) + if err != nil { + t.Fatal(err) + } + + hashes, err := hasher.HashFile(file) + assert.Empty(t, hashes) + assert.Error(t, err) + assert.IsType(t, FileTooLargeError{}, errors.Cause(err)) +} diff --git a/x-pack/auditbeat/auditbeat.reference.yml b/x-pack/auditbeat/auditbeat.reference.yml index 3d6b2c75612c..61f0abb6e3f5 100644 --- a/x-pack/auditbeat/auditbeat.reference.yml +++ b/x-pack/auditbeat/auditbeat.reference.yml @@ -135,6 +135,18 @@ auditbeat.modules: # socket.state.period: 12h # user.state.period: 12h + # Average file read rate for hashing of the process executable. Default is "50 MiB". + process.hash.scan_rate_per_sec: 50 MiB + + # Limit on the size of the process executable that will be hashed. Default is "100 MiB". + process.hash.max_file_size: 100 MiB + + # Hash types to compute of the process executable. Supported types are + # blake2b_256, blake2b_384, blake2b_512, md5, sha1, sha224, sha256, sha384, + # sha512, sha512_224, sha512_256, sha3_224, sha3_256, sha3_384, sha3_512, and xxh64. + # Default is sha1. + process.hash.hash_types: [sha1] + # Disabled by default. If enabled, the socket dataset will # report sockets to and from localhost. # socket.include_localhost: false diff --git a/x-pack/auditbeat/module/system/_meta/config.yml.tmpl b/x-pack/auditbeat/module/system/_meta/config.yml.tmpl index cd50d80b963a..47583a5bd52d 100644 --- a/x-pack/auditbeat/module/system/_meta/config.yml.tmpl +++ b/x-pack/auditbeat/module/system/_meta/config.yml.tmpl @@ -35,7 +35,19 @@ {{ if eq .GOOS "linux" -}} # socket.state.period: 12h # user.state.period: 12h - {{- end -}} + {{- end }} + + # Average file read rate for hashing of the process executable. Default is "50 MiB". + process.hash.scan_rate_per_sec: 50 MiB + + # Limit on the size of the process executable that will be hashed. Default is "100 MiB". + process.hash.max_file_size: 100 MiB + + # Hash types to compute of the process executable. Supported types are + # blake2b_256, blake2b_384, blake2b_512, md5, sha1, sha224, sha256, sha384, + # sha512, sha512_224, sha512_256, sha3_224, sha3_256, sha3_384, sha3_512, and xxh64. + # Default is sha1. + process.hash.hash_types: [sha1] {{- end -}} {{- if eq .GOOS "linux" -}} diff --git a/x-pack/auditbeat/module/system/_meta/fields.yml b/x-pack/auditbeat/module/system/_meta/fields.yml index 4e1e82d75c19..809f9a06f6ee 100644 --- a/x-pack/auditbeat/module/system/_meta/fields.yml +++ b/x-pack/auditbeat/module/system/_meta/fields.yml @@ -35,6 +35,76 @@ description: > ID uniquely identifying the process. It is computed as a SHA-256 hash of the host ID, PID, and process start time. + - name: hash + type: group + description: > + Hashes of the executable. The keys are algorithm names and the values are + the hex encoded digest values. + + fields: + - name: blake2b_256 + type: keyword + description: BLAKE2b-256 hash of the executable. + + - name: blake2b_384 + type: keyword + description: BLAKE2b-384 hash of the executable. + + - name: blake2b_512 + type: keyword + description: BLAKE2b-512 hash of the executable. + + - name: md5 + type: keyword + description: MD5 hash of the executable. + + - name: sha1 + type: keyword + description: SHA1 hash of the executable. + + - name: sha224 + type: keyword + description: SHA224 hash of the executable. + + - name: sha256 + type: keyword + description: SHA256 hash of the executable. + + - name: sha384 + type: keyword + description: SHA384 hash of the executable. + + - name: sha3_224 + type: keyword + description: SHA3_224 hash of the executable. + + - name: sha3_256 + type: keyword + description: SHA3_256 hash of the executable. + + - name: sha3_384 + type: keyword + description: SHA3_384 hash of the executable. + + - name: sha3_512 + type: keyword + description: SHA3_512 hash of the executable. + + - name: sha512 + type: keyword + description: SHA512 hash of the executable. + + - name: sha512_224 + type: keyword + description: SHA512/224 hash of the executable. + + - name: sha512_256 + type: keyword + description: SHA512/256 hash of the executable. + + - name: xxh64 + type: keyword + description: XX64 hash of the executable. - name: socket type: group diff --git a/x-pack/auditbeat/module/system/fields.go b/x-pack/auditbeat/module/system/fields.go index a4cbb83c01e9..d64c87cdc6bc 100644 --- a/x-pack/auditbeat/module/system/fields.go +++ b/x-pack/auditbeat/module/system/fields.go @@ -19,5 +19,5 @@ func init() { // AssetSystem returns asset data. // This is the base64 encoded gzipped contents of module/system. func AssetSystem() string { - return "eJzEWd9v2zYQfvdfcehLE8BV0GErBj8MaBdgDdCuweICe7Np8SxxoXgaSSVV//qBFGVLNuUfsYoJMGBR5Pd9d8cjT9QbeMR6BqY2FosJgBVW4gxePfiGVxMAjibVorSC1Ax+mwAAzHM0CEwj2BxhLVByAxkq1Mwih1Xt2xtMKIhXEpMJgEaJzOAMVmjZBMLA2WQC8AYUK3AG+ITKeg5blziDTFNV+vu2s/vf9iYtMqF8UzvgEetn0jy0RbS764sfB7T2Oj1nAvNcGEiZghUCg7WQCCWzOVxhkiWwvHli+kZS5n7J2+X1dING2sM4SS1kMD2loiSFyoLNmQVTlaUUyH0XzixrsRVaKdTj8jrp+qIyqE92BSorbL0Q/Hxv3N1CpcS/FcoaBHdA61qozKt0GoAUMMjJ2ATuLDgvUVFWLtLMAIOHj+/f/PTLO8iZybdOaRzhRsHd7bQBcn+Y4s2N0530bLCoC6GYPN+EeRjZ0jqCni9LTSka83+7M8g47sdgyAZ048f71ocBCoxl2oIVzpkdgw2lj3h6Jv0gexsVF5jbAIBQxHEKklIm4e6+/VeStlPQWJBF3+wcE27ds75HfE4mrOIi7peIfV1Xdd3l9G0a95EO+stdSwewhJSUZUK1a6ds7BZqTbpgblzSGbW7erbXrsbOAlK6adEjbpRKUlmvuSGcAa+05+09FKqs7KLtopgigykpbnq9qLLdbszcsjrao9SYCuOd8rb3/IC/3PXVWwNCdSUkEbNXRHbAcM4snsP5gajNrX2eED3U4jvyCNmKSCJT5/A9uLm+DtPAJcmGIybACftOChN3GxHQT9+TBPzZ2cRa+O5aPgW/Y314mB8UROu1QZsYTE+ZfUc0zbc6HKqbAQei71SO54+PAS3GJGJBfyEH3N3GKJhOc2ExtZUe0aAebKhBvv36bvHu5+uYiILFovgC7s/vfwfGuUZjMBo7UUaIdhqPcNzdH6YgE6HYXbmPsCzJdNbuznINbEWV9clCpSuG3T4Y9p3+eru3ZndKFcmsQ9whHfb6UZ98ediAhminqCyZKVSrStlqCs9CcXo210lU0V46XarGl8qNks8sdS1/D1CvWSFkPSp5AxnoNfKc2SlwXAmmprDWiCvDj3nkCbXZ3SYv1RUw44SPqBXK8fjmkSn62gSafSmbucnSR5bhRaVPwDiYQUyBUMYyKZG79ytX0z0hb/kvK4t2a91jzjzoyoPVflB7dvnbXpsyOCB5A0L5H1ois2YwbV9o4n2HPMYTS4YLqQ5YFeI9JluAHNqAx6Tq7rwxPilSVONaFyCj+22TY6MUyy1dwBysmo34ftIryUlkDixKUhUF0/ULAJuBMcxKyzHD8vWvT/vr6+bIp0txzuLqAI7WJq6TaU519ouT09fTH1UgAHztnw/teUnsIl7O1q+/t1zZuFx/uFgOknGhxzbstYGcCnTQmFrqT+1OwuQoRywvAO41ZZoVYAl0pYBZkJSJgerGTchFZ66O6vFwtOLPHLtHK/BFwSehqm9TsLkwbod2yZFhSqaZ7QMzYu9loVVIq38wtecJXHq4I8VQ3ZCa7ZGsMFAybV3hcLXCmhTfPHttoNTCrWLNqJ0SNp7JcDibj0XhpEjAZv7vpzYcTLktvVAWM9zNkjPph9KvZMZEjBt6Rzwe2xbwcHg3UQu94UqRDQVkaBHWoFyfHUmn/EdF8v2ebAebwD0ZI1YS4YnJCo3/SrQ0OeP0vNj4YwDzqme0r4xdYqrmLNlj+A8z19OtbxdcGLaSyJfTAdSloi2z42iSnTOVoabK+Hpc1aTQf/6RlIFQ177MHkJMdV3aLuhzjqofMh8bp/0GbXrjmzkYxMIMgFpqZ4l7/UHlOfw7T4O4F/1O1ciMXaS5M2g4dfbKueY6Kdhz/8Gq7q0xraHPzHgBEAQkk/8CAAD//2oPi7g=" + return "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" } diff --git a/x-pack/auditbeat/module/system/process/_meta/data.json b/x-pack/auditbeat/module/system/process/_meta/data.json index abd1e7d5d68b..a1f1d3fb51c1 100644 --- a/x-pack/auditbeat/module/system/process/_meta/data.json +++ b/x-pack/auditbeat/module/system/process/_meta/data.json @@ -13,6 +13,9 @@ ], "entity_id": "+fYshazplsMYlr0y", "executable": "/bin/zsh", + "hash": { + "sha1": "33646536613061316366353134643135613631643363383733653261373130393737633131303364" + }, "name": "zsh", "pid": 9086, "ppid": 9085, diff --git a/x-pack/auditbeat/module/system/process/config.go b/x-pack/auditbeat/module/system/process/config.go index 0cdeb737ad73..49def8412a5a 100644 --- a/x-pack/auditbeat/module/system/process/config.go +++ b/x-pack/auditbeat/module/system/process/config.go @@ -6,17 +6,21 @@ package process import ( "time" + + "github.com/elastic/beats/auditbeat/helper/hasher" ) // Config defines the host metricset's configuration options. type Config struct { StatePeriod time.Duration `config:"state.period"` ProcessStatePeriod time.Duration `config:"process.state.period"` + + HasherConfig hasher.Config `config:"process.hash"` } -// Validate validates the host metricset config. +// Validate validates the config. func (c *Config) Validate() error { - return nil + return c.HasherConfig.Validate() } func (c *Config) effectiveStatePeriod() time.Duration { @@ -28,4 +32,12 @@ func (c *Config) effectiveStatePeriod() time.Duration { var defaultConfig = Config{ StatePeriod: 12 * time.Hour, + + HasherConfig: hasher.Config{ + HashTypes: []hasher.HashType{hasher.SHA1}, + MaxFileSize: "100 MiB", + MaxFileSizeBytes: 100 * 1024 * 1024, + ScanRatePerSec: "50 MiB", + ScanRateBytesPerSec: 50 * 1024 * 1024, + }, } diff --git a/x-pack/auditbeat/module/system/process/process.go b/x-pack/auditbeat/module/system/process/process.go index e4a2b6a6d8d0..aff75b33babf 100644 --- a/x-pack/auditbeat/module/system/process/process.go +++ b/x-pack/auditbeat/module/system/process/process.go @@ -18,6 +18,7 @@ import ( "github.com/pkg/errors" "github.com/elastic/beats/auditbeat/datastore" + "github.com/elastic/beats/auditbeat/helper/hasher" "github.com/elastic/beats/libbeat/common" "github.com/elastic/beats/libbeat/common/cfgwarn" "github.com/elastic/beats/libbeat/logp" @@ -80,6 +81,7 @@ type MetricSet struct { log *logp.Logger bucket datastore.Bucket lastState time.Time + hasher *hasher.FileHasher suppressPermissionWarnings bool } @@ -90,6 +92,7 @@ type Process struct { UserInfo *types.UserInfo User *user.User Group *user.Group + Hashes map[hasher.HashType]hasher.Digest Error error } @@ -137,12 +140,18 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return nil, errors.Wrap(err, "failed to open persistent datastore") } + hasher, err := hasher.NewFileHasher(config.HasherConfig, nil) + if err != nil { + return nil, err + } + ms := &MetricSet{ SystemMetricSet: system.NewSystemMetricSet(base), config: config, log: logp.NewLogger(metricsetName), cache: cache.New(), bucket: bucket, + hasher: hasher, } // Load from disk: Time when state was last sent @@ -215,6 +224,8 @@ func (ms *MetricSet) reportState(report mb.ReporterV2) error { return errors.Wrap(err, "error generating state ID") } for _, p := range processes { + ms.enrichProcess(p) + if p.Error == nil { event := ms.processEvent(p, eventTypeState, eventActionExistingProcess) event.RootFields.Put("event.id", stateID.String()) @@ -255,6 +266,7 @@ func (ms *MetricSet) reportChanges(report mb.ReporterV2) error { for _, cacheValue := range started { p := cacheValue.(*Process) + ms.enrichProcess(p) if p.Error == nil { report.Event(ms.processEvent(p, eventTypeEvent, eventActionProcessStarted)) @@ -275,6 +287,34 @@ func (ms *MetricSet) reportChanges(report mb.ReporterV2) error { return nil } +// enrichProcess enriches a process with user lookup information +// and executable file hash. +func (ms *MetricSet) enrichProcess(process *Process) { + if process.UserInfo != nil { + goUser, err := user.LookupId(process.UserInfo.UID) + if err == nil { + process.User = goUser + } + + group, err := user.LookupGroupId(process.UserInfo.GID) + if err == nil { + process.Group = group + } + } + + if process.Info.Exe != "" { + hashes, err := ms.hasher.HashFile(process.Info.Exe) + if err != nil { + if process.Error == nil { + process.Error = errors.Wrapf(err, "failed to hash executable %v for PID %v", process.Info.Exe, + process.Info.PID) + } + } else { + process.Hashes = hashes + } + } +} + func (ms *MetricSet) processEvent(process *Process, eventType string, action eventAction) mb.Event { event := mb.Event{ RootFields: common.MapStr{ @@ -310,6 +350,13 @@ func (ms *MetricSet) processEvent(process *Process, eventType string, action eve event.RootFields.Put("user.group.name", process.Group.Name) } + if process.Hashes != nil { + for hashType, digest := range process.Hashes { + fieldName := "process.hash." + string(hashType) + event.RootFields.Put(fieldName, digest) + } + } + if process.Error != nil { event.RootFields.Put("error.message", process.Error.Error()) } @@ -411,16 +458,6 @@ func (ms *MetricSet) getProcesses() ([]*Process, error) { } } else { process.UserInfo = &userInfo - - goUser, err := user.LookupId(userInfo.UID) - if err == nil { - process.User = goUser - } - - group, err := user.LookupGroupId(userInfo.GID) - if err == nil { - process.Group = group - } } // Exclude Linux kernel processes, they are not very interesting. diff --git a/x-pack/auditbeat/module/system/process/process_test.go b/x-pack/auditbeat/module/system/process/process_test.go index a0999947a110..5fa6e16a7223 100644 --- a/x-pack/auditbeat/module/system/process/process_test.go +++ b/x-pack/auditbeat/module/system/process/process_test.go @@ -12,6 +12,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/elastic/beats/auditbeat/core" + "github.com/elastic/beats/auditbeat/helper/hasher" abtest "github.com/elastic/beats/auditbeat/testing" "github.com/elastic/beats/libbeat/common" mbtest "github.com/elastic/beats/metricbeat/mb/testing" @@ -43,8 +44,12 @@ func TestData(t *testing.T) { func getConfig() map[string]interface{} { return map[string]interface{}{ - "module": "system", - "metricsets": []string{"process"}, + "module": "system", + "datasets": []string{"process"}, + + // To speed things up during testing, we effectively + // disable hashing. + "process.hash.max_file_size": 1, } } @@ -71,6 +76,7 @@ func TestProcessEvent(t *testing.T) { "process.executable": "/bin/zsh", "process.args": []string{"zsh"}, "process.start": "2019-01-01 00:00:01 +0000 UTC", + "process.hash.sha1": "3de6a0a1cf514d15a61d3c873e2a710977c1103d", "user.id": "1000", "user.name": "elastic", @@ -87,6 +93,8 @@ func TestProcessEvent(t *testing.T) { switch v := value.(type) { case time.Time: assert.Equalf(t, expFieldValue, v.String(), "Unexpected value for field %v.", expFieldName) + case hasher.Digest: + assert.Equalf(t, expFieldValue, string(v), "Unexpected value for field %v.", expFieldName) default: assert.Equalf(t, expFieldValue, value, "Unexpected value for field %v.", expFieldName) } @@ -121,6 +129,9 @@ func testProcess() *Process { Gid: "1000", Name: "elastic", }, + Hashes: map[hasher.HashType]hasher.Digest{ + hasher.SHA1: []byte("3de6a0a1cf514d15a61d3c873e2a710977c1103d"), + }, } } diff --git a/x-pack/auditbeat/tests/system/test_metricsets.py b/x-pack/auditbeat/tests/system/test_metricsets.py index 47494d2ec4bf..f44d92a6656f 100644 --- a/x-pack/auditbeat/tests/system/test_metricsets.py +++ b/x-pack/auditbeat/tests/system/test_metricsets.py @@ -67,8 +67,11 @@ def test_metricset_process(self): fields.extend(["user.effective.id", "user.saved.id", "user.effective.group.id", "user.saved.group.id", "user.name", "user.group.name"]) - # Metricset is beta and that generates a warning, TODO: remove later - self.check_metricset("system", "process", COMMON_FIELDS + fields, warnings_allowed=True) + # process.hash.max_file_size: 1 - To speed things up during testing, we effectively disable hashing. + # errors_allowed|warnings_allowed=True - Disabling hashing causes the dataset to add an error to the event + # and log a warning. That should not fail the test. + self.check_metricset("system", "process", COMMON_FIELDS + fields, {"process.hash.max_file_size": 1}, + errors_allowed=True, warnings_allowed=True) @unittest.skipUnless(sys.platform == "linux2", "Only implemented for Linux") def test_metricset_socket(self): From 8bbbab02d99433b3518347735dcabacc8ac501f8 Mon Sep 17 00:00:00 2001 From: DeDe Morton Date: Thu, 9 May 2019 15:52:38 -0700 Subject: [PATCH 33/59] [Docs] Comment out section that contains bad link (#12152) --- filebeat/docs/getting-started.asciidoc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/filebeat/docs/getting-started.asciidoc b/filebeat/docs/getting-started.asciidoc index 3b556163f754..e2963fcaaf31 100644 --- a/filebeat/docs/getting-started.asciidoc +++ b/filebeat/docs/getting-started.asciidoc @@ -274,11 +274,13 @@ even if you aren't using Filebeat modules. To populate the example dashboards with data, you need to either <> or use Logstash to -parse the data into the fields expected by the dashboards. If you are using -Logstash, see the -{logstash-ref}/logstash-config-for-filebeat-modules.html[configuration examples] -in the Logstash documentation for help parsing the log formats supported -by the dashboards. +parse the data into the fields expected by the dashboards. + +// TODO: Add this section back to the docs when the examples are available. +// If you are using Logstash, see the +// {logstash-ref}/logstash-config-for-filebeat-modules.html[configuration examples] +// in the Logstash documentation for help parsing the log formats supported +// by the dashboards. Here is an example of the Filebeat system dashboard: From 65d652d4745d0ffcd36146be14689f6dcf984d0e Mon Sep 17 00:00:00 2001 From: Nicolas Ruflin Date: Fri, 10 May 2019 08:13:54 +0200 Subject: [PATCH 34/59] [Filebeat] Introduce UTC as default timezone for modules tests (#12120) Currently all our modules have convert_timezone disable by default. The reason in 6.x for this was probably that 6.0 did not support convert_timezone and we did not want to introduce a breaking changes. New modules should have convert_timezone enabled by default. If a module has convert_timezone enabled by default the tests will fail as it takes the timezone of the local computer. To circumvent this, this PR sets the timezone of the tests to UTC so the same time zone is always used. No generated files were changed in this PR as all modules have convert_timezone off by default. But it will affect https://github.com/elastic/beats/pull/12079 and https://github.com/elastic/beats/pull/12032 --- filebeat/tests/system/test_modules.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/filebeat/tests/system/test_modules.py b/filebeat/tests/system/test_modules.py index 874c1ae35e74..41585a7f65fd 100644 --- a/filebeat/tests/system/test_modules.py +++ b/filebeat/tests/system/test_modules.py @@ -138,7 +138,12 @@ def run_on_file(self, module, fileset, test_file, cfgfile): output_path = os.path.join(self.working_dir) output = open(os.path.join(output_path, "output.log"), "ab") output.write(" ".join(cmd) + "\n") + + local_env = os.environ.copy() + local_env["TZ"] = 'Etc/UTC' + subprocess.Popen(cmd, + env=local_env, stdin=None, stdout=output, stderr=subprocess.STDOUT, From e4a427ded3420ac0beade9c488b1d4c8175a6851 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Fri, 10 May 2019 13:31:49 +0200 Subject: [PATCH 35/59] Add number of goroutines to reported metrics (#12135) --- CHANGELOG.next.asciidoc | 1 + libbeat/cmd/instance/metrics.go | 8 ++++++++ libbeat/docs/http-endpoint.asciidoc | 3 +++ libbeat/monitoring/report/log/log.go | 1 + 4 files changed, 13 insertions(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index aa1ddbc4119e..eaa4a309c6c7 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -148,6 +148,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add `decode_csv_fields` processor. {pull}11753[11753] - Add `convert` processor for converting data types of fields. {issue}8124[8124] {pull}11686[11686] - New `extract_array` processor. {pull}11761[11761] +- Add number of goroutines to reported metrics. {pull}12135[12135] *Auditbeat* diff --git a/libbeat/cmd/instance/metrics.go b/libbeat/cmd/instance/metrics.go index 35df8092d878..9b0697d1e0bf 100644 --- a/libbeat/cmd/instance/metrics.go +++ b/libbeat/cmd/instance/metrics.go @@ -57,6 +57,7 @@ func setupMetrics(name string) error { monitoring.NewFunc(beatMetrics, "memstats", reportMemStats, monitoring.Report) monitoring.NewFunc(beatMetrics, "cpu", reportBeatCPU, monitoring.Report) + monitoring.NewFunc(beatMetrics, "runtime", reportRuntime, monitoring.Report) setupPlatformSpecificMetrics() @@ -246,3 +247,10 @@ func reportSystemCPUUsage(_ monitoring.Mode, V monitoring.Visitor) { monitoring.ReportInt(V, "cores", int64(process.NumCPU)) } + +func reportRuntime(_ monitoring.Mode, V monitoring.Visitor) { + V.OnRegistryStart() + defer V.OnRegistryFinished() + + monitoring.ReportInt(V, "goroutines", int64(runtime.NumGoroutine())) +} diff --git a/libbeat/docs/http-endpoint.asciidoc b/libbeat/docs/http-endpoint.asciidoc index 1dda3341e0c9..54e0944002ce 100644 --- a/libbeat/docs/http-endpoint.asciidoc +++ b/libbeat/docs/http-endpoint.asciidoc @@ -95,6 +95,9 @@ curl -XGET 'localhost:5066/stats?pretty' "memory_alloc": 9433384, "memory_total": 492478864, "rss": 50405376 + }, + "runtime": { + "goroutines": 22 } }, "libbeat": { diff --git a/libbeat/monitoring/report/log/log.go b/libbeat/monitoring/report/log/log.go index ecd680bc6276..bd6bf9e43cc2 100644 --- a/libbeat/monitoring/report/log/log.go +++ b/libbeat/monitoring/report/log/log.go @@ -55,6 +55,7 @@ var gauges = map[string]bool{ "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, From 9ece0af4503d2a364c405ec2dbf3ee87588cbf61 Mon Sep 17 00:00:00 2001 From: Silvia Mitter Date: Fri, 10 May 2019 14:42:58 +0200 Subject: [PATCH 36/59] Add minimal ES template functionality. (#12103) When loading a template without fields, create a minimal template only applying given configuration, without any default values for mappings and settings. This allows to create additional templates only defining specific values. --- CHANGELOG-developer.next.asciidoc | 1 + libbeat/template/load.go | 12 + libbeat/template/load_integration_test.go | 397 +++++++++---------- libbeat/template/load_test.go | 71 ++-- libbeat/template/template.go | 19 + libbeat/template/testdata/default_fields.yml | 7 + libbeat/template/testdata/fields.json | 16 + 7 files changed, 273 insertions(+), 250 deletions(-) create mode 100644 libbeat/template/testdata/default_fields.yml create mode 100644 libbeat/template/testdata/fields.json diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 1162a5835753..d4bbd0d5eaea 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -38,3 +38,4 @@ The list below covers the major changes between 7.0.0-rc2 and master only. - Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777], {pull}12065[12065], {pull}12067[12067] - Update urllib3 version to 1.24.2 {pull}11930[11930] - Add libbeat/common/cleanup package. {pull}12134[12134] +- Only Load minimal template if no fields are provided. {pull}12103[12103] \ No newline at end of file diff --git a/libbeat/template/load.go b/libbeat/template/load.go index 2d8fdbf6607e..33b9886dea85 100644 --- a/libbeat/template/load.go +++ b/libbeat/template/load.go @@ -175,6 +175,9 @@ func buildBody(tmpl *Template, config TemplateConfig, fields []byte) (common.Map if config.Fields != "" { return buildBodyFromFile(tmpl, config) } + if fields == nil { + return buildMinimalTemplate(tmpl) + } return buildBodyFromFields(tmpl, fields) } @@ -216,6 +219,15 @@ func buildBodyFromFields(tmpl *Template, fields []byte) (common.MapStr, error) { return body, nil } +func buildMinimalTemplate(tmpl *Template) (common.MapStr, error) { + logp.Debug("template", "Load minimal template") + body, err := tmpl.LoadMinimal() + if err != nil { + return nil, fmt.Errorf("error creating mimimal template: %v", err) + } + return body, nil +} + func esVersionParams(ver common.Version) map[string]string { if ver.Major == 6 && ver.Minor == 7 { return map[string]string{ diff --git a/libbeat/template/load_integration_test.go b/libbeat/template/load_integration_test.go index e33f8aae294a..ae393010f0db 100644 --- a/libbeat/template/load_integration_test.go +++ b/libbeat/template/load_integration_test.go @@ -22,245 +22,225 @@ package template import ( "encoding/json" "fmt" + "io/ioutil" + "math/rand" "path/filepath" "strconv" "testing" + "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/elastic/beats/libbeat/beat" "github.com/elastic/beats/libbeat/common" + "github.com/elastic/beats/libbeat/outputs/elasticsearch" "github.com/elastic/beats/libbeat/outputs/elasticsearch/estest" "github.com/elastic/beats/libbeat/version" ) +func init() { + rand.Seed(time.Now().UnixNano()) +} + type testTemplate struct { t *testing.T client ESClient common.MapStr } -var ( - beatInfo = beat.Info{ - Beat: "testbeat", - IndexPrefix: "testbeatidx", - Version: version.GetDefaultVersion(), - } - - templateName = "testbeatidx-" + version.GetDefaultVersion() -) +type testSetup struct { + t *testing.T + client ESClient + loader *ESLoader + config TemplateConfig +} -func defaultESLoader(t *testing.T) *ESLoader { +func newTestSetup(t *testing.T, cfg TemplateConfig) *testSetup { + if cfg.Name == "" { + cfg.Name = fmt.Sprintf("load-test-%+v", rand.Int()) + } client := estest.GetTestingElasticsearch(t) if err := client.Connect(); err != nil { t.Fatal(err) } - - return NewESLoader(client) + s := testSetup{t: t, client: client, loader: NewESLoader(client), config: cfg} + client.Request("DELETE", "/_template/"+cfg.Name, "", nil, nil) + require.False(t, s.loader.templateExists(cfg.Name)) + return &s } - -func TestCheckTemplate(t *testing.T) { - loader := defaultESLoader(t) - - // Check for non existent template - assert.False(t, loader.templateExists("libbeat-notexists")) +func (ts *testSetup) loadFromFile(fileElems []string) error { + ts.config.Fields = path(ts.t, fileElems) + beatInfo := beat.Info{Version: version.GetDefaultVersion()} + return ts.loader.Load(ts.config, beatInfo, nil, false) } -func TestLoadTemplate(t *testing.T) { - // Setup ES - loader := defaultESLoader(t) - client := loader.client - - // Load template - absPath, err := filepath.Abs("../") - assert.NotNil(t, absPath) - assert.Nil(t, err) - - fieldsPath := absPath + "/fields.yml" - index := "testbeat" - - tmpl, err := New(version.GetDefaultVersion(), index, client.GetVersion(), TemplateConfig{}, false) - require.NoError(t, err) - content, err := tmpl.LoadFile(fieldsPath) - require.NoError(t, err) - - // Load template - err = loader.loadTemplate(tmpl.GetName(), content) - require.NoError(t, err) +func (ts *testSetup) load(fields []byte) error { + beatInfo := beat.Info{Version: version.GetDefaultVersion()} + return ts.loader.Load(ts.config, beatInfo, fields, false) +} - // Make sure template was loaded - assert.True(t, loader.templateExists(tmpl.GetName())) +func (ts *testSetup) mustLoad(fields []byte) { + require.NoError(ts.t, ts.load(fields)) + require.True(ts.t, ts.loader.templateExists(ts.config.Name)) +} - // Delete template again to clean up - client.Request("DELETE", "/_template/"+tmpl.GetName(), "", nil, nil) +func TestESLoader_Load(t *testing.T) { + t.Run("failure", func(t *testing.T) { + t.Run("loading disabled", func(t *testing.T) { + setup := newTestSetup(t, TemplateConfig{Enabled: false}) + + setup.load(nil) + assert.False(t, setup.loader.templateExists(setup.config.Name)) + }) + + t.Run("invalid version", func(t *testing.T) { + setup := newTestSetup(t, TemplateConfig{Enabled: true}) + + beatInfo := beat.Info{Version: "invalid"} + err := setup.loader.Load(setup.config, beatInfo, nil, false) + if assert.Error(t, err) { + assert.Contains(t, err.Error(), "version is not semver") + } + }) + }) + + t.Run("overwrite", func(t *testing.T) { + // Setup create template with source enabled + setup := newTestSetup(t, TemplateConfig{Enabled: true}) + setup.mustLoad(nil) + + // Add custom settings + setup.config.Settings = TemplateSettings{Source: map[string]interface{}{"enabled": false}} + + t.Run("disabled", func(t *testing.T) { + setup.load(nil) + tmpl := getTemplate(t, setup.client, setup.config.Name) + assert.Equal(t, true, tmpl.SourceEnabled()) + }) + + t.Run("enabled", func(t *testing.T) { + setup.config.Overwrite = true + setup.load(nil) + tmpl := getTemplate(t, setup.client, setup.config.Name) + assert.Equal(t, false, tmpl.SourceEnabled()) + }) + }) + + t.Run("json.name", func(t *testing.T) { + nameJSON := "bar" + + setup := newTestSetup(t, TemplateConfig{Enabled: true}) + setup.mustLoad(nil) + + // Load Template with same name, but different JSON.name and ensure it is used + setup.config.JSON = struct { + Enabled bool `config:"enabled"` + Path string `config:"path"` + Name string `config:"name"` + }{Enabled: true, Path: path(t, []string{"testdata", "fields.json"}), Name: nameJSON} + setup.load(nil) + assert.True(t, setup.loader.templateExists(nameJSON)) + }) + + t.Run("load template successful", func(t *testing.T) { + fields, err := ioutil.ReadFile(path(t, []string{"testdata", "default_fields.yml"})) + require.NoError(t, err) + for run, data := range map[string]struct { + cfg TemplateConfig + fields []byte + fieldsPath string + properties []string + }{ + "default config with fields": { + cfg: TemplateConfig{Enabled: true}, + fields: fields, + properties: []string{"foo", "bar"}, + }, + "minimal template": { + cfg: TemplateConfig{Enabled: true}, + fields: nil, + }, + "fields from file": { + cfg: TemplateConfig{Enabled: true, Fields: path(t, []string{"testdata", "fields.yml"})}, + fields: fields, + properties: []string{"object", "keyword", "alias", "migration_alias_false", "object_disabled"}, + }, + "fields from json": { + cfg: TemplateConfig{Enabled: true, Name: "json-template", JSON: struct { + Enabled bool `config:"enabled"` + Path string `config:"path"` + Name string `config:"name"` + }{Enabled: true, Path: path(t, []string{"testdata", "fields.json"}), Name: "json-template"}}, + fields: fields, + properties: []string{"host_name"}, + }, + } { + t.Run(run, func(t *testing.T) { + setup := newTestSetup(t, data.cfg) + setup.mustLoad(data.fields) + + // Fetch properties + tmpl := getTemplate(t, setup.client, setup.config.Name) + val, err := tmpl.GetValue("mappings.properties") + if data.properties == nil { + assert.Error(t, err) + } else { + require.NoError(t, err) + p, ok := val.(map[string]interface{}) + require.True(t, ok) + var properties []string + for k := range p { + properties = append(properties, k) + } + assert.ElementsMatch(t, properties, data.properties) + } + }) + } + }) +} - // Make sure it was removed - assert.False(t, loader.templateExists(tmpl.GetName())) +func TestTemplate_LoadFile(t *testing.T) { + setup := newTestSetup(t, TemplateConfig{Enabled: true}) + assert.NoError(t, setup.loadFromFile([]string{"..", "fields.yml"})) + assert.True(t, setup.loader.templateExists(setup.config.Name)) } func TestLoadInvalidTemplate(t *testing.T) { - // Invalid Template - template := map[string]interface{}{ - "json": "invalid", - } - - // Setup ES - loader := defaultESLoader(t) - - templateName := "invalidtemplate" + setup := newTestSetup(t, TemplateConfig{}) // Try to load invalid template - err := loader.loadTemplate(templateName, template) + template := map[string]interface{}{"json": "invalid"} + err := setup.loader.loadTemplate(setup.config.Name, template) assert.Error(t, err) - - // Make sure template was not loaded - assert.False(t, loader.templateExists(templateName)) + assert.False(t, setup.loader.templateExists(setup.config.Name)) } // Tests loading the templates for each beat -func TestLoadBeatsTemplate(t *testing.T) { +func TestLoadBeatsTemplate_fromFile(t *testing.T) { beats := []string{ "libbeat", } for _, beat := range beats { - // Load template - absPath, err := filepath.Abs("../../" + beat) - assert.NotNil(t, absPath) - assert.Nil(t, err) - - // Setup ES - loader := defaultESLoader(t) - client := loader.client - - fieldsPath := absPath + "/fields.yml" - index := beat - - tmpl, err := New(version.GetDefaultVersion(), index, client.GetVersion(), TemplateConfig{}, false) - assert.NoError(t, err) - content, err := tmpl.LoadFile(fieldsPath) - assert.NoError(t, err) - - // Load template - err = loader.loadTemplate(tmpl.GetName(), content) - assert.Nil(t, err) - - // Make sure template was loaded - assert.True(t, loader.templateExists(tmpl.GetName())) - - // Delete template again to clean up - client.Request("DELETE", "/_template/"+tmpl.GetName(), "", nil, nil) - - // Make sure it was removed - assert.False(t, loader.templateExists(tmpl.GetName())) + setup := newTestSetup(t, TemplateConfig{Name: beat, Enabled: true}) + assert.NoError(t, setup.loadFromFile([]string{"..", "..", beat, "fields.yml"})) + assert.True(t, setup.loader.templateExists(setup.config.Name)) } } func TestTemplateSettings(t *testing.T) { - // Setup ES - loader := defaultESLoader(t) - client := loader.client - - // Load template - absPath, err := filepath.Abs("../") - assert.NotNil(t, absPath) - assert.Nil(t, err) - - fieldsPath := absPath + "/fields.yml" - settings := TemplateSettings{ - Index: common.MapStr{ - "number_of_shards": 1, - }, - Source: common.MapStr{ - "enabled": false, - }, + Index: common.MapStr{"number_of_shards": 1}, + Source: common.MapStr{"enabled": false}, } - config := TemplateConfig{ - Settings: settings, - } - tmpl, err := New(version.GetDefaultVersion(), "testbeat", client.GetVersion(), config, false) - assert.NoError(t, err) - content, err := tmpl.LoadFile(fieldsPath) - assert.NoError(t, err) - - // Load template - err = loader.loadTemplate(tmpl.GetName(), content) - assert.Nil(t, err) + setup := newTestSetup(t, TemplateConfig{Settings: settings, Enabled: true}) + require.NoError(t, setup.loadFromFile([]string{"..", "fields.yml"})) // Check that it contains the mapping - templateJSON := getTemplate(t, client, tmpl.GetName()) + templateJSON := getTemplate(t, setup.client, setup.config.Name) assert.Equal(t, 1, templateJSON.NumberOfShards()) assert.Equal(t, false, templateJSON.SourceEnabled()) - - // Delete template again to clean up - client.Request("DELETE", "/_template/"+tmpl.GetName(), "", nil, nil) - - // Make sure it was removed - assert.False(t, loader.templateExists(tmpl.GetName())) -} - -func TestOverwrite(t *testing.T) { - // Setup ES - loader := defaultESLoader(t) - client := loader.client - - templateName := "testbeatidx-" + version.GetDefaultVersion() - - absPath, err := filepath.Abs("../") - assert.NotNil(t, absPath) - assert.Nil(t, err) - - // make sure no template is already there - client.Request("DELETE", "/_template/"+templateName, "", nil, nil) - - // Load template - config := TemplateConfig{ - Enabled: true, - Fields: absPath + "/fields.yml", - } - err = loader.Load(config, beatInfo, nil, false) - assert.NoError(t, err) - - // Load template again, this time with custom settings - config = TemplateConfig{ - Enabled: true, - Fields: absPath + "/fields.yml", - Settings: TemplateSettings{ - Source: map[string]interface{}{ - "enabled": false, - }, - }, - } - - err = loader.Load(config, beatInfo, nil, false) - assert.NoError(t, err) - - // Overwrite was not enabled, so the first version should still be there - templateJSON := getTemplate(t, client, templateName) - assert.Equal(t, true, templateJSON.SourceEnabled()) - - // Load template again, this time with custom settings AND overwrite: true - config = TemplateConfig{ - Enabled: true, - Overwrite: true, - Fields: absPath + "/fields.yml", - Settings: TemplateSettings{ - Source: map[string]interface{}{ - "enabled": false, - }, - }, - } - err = loader.Load(config, beatInfo, nil, false) - assert.NoError(t, err) - - // Overwrite was enabled, so the custom setting should be there - templateJSON = getTemplate(t, client, templateName) - assert.Equal(t, false, templateJSON.SourceEnabled()) - - // Delete template again to clean up - client.Request("DELETE", "/_template/"+templateName, "", nil, nil) } var dataTests = []struct { @@ -307,31 +287,12 @@ var dataTests = []struct { // Tests if data can be loaded into elasticsearch with right types func TestTemplateWithData(t *testing.T) { - fieldsPath, err := filepath.Abs("./testdata/fields.yml") - assert.NotNil(t, fieldsPath) - assert.Nil(t, err) - - // Setup ES - client := estest.GetTestingElasticsearch(t) - if err := client.Connect(); err != nil { - t.Fatal(err) - } - loader := NewESLoader(client) - - tmpl, err := New(version.GetDefaultVersion(), "testindex", client.GetVersion(), TemplateConfig{}, false) - assert.NoError(t, err) - content, err := tmpl.LoadFile(fieldsPath) - assert.NoError(t, err) - - // Load template - err = loader.loadTemplate(tmpl.GetName(), content) - assert.Nil(t, err) - - // Make sure template was loaded - assert.True(t, loader.templateExists(tmpl.GetName())) - + setup := newTestSetup(t, TemplateConfig{Enabled: true}) + require.NoError(t, setup.loadFromFile([]string{"testdata", "fields.yml"})) + require.True(t, setup.loader.templateExists(setup.config.Name)) + esClient := setup.client.(*elasticsearch.Client) for _, test := range dataTests { - _, _, err = client.Index(tmpl.GetName(), "_doc", "", nil, test.data) + _, _, err := esClient.Index(setup.config.Name, "_doc", "", nil, test.data) if test.error { assert.NotNil(t, err) @@ -339,22 +300,16 @@ func TestTemplateWithData(t *testing.T) { assert.Nil(t, err) } } - - // Delete template again to clean up - client.Request("DELETE", "/_template/"+tmpl.GetName(), "", nil, nil) - - // Make sure it was removed - assert.False(t, loader.templateExists(tmpl.GetName())) } func getTemplate(t *testing.T, client ESClient, templateName string) testTemplate { status, body, err := client.Request("GET", "/_template/"+templateName, "", nil, nil) - assert.NoError(t, err) - assert.Equal(t, status, 200) + require.NoError(t, err) + require.Equal(t, status, 200) var response common.MapStr err = json.Unmarshal(body, &response) - assert.NoError(t, err) + require.NoError(t, err) return testTemplate{ t: t, @@ -389,3 +344,9 @@ func (tt *testTemplate) NumberOfShards() int { require.NoError(tt.t, err) return i } + +func path(t *testing.T, fileElems []string) string { + fieldsPath, err := filepath.Abs(filepath.Join(fileElems...)) + require.NoError(t, err) + return fieldsPath +} diff --git a/libbeat/template/load_test.go b/libbeat/template/load_test.go index 07f0ca7ad5ba..ff0d6bfece45 100644 --- a/libbeat/template/load_test.go +++ b/libbeat/template/load_test.go @@ -23,7 +23,6 @@ import ( "github.com/elastic/beats/libbeat/beat" "github.com/elastic/beats/libbeat/common" - "github.com/elastic/beats/libbeat/version" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -33,62 +32,70 @@ func TestFileLoader_Load(t *testing.T) { ver := "7.0.0" prefix := "mock" info := beat.Info{Version: ver, IndexPrefix: prefix} + tmplName := fmt.Sprintf("%s-%s", prefix, ver) for name, test := range map[string]struct { - cfg TemplateConfig - fields []byte - migration bool - - name string + settings TemplateSettings + body common.MapStr }{ - "default config": { - cfg: DefaultConfig(), - name: fmt.Sprintf("%s-%s", prefix, ver), - migration: false, + "load minimal config info": { + body: common.MapStr{ + "index_patterns": []string{"mock-7.0.0-*"}, + "order": 0, + "settings": common.MapStr{"index": nil}}, + }, + "load minimal config with index settings": { + settings: TemplateSettings{Index: common.MapStr{"code": "best_compression"}}, + body: common.MapStr{ + "index_patterns": []string{"mock-7.0.0-*"}, + "order": 0, + "settings": common.MapStr{"index": common.MapStr{"code": "best_compression"}}}, }, - "default config with migration": { - cfg: DefaultConfig(), - name: fmt.Sprintf("%s-%s", prefix, ver), - migration: true, + "load minimal config with source settings": { + settings: TemplateSettings{Source: common.MapStr{"enabled": false}}, + body: common.MapStr{ + "index_patterns": []string{"mock-7.0.0-*"}, + "order": 0, + "settings": common.MapStr{"index": nil}, + "mappings": common.MapStr{ + "_source": common.MapStr{"enabled": false}, + "_meta": common.MapStr{"beat": prefix, "version": ver}, + "date_detection": false, + "dynamic_templates": nil, + "properties": nil, + }}, }, } { t.Run(name, func(t *testing.T) { fc, err := newFileClient(ver) require.NoError(t, err) fl := NewFileLoader(fc) - err = fl.Load(test.cfg, info, test.fields, false) - require.NoError(t, err) - tmpl, err := New(ver, prefix, *common.MustNewVersion(ver), test.cfg, test.migration) - require.NoError(t, err) - body, err := buildBody(tmpl, test.cfg, test.fields) + cfg := DefaultConfig() + cfg.Settings = test.settings + + err = fl.Load(cfg, info, nil, false) require.NoError(t, err) - assert.Equal(t, body.StringToPrint()+"\n", fc.body) + assert.Equal(t, "template", fc.component) + assert.Equal(t, tmplName, fc.name) + assert.Equal(t, test.body.StringToPrint()+"\n", fc.body) }) } } type fileClient struct { - ver common.Version - kind, name, body string + component, name, body, ver string } func newFileClient(ver string) (*fileClient, error) { - if ver == "" { - ver = version.GetDefaultVersion() - } - v, err := common.NewVersion(ver) - if err != nil { - return nil, err - } - return &fileClient{ver: *v}, nil + return &fileClient{ver: ver}, nil } func (c *fileClient) GetVersion() common.Version { - return c.ver + return *common.MustNewVersion(c.ver) } func (c *fileClient) Write(component string, name string, body string) error { - c.kind, c.name, c.body = component, name, body + c.component, c.name, c.body = component, name, body return nil } diff --git a/libbeat/template/template.go b/libbeat/template/template.go index 092280cdd6ad..ecdc38d0d5f6 100644 --- a/libbeat/template/template.go +++ b/libbeat/template/template.go @@ -183,6 +183,25 @@ func (t *Template) LoadBytes(data []byte) (common.MapStr, error) { return t.load(fields) } +// LoadMinimal loads the template only with the given configuration +func (t *Template) LoadMinimal() (common.MapStr, error) { + keyPattern, patterns := buildPatternSettings(t.esVersion, t.GetPattern()) + m := common.MapStr{ + keyPattern: patterns, + "order": t.order, + "settings": common.MapStr{ + "index": t.config.Settings.Index, + }, + } + if t.config.Settings.Source != nil { + m["mappings"] = buildMappings( + t.beatVersion, t.esVersion, t.beatName, + nil, nil, + common.MapStr(t.config.Settings.Source)) + } + return m, nil +} + // GetName returns the name of the template func (t *Template) GetName() string { return t.name diff --git a/libbeat/template/testdata/default_fields.yml b/libbeat/template/testdata/default_fields.yml new file mode 100644 index 000000000000..370f31993402 --- /dev/null +++ b/libbeat/template/testdata/default_fields.yml @@ -0,0 +1,7 @@ +- key: test + title: Test default fieldds + fields: + - name: foo + type: keyword + - name: bar + type: keyword diff --git a/libbeat/template/testdata/fields.json b/libbeat/template/testdata/fields.json new file mode 100644 index 000000000000..d95b7a7dabe0 --- /dev/null +++ b/libbeat/template/testdata/fields.json @@ -0,0 +1,16 @@ +{ + "index_patterns": ["foo"], + "settings": { + "number_of_shards": 1 + }, + "mappings": { + "_source": { + "enabled": false + }, + "properties": { + "host_name": { + "type": "keyword" + } + } + } +} From 056d921dd64cc9155def5f9cb81c7a26f5bab40a Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Fri, 10 May 2019 09:28:29 -0400 Subject: [PATCH 37/59] Refactor logging in pgsql module (#12151) Guard debug logging statements with "isDebug" checks. And switch the module over to using named loggers. Fixes #12150 --- CHANGELOG.next.asciidoc | 1 + packetbeat/protos/pgsql/parse.go | 98 +++++++++++++++----------------- packetbeat/protos/pgsql/pgsql.go | 47 ++++++++++----- 3 files changed, 80 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index eaa4a309c6c7..4dec4b62bbe0 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -122,6 +122,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Prevent duplicate packet loss error messages in HTTP events. {pull}10709[10709] - Avoid reporting unknown MongoDB opcodes more than once. {pull}10878[10878] - Fixed a memory leak when using process monitoring under Windows. {pull}12100[12100] +- Improved debug logging efficiency in PGQSL module. {issue}12150[12150] *Winlogbeat* diff --git a/packetbeat/protos/pgsql/parse.go b/packetbeat/protos/pgsql/parse.go index e1bd915335f3..cf7d9f72d97e 100644 --- a/packetbeat/protos/pgsql/parse.go +++ b/packetbeat/protos/pgsql/parse.go @@ -22,7 +22,6 @@ import ( "strings" "github.com/elastic/beats/libbeat/common" - "github.com/elastic/beats/libbeat/logp" ) var ( @@ -34,7 +33,7 @@ var ( ) func (pgsql *pgsqlPlugin) pgsqlMessageParser(s *pgsqlStream) (bool, bool) { - debugf("pgsqlMessageParser, off=%v", s.parseOffset) + pgsql.debugf("pgsqlMessageParser, off=%v", s.parseOffset) var ok, complete bool @@ -46,22 +45,22 @@ func (pgsql *pgsqlPlugin) pgsqlMessageParser(s *pgsqlStream) (bool, bool) { case pgsqlExtendedQueryState: ok, complete = pgsql.parseMessageExtendedQuery(s) default: - logp.Critical("Pgsql invalid parser state") + pgsql.log.Error("Pgsql invalid parser state") } - detailedf("pgsqlMessageParser return: ok=%v, complete=%v, off=%v", + pgsql.detailf("pgsqlMessageParser return: ok=%v, complete=%v, off=%v", ok, complete, s.parseOffset) return ok, complete } func (pgsql *pgsqlPlugin) parseMessageStart(s *pgsqlStream) (bool, bool) { - detailedf("parseMessageStart") + pgsql.detailf("parseMessageStart") m := s.message for len(s.data[s.parseOffset:]) >= 5 { - isSpecial, length, command := isSpecialPgsqlCommand(s.data[s.parseOffset:]) + isSpecial, length, command := pgsql.isSpecialCommand(s.data[s.parseOffset:]) if !isSpecial { return pgsql.parseCommand(s) } @@ -71,7 +70,7 @@ func (pgsql *pgsqlPlugin) parseMessageStart(s *pgsqlStream) (bool, bool) { // check buffer available if len(s.data[s.parseOffset:]) <= length { - detailedf("Wait for more data 1") + pgsql.detailf("Wait for more data 1") return true, false } @@ -103,7 +102,7 @@ func (pgsql *pgsqlPlugin) parseCommand(s *pgsqlStream) (bool, bool) { m := s.message // one byte reply to SSLRequest - detailedf("Reply for SSLRequest %c", typ) + pgsql.detailf("Reply for SSLRequest %c", typ) m.start = s.parseOffset s.parseOffset++ m.end = s.parseOffset @@ -118,15 +117,15 @@ func (pgsql *pgsqlPlugin) parseCommand(s *pgsqlStream) (bool, bool) { length := readLength(s.data[s.parseOffset+1:]) if length < 4 { // length should include the size of itself (int32) - detailedf("Invalid pgsql command length.") + pgsql.detailf("Invalid pgsql command length.") return false, false } if len(s.data[s.parseOffset:]) <= length { - detailedf("Wait for more data") + pgsql.detailf("Wait for more data") return true, false } - detailedf("Pgsql type %c, length=%d", typ, length) + pgsql.detailf("Pgsql type %c, length=%d", typ, length) switch typ { case 'Q': @@ -147,7 +146,7 @@ func (pgsql *pgsqlPlugin) parseCommand(s *pgsqlStream) (bool, bool) { return pgsql.parseExtResp(s, length) default: if !pgsqlValidType(typ) { - detailedf("invalid frame type: '%c'", typ) + pgsql.detailf("invalid frame type: '%c'", typ) return false, false } return pgsql.parseSkipMessage(s, length) @@ -172,7 +171,7 @@ func (pgsql *pgsqlPlugin) parseSimpleQuery(s *pgsqlStream, length int) (bool, bo m.query = query m.toExport = true - detailedf("Simple Query: %s", m.query) + pgsql.detailf("Simple Query: %s", m.query) return true, true } @@ -184,12 +183,12 @@ func (pgsql *pgsqlPlugin) parseRowDescription(s *pgsqlStream, length int) (bool, m.isOK = true m.toExport = true - err := pgsqlFieldsParser(s, s.data[s.parseOffset+5:s.parseOffset+length+1]) + err := pgsql.parseFields(s, s.data[s.parseOffset+5:s.parseOffset+length+1]) if err != nil { - detailedf("fields parse failed with: %v", err) + pgsql.detailf("parseFields failed with: %v", err) return false, false } - detailedf("Fields: %s", m.fields) + pgsql.detailf("Fields: %s", m.fields) s.parseOffset++ //type s.parseOffset += length //length @@ -218,7 +217,7 @@ func (pgsql *pgsqlPlugin) parseEmptyQueryResponse(s *pgsqlStream) (bool, bool) { m := s.message - detailedf("EmptyQueryResponse") + pgsql.detailf("EmptyQueryResponse") m.start = s.parseOffset m.isOK = true m.isRequest = false @@ -245,7 +244,7 @@ func (pgsql *pgsqlPlugin) parseCommandComplete(s *pgsqlStream, length int) (bool return false, false } - detailedf("CommandComplete length=%d, tag=%s", length, name) + pgsql.detailf("CommandComplete length=%d, tag=%s", length, name) s.parseOffset += length m.end = s.parseOffset @@ -269,7 +268,7 @@ func (pgsql *pgsqlPlugin) parseReadyForQuery(s *pgsqlStream, length int) (bool, func (pgsql *pgsqlPlugin) parseErrorResponse(s *pgsqlStream, length int) (bool, bool) { // ErrorResponse - detailedf("ErrorResponse") + pgsql.detailf("ErrorResponse") m := s.message m.start = s.parseOffset @@ -278,7 +277,7 @@ func (pgsql *pgsqlPlugin) parseErrorResponse(s *pgsqlStream, length int) (bool, m.toExport = true s.parseOffset++ //type - pgsqlErrorParser(s, s.data[s.parseOffset+4:s.parseOffset+length]) + pgsql.parseError(s, s.data[s.parseOffset+4:s.parseOffset+length]) s.parseOffset += length //length m.end = s.parseOffset @@ -289,7 +288,7 @@ func (pgsql *pgsqlPlugin) parseErrorResponse(s *pgsqlStream, length int) (bool, func (pgsql *pgsqlPlugin) parseExtReq(s *pgsqlStream, length int) (bool, bool) { // Ready for query -> Parse for an extended query request - detailedf("Parse") + pgsql.detailf("Parse") m := s.message m.start = s.parseOffset @@ -303,11 +302,11 @@ func (pgsql *pgsqlPlugin) parseExtReq(s *pgsqlStream, length int) (bool, bool) { query, err := common.ReadString(s.data[m.start+6:]) if err != nil { - detailedf("Invalid extended query request") + pgsql.detailf("Invalid extended query request") return false, false } m.query = query - detailedf("Parse in an extended query request: %s", m.query) + pgsql.detailf("Parse in an extended query request: %s", m.query) // Ignore SET statement if strings.HasPrefix(m.query, "SET ") { @@ -319,7 +318,7 @@ func (pgsql *pgsqlPlugin) parseExtReq(s *pgsqlStream, length int) (bool, bool) { func (pgsql *pgsqlPlugin) parseExtResp(s *pgsqlStream, length int) (bool, bool) { // Sync -> Parse completion for an extended query response - detailedf("ParseCompletion") + pgsql.detailf("ParseCompletion") m := s.message m.start = s.parseOffset @@ -329,7 +328,7 @@ func (pgsql *pgsqlPlugin) parseExtResp(s *pgsqlStream, length int) (bool, bool) s.parseOffset++ //type s.parseOffset += length - detailedf("Parse completion in an extended query response") + pgsql.detailf("Parse completion in an extended query response") s.parseState = pgsqlGetDataState return pgsql.parseMessageData(s) } @@ -349,7 +348,7 @@ func (pgsql *pgsqlPlugin) parseSkipMessage(s *pgsqlStream, length int) (bool, bo return true, true } -func pgsqlFieldsParser(s *pgsqlStream, buf []byte) error { +func (pgsql *pgsqlPlugin) parseFields(s *pgsqlStream, buf []byte) error { m := s.message if len(buf) < 2 { @@ -359,7 +358,6 @@ func pgsqlFieldsParser(s *pgsqlStream, buf []byte) error { // read field count (int16) off := 2 fieldCount := readCount(buf) - detailedf("Row Description field count=%d", fieldCount) fields := []string{} fieldsFormat := []byte{} @@ -400,8 +398,6 @@ func pgsqlFieldsParser(s *pgsqlStream, buf []byte) error { format := common.BytesNtohs(buf[off : off+2]) off += 2 fieldsFormat = append(fieldsFormat, byte(format)) - - detailedf("Field name=%s, format=%d", fieldName, format) } if off < len(buf) { @@ -411,13 +407,13 @@ func pgsqlFieldsParser(s *pgsqlStream, buf []byte) error { m.fields = fields m.fieldsFormat = fieldsFormat if m.numberOfFields != fieldCount { - logp.Err("Missing fields from RowDescription. Expected %d. Received %d", + pgsql.log.Errorf("Missing fields from RowDescription. Expected %d. Received %d", fieldCount, m.numberOfFields) } return nil } -func pgsqlErrorParser(s *pgsqlStream, buf []byte) { +func (pgsql *pgsqlPlugin) parseError(s *pgsqlStream, buf []byte) { m := s.message off := 0 for off < len(buf) { @@ -430,7 +426,7 @@ func pgsqlErrorParser(s *pgsqlStream, buf []byte) { // read field value(string) val, err := common.ReadString(buf[off+1:]) if err != nil { - logp.Err("Failed to read the column field") + pgsql.log.Error("Failed to read the column field") break } off += len(val) + 2 @@ -444,11 +440,11 @@ func pgsqlErrorParser(s *pgsqlStream, buf []byte) { m.errorSeverity = val } } - detailedf("%s %s %s", m.errorSeverity, m.errorCode, m.errorInfo) + pgsql.detailf("%s %s %s", m.errorSeverity, m.errorCode, m.errorInfo) } func (pgsql *pgsqlPlugin) parseMessageData(s *pgsqlStream) (bool, bool) { - detailedf("parseMessageData") + pgsql.detailf("parseMessageData") // The response to queries that return row sets contains: // RowDescription @@ -466,12 +462,12 @@ func (pgsql *pgsqlPlugin) parseMessageData(s *pgsqlStream) (bool, bool) { length := readLength(s.data[s.parseOffset+1:]) if length < 4 { // length should include the size of itself (int32) - detailedf("Invalid pgsql command length.") + pgsql.detailf("Invalid pgsql command length.") return false, false } if len(s.data[s.parseOffset:]) <= length { // wait for more - detailedf("Wait for more data") + pgsql.detailf("Wait for more data") return true, false } @@ -491,17 +487,17 @@ func (pgsql *pgsqlPlugin) parseMessageData(s *pgsqlStream) (bool, bool) { name, err := pgsqlString(s.data[s.parseOffset+4:], length-4) if err != nil { - detailedf("pgsql string invalid") + pgsql.detailf("pgsql string invalid") return false, false } - detailedf("CommandComplete length=%d, tag=%s", length, name) + pgsql.detailf("CommandComplete length=%d, tag=%s", length, name) s.parseOffset += length m.end = s.parseOffset m.size = uint64(m.end - m.start) s.parseState = pgsqlStartState - detailedf("Rows: %s", m.rows) + pgsql.detailf("Rows: %s", m.rows) return true, true case '2': @@ -515,7 +511,7 @@ func (pgsql *pgsqlPlugin) parseMessageData(s *pgsqlStream) (bool, bool) { return pgsql.parseRowDescription(s, length) default: // shouldn't happen -> return error - logp.Warn("Pgsql parser expected data message, but received command of type %v", typ) + pgsql.log.Warnf("Pgsql parser expected data message, but received command of type %v", typ) s.parseState = pgsqlStartState return false, false } @@ -530,7 +526,7 @@ func (pgsql *pgsqlPlugin) parseDataRow(s *pgsqlStream, buf []byte) error { // read field count (int16) off := 2 fieldCount := readCount(buf) - detailedf("DataRow field count=%d", fieldCount) + pgsql.detailf("DataRow field count=%d", fieldCount) rows := []string{} rowLength := 0 @@ -545,7 +541,7 @@ func (pgsql *pgsqlPlugin) parseDataRow(s *pgsqlStream, buf []byte) error { off += 4 if columnLength > 0 && columnLength > len(buf[off:]) { - logp.Err("Pgsql invalid column_length=%v, buffer_length=%v, i=%v", + pgsql.log.Errorf("Pgsql invalid column_length=%v, buffer_length=%v, i=%v", columnLength, len(buf[off:]), i) return errInvalidLength } @@ -568,7 +564,7 @@ func (pgsql *pgsqlPlugin) parseDataRow(s *pgsqlStream, buf []byte) error { rowLength += len(columnValue) } - detailedf("Value %s, length=%d, off=%d", string(columnValue), columnLength, off) + pgsql.detailf("Value %s, length=%d, off=%d", string(columnValue), columnLength, off) } if off < len(buf) { @@ -584,7 +580,7 @@ func (pgsql *pgsqlPlugin) parseDataRow(s *pgsqlStream, buf []byte) error { } func (pgsql *pgsqlPlugin) parseMessageExtendedQuery(s *pgsqlStream) (bool, bool) { - detailedf("parseMessageExtendedQuery") + pgsql.detailf("parseMessageExtendedQuery") // An extended query request contains: // Parse @@ -603,12 +599,12 @@ func (pgsql *pgsqlPlugin) parseMessageExtendedQuery(s *pgsqlStream) (bool, bool) length := readLength(s.data[s.parseOffset+1:]) if length < 4 { // length should include the size of itself (int32) - detailedf("Invalid pgsql command length.") + pgsql.detailf("Invalid pgsql command length.") return false, false } if len(s.data[s.parseOffset:]) <= length { // wait for more - detailedf("Wait for more data") + pgsql.detailf("Wait for more data") return true, false } @@ -647,7 +643,7 @@ func (pgsql *pgsqlPlugin) parseMessageExtendedQuery(s *pgsqlStream) (bool, bool) return true, true default: // shouldn't happen -> return error - logp.Warn("Pgsql parser expected extended query message, but received command of type %v", typ) + pgsql.log.Warnf("Pgsql parser expected extended query message, but received command of type %v", typ) s.parseState = pgsqlStartState return false, false } @@ -656,7 +652,7 @@ func (pgsql *pgsqlPlugin) parseMessageExtendedQuery(s *pgsqlStream) (bool, bool) return true, false } -func isSpecialPgsqlCommand(data []byte) (bool, int, int) { +func (pgsql *pgsqlPlugin) isSpecialCommand(data []byte) (bool, int, int) { if len(data) < 8 { // 8 bytes required return false, 0, 0 @@ -670,15 +666,15 @@ func isSpecialPgsqlCommand(data []byte) (bool, int, int) { if length == 16 && code == 80877102 { // Cancel Request - logp.Debug("pgsqldetailed", "Cancel Request, length=%d", length) + pgsql.debugf("Cancel Request, length=%d", length) return true, length, cancelRequest } else if length == 8 && code == 80877103 { // SSL Request - logp.Debug("pgsqldetailed", "SSL Request, length=%d", length) + pgsql.debugf("SSL Request, length=%d", length) return true, length, sslRequest } else if code == 196608 { // Startup Message - logp.Debug("pgsqldetailed", "Startup Message, length=%d", length) + pgsql.debugf("Startup Message, length=%d", length) return true, length, startupMessage } return false, 0, 0 diff --git a/packetbeat/protos/pgsql/pgsql.go b/packetbeat/protos/pgsql/pgsql.go index f48731fee72f..a16c07d64b9a 100644 --- a/packetbeat/protos/pgsql/pgsql.go +++ b/packetbeat/protos/pgsql/pgsql.go @@ -30,9 +30,13 @@ import ( "github.com/elastic/beats/packetbeat/procs" "github.com/elastic/beats/packetbeat/protos" "github.com/elastic/beats/packetbeat/protos/tcp" + + "go.uber.org/zap" ) type pgsqlPlugin struct { + log, debug, detail *logp.Logger + isDebug, isDetail bool // config ports []int @@ -125,11 +129,6 @@ var ( errInvalidLength = errors.New("invalid length") ) -var ( - debugf = logp.MakeDebug("pgsql") - detailedf = logp.MakeDebug("pgsqldetailed") -) - var ( unmatchedResponses = monitoring.NewInt(nil, "pgsql.unmatched_responses") ) @@ -160,6 +159,11 @@ func New( func (pgsql *pgsqlPlugin) init(results protos.Reporter, config *pgsqlConfig) error { pgsql.setFromConfig(config) + pgsql.log = logp.NewLogger("pgsql") + pgsql.debug = logp.NewLogger("pgsql", zap.AddCallerSkip(1)) + pgsql.detail = logp.NewLogger("pgsqldetailed", zap.AddCallerSkip(1)) + pgsql.isDebug, pgsql.isDetail = logp.IsDebug("pgsql"), logp.IsDebug("pgsqldetailed") + pgsql.transactions = common.NewCache( pgsql.transactionTimeout, protos.DefaultTransactionHashSize) @@ -187,6 +191,20 @@ func (pgsql *pgsqlPlugin) getTransaction(k common.HashableTCPTuple) []*pgsqlTran return nil } +//go:inline +func (pgsql *pgsqlPlugin) debugf(format string, v ...interface{}) { + if pgsql.isDebug { + pgsql.debug.Debugf(format, v...) + } +} + +//go:inline +func (pgsql *pgsqlPlugin) detailf(format string, v ...interface{}) { + if pgsql.isDetail { + pgsql.detail.Debugf(format, v...) + } +} + func (pgsql *pgsqlPlugin) GetPorts() []int { return pgsql.ports } @@ -237,13 +255,13 @@ func (pgsql *pgsqlPlugin) Parse(pkt *protos.Packet, tcptuple *common.TCPTuple, data: pkt.Payload, message: &pgsqlMessage{ts: pkt.Ts}, } - logp.Debug("pgsqldetailed", "New stream created") + pgsql.detailf("New stream created") } else { // concatenate bytes priv.data[dir].data = append(priv.data[dir].data, pkt.Payload...) - logp.Debug("pgsqldetailed", "Len data: %d cap data: %d", len(priv.data[dir].data), cap(priv.data[dir].data)) + pgsql.detailf("Len data: %d cap data: %d", len(priv.data[dir].data), cap(priv.data[dir].data)) if len(priv.data[dir].data) > tcp.TCPMaxDataInStream { - debugf("Stream data too large, dropping TCP stream") + pgsql.debugf("Stream data too large, dropping TCP stream") priv.data[dir] = nil return priv } @@ -262,12 +280,11 @@ func (pgsql *pgsqlPlugin) Parse(pkt *protos.Packet, tcptuple *common.TCPTuple, } ok, complete := pgsql.pgsqlMessageParser(priv.data[dir]) - //logp.Debug("pgsqldetailed", "MessageParser returned ok=%v complete=%v", ok, complete) if !ok { // drop this tcp stream. Will retry parsing with the next // segment in it priv.data[dir] = nil - debugf("Ignore Postgresql message. Drop tcp stream. Try parsing with the next segment") + pgsql.debugf("Ignore Postgresql message. Drop tcp stream. Try parsing with the next segment") return priv } @@ -333,7 +350,7 @@ func (pgsql *pgsqlPlugin) GapInStream(tcptuple *common.TCPTuple, dir uint8, // next layer but mark it as incomplete. stream := pgsqlData.data[dir] if messageHasEnoughData(stream.message) { - debugf("Message not complete, but sending to the next layer") + pgsql.debugf("Message not complete, but sending to the next layer") m := stream.message m.toExport = true m.end = stream.parseOffset @@ -378,7 +395,7 @@ func (pgsql *pgsqlPlugin) receivedPgsqlRequest(msg *pgsqlMessage) { // separated by ';' queries := pgsqlQueryParser(msg.query) - logp.Debug("pgsqldetailed", "Queries (%d) :%s", len(queries), queries) + pgsql.debugf("Queries (%d) :%s", len(queries), queries) transList := pgsql.getTransaction(tuple.Hashable()) if transList == nil { @@ -414,7 +431,7 @@ func (pgsql *pgsqlPlugin) receivedPgsqlResponse(msg *pgsqlMessage) { tuple := msg.tcpTuple transList := pgsql.getTransaction(tuple.Hashable()) if transList == nil || len(transList) == 0 { - debugf("Response from unknown transaction. Ignoring.") + pgsql.debugf("Response from unknown transaction. Ignoring.") unmatchedResponses.Add(1) return } @@ -424,7 +441,7 @@ func (pgsql *pgsqlPlugin) receivedPgsqlResponse(msg *pgsqlMessage) { // check if the request was received if trans.pgsql == nil { - debugf("Response from unknown transaction. Ignoring.") + pgsql.debugf("Response from unknown transaction. Ignoring.") unmatchedResponses.Add(1) return } @@ -449,7 +466,7 @@ func (pgsql *pgsqlPlugin) receivedPgsqlResponse(msg *pgsqlMessage) { pgsql.publishTransaction(trans) - debugf("Postgres transaction completed: %s\n%s", trans.pgsql, trans.responseRaw) + pgsql.debugf("Postgres transaction completed: %s\n%s", trans.pgsql, trans.responseRaw) } func (pgsql *pgsqlPlugin) publishTransaction(t *pgsqlTransaction) { From 59378cd6e29d13e454d2cfcfd16ab22b291677f8 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Fri, 10 May 2019 20:07:41 +0200 Subject: [PATCH 38/59] Ignore doc type in ES search API for ES 8 (#12171) --- libbeat/outputs/elasticsearch/api.go | 5 +++++ libbeat/outputs/elasticsearch/api_integration_test.go | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libbeat/outputs/elasticsearch/api.go b/libbeat/outputs/elasticsearch/api.go index a0f2d0a9d0f7..91c15cf2a468 100644 --- a/libbeat/outputs/elasticsearch/api.go +++ b/libbeat/outputs/elasticsearch/api.go @@ -23,6 +23,8 @@ import ( "strconv" "github.com/pkg/errors" + + "github.com/elastic/beats/libbeat/common" ) // QueryResult contains the result of a query. @@ -235,6 +237,9 @@ func (es *Connection) SearchURIWithBody( params map[string]string, body interface{}, ) (int, *SearchResults, error) { + if !es.version.LessThan(&common.Version{Major: 8}) { + docType = "" + } status, resp, err := es.apiCall("GET", index, docType, "_search", "", params, body) if err != nil { return status, nil, err diff --git a/libbeat/outputs/elasticsearch/api_integration_test.go b/libbeat/outputs/elasticsearch/api_integration_test.go index 2ee8d8a123a7..31903cf60e5d 100644 --- a/libbeat/outputs/elasticsearch/api_integration_test.go +++ b/libbeat/outputs/elasticsearch/api_integration_test.go @@ -61,7 +61,7 @@ func TestIndex(t *testing.T) { } _, result, err := client.SearchURIWithBody(index, "", nil, map[string]interface{}{}) if err != nil { - t.Errorf("SearchUriWithBody() returns an error: %s", err) + t.Fatalf("SearchUriWithBody() returns an error: %s", err) } if result.Hits.Total.Value != 1 { t.Errorf("Wrong number of search results: %d", result.Hits.Total.Value) @@ -72,7 +72,7 @@ func TestIndex(t *testing.T) { } _, result, err = client.SearchURI(index, "test", params) if err != nil { - t.Errorf("SearchUri() returns an error: %s", err) + t.Fatalf("SearchUri() returns an error: %s", err) } if result.Hits.Total.Value != 1 { t.Errorf("Wrong number of search results: %d", result.Hits.Total.Value) From ed552799ea019289efb3907c372d96b76bc338ea Mon Sep 17 00:00:00 2001 From: DeDe Morton Date: Fri, 10 May 2019 16:02:12 -0700 Subject: [PATCH 39/59] [Docs] Make breaking changes separate files for each version (#12173) --- libbeat/docs/breaking-7.0.asciidoc | 67 +++++++++++++++++++++++++++++ libbeat/docs/breaking.asciidoc | 69 +----------------------------- 2 files changed, 68 insertions(+), 68 deletions(-) create mode 100644 libbeat/docs/breaking-7.0.asciidoc diff --git a/libbeat/docs/breaking-7.0.asciidoc b/libbeat/docs/breaking-7.0.asciidoc new file mode 100644 index 000000000000..3b119fc47640 --- /dev/null +++ b/libbeat/docs/breaking-7.0.asciidoc @@ -0,0 +1,67 @@ +[[breaking-changes-7.0]] + +=== Breaking changes in 7.0 + +This section discusses the main changes that you should be aware of if you +upgrade the Beats to version 7.0. {see-relnotes} + +[float] +==== HTML escaping is disabled by default + +Starting with verion 7.0, embedded HTML or special symbols like `<` and `>` are +no longer escaped by default when publishing events. +To configure the old behavior of escaping HTML, set `escape_html: +true` in the output configuration. + +//tag::notable-breaking-changes[] +[float] +==== Filebeat registry + +Starting with version 7.0, Filebeat stores the registry in a sub-directory. +The directory is configured using the `filebeat.registry.path` setting. +If Filebeat finds an old registry file at the configured location, it will +automatically migrate the registry file to the new format. + +The settings `filebeat.registry_flush` and `filebeat.registry_file_permission` +have been renamed to `filebeat.registry.flush` and +`filebeat.registry.file_permission`. + +//end::notable-breaking-changes[] + +[float] +==== ILM support + +Support for Index Lifecycle Management is GA with Beats version 7.0. This +release moved most ILM settings from the `output.elasticsearch.ilm` namespace to +the `setup.ilm` namespace. + +//tag::notable-breaking-changes[] + +[float] +==== Filebeat apache2 module renamed + +The Filebeat `apache2` module is renamed to `apache` in 7.0. + +[float] +==== Field name changes + +include::./field-name-changes.asciidoc[] + +//end::notable-breaking-changes[] + +[float] +==== Auditbeat type changes + +The Auditbeat JSON data types produced by the output have been changed to align +with the data types used in the Elasticsearch index template. + +.Auditbeat Type Changes in 7.0 +[frame="topbot",options="header"] +|====================== +|Field|Old Type|New Type +|`file.gid` |number |string +|`file.uid` |number |string +|`process.pid` |string |number +|`process.ppid` |string |number +|====================== + diff --git a/libbeat/docs/breaking.asciidoc b/libbeat/docs/breaking.asciidoc index 4ae933819220..fb0f4f5469d1 100644 --- a/libbeat/docs/breaking.asciidoc +++ b/libbeat/docs/breaking.asciidoc @@ -13,71 +13,4 @@ See the following topics for a description of breaking changes: * <> -[[breaking-changes-7.0]] - -=== Breaking changes in 7.0 - -This section discusses the main changes that you should be aware of if you -upgrade the Beats to version 7.0. {see-relnotes} - -[float] -==== HTML escaping is disabled by default - -Starting with verion 7.0, embedded HTML or special symbols like `<` and `>` are -no longer escaped by default when publishing events. -To configure the old behavior of escaping HTML, set `escape_html: -true` in the output configuration. - -//tag::notable-breaking-changes[] -[float] -==== Filebeat registry - -Starting with version 7.0, Filebeat stores the registry in a sub-directory. -The directory is configured using the `filebeat.registry.path` setting. -If Filebeat finds an old registry file at the configured location, it will -automatically migrate the registry file to the new format. - -The settings `filebeat.registry_flush` and `filebeat.registry_file_permission` -have been renamed to `filebeat.registry.flush` and -`filebeat.registry.file_permission`. - -//end::notable-breaking-changes[] - -[float] -==== ILM support - -Support for Index Lifecycle Management is GA with Beats version 7.0. This -release moved most ILM settings from the `output.elasticsearch.ilm` namespace to -the `setup.ilm` namespace. - -//tag::notable-breaking-changes[] - -[float] -==== Filebeat apache2 module renamed - -The Filebeat `apache2` module is renamed to `apache` in 7.0. - -[float] -==== Field name changes - -include::./field-name-changes.asciidoc[] - -//end::notable-breaking-changes[] - -[float] -==== Auditbeat type changes - -The Auditbeat JSON data types produced by the output have been changed to align -with the data types used in the Elasticsearch index template. - -.Auditbeat Type Changes in 7.0 -[frame="topbot",options="header"] -|====================== -|Field|Old Type|New Type -|`file.gid` |number |string -|`file.uid` |number |string -|`process.pid` |string |number -|`process.ppid` |string |number -|====================== - - +include::breaking-7.0.asciidoc[] From f69dadb26d833f8f6d98f90c36516d24b50e7deb Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Sat, 11 May 2019 10:03:08 +0200 Subject: [PATCH 40/59] [Filebeat] module for palo_alto (pan-os) logs (#11999) This is a module for Palo Alto Networks PAN-OS logs received via Syslog. It has been tested with logs for PAN-OS version 7.1 to 9.0. However, it is expected to work with earlier versions as the log format is compatible. --- CHANGELOG.next.asciidoc | 1 + filebeat/docs/fields.asciidoc | 242 + filebeat/docs/modules/palo_alto.asciidoc | 188 + filebeat/docs/modules_list.asciidoc | 2 + x-pack/filebeat/filebeat.reference.yml | 12 + x-pack/filebeat/include/list.go | 1 + x-pack/filebeat/module/palo_alto/README.md | 6 + .../module/palo_alto/_meta/config.yml | 10 + .../module/palo_alto/_meta/docs.asciidoc | 175 + .../module/palo_alto/_meta/fields.yml | 10 + x-pack/filebeat/module/palo_alto/fields.go | 23 + x-pack/filebeat/module/palo_alto/module.yml | 3 + .../module/palo_alto/pan_os/_meta/fields.yml | 124 + .../module/palo_alto/pan_os/config/input.yml | 160 + .../palo_alto/pan_os/ingest/pipeline.yml | 322 + .../module/palo_alto/pan_os/manifest.yml | 30 + .../palo_alto/pan_os/test/pan_inc_other.log | 34 + .../test/pan_inc_other.log-expected.json | 75 + .../palo_alto/pan_os/test/pan_inc_threat.log | 100 + .../test/pan_inc_threat.log-expected.json | 6385 ++++++++++++++ .../palo_alto/pan_os/test/pan_inc_traffic.log | 100 + .../test/pan_inc_traffic.log-expected.json | 7135 ++++++++++++++++ .../module/palo_alto/pan_os/test/threat.log | 76 + .../pan_os/test/threat.log-expected.json | 5108 ++++++++++++ .../module/palo_alto/pan_os/test/traffic.log | 100 + .../pan_os/test/traffic.log-expected.json | 7364 +++++++++++++++++ 26 files changed, 27786 insertions(+) create mode 100644 filebeat/docs/modules/palo_alto.asciidoc create mode 100644 x-pack/filebeat/module/palo_alto/README.md create mode 100644 x-pack/filebeat/module/palo_alto/_meta/config.yml create mode 100644 x-pack/filebeat/module/palo_alto/_meta/docs.asciidoc create mode 100644 x-pack/filebeat/module/palo_alto/_meta/fields.yml create mode 100644 x-pack/filebeat/module/palo_alto/fields.go create mode 100644 x-pack/filebeat/module/palo_alto/module.yml create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/_meta/fields.yml create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/config/input.yml create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/ingest/pipeline.yml create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/manifest.yml create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log-expected.json create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log-expected.json create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log-expected.json create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/threat.log create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/threat.log-expected.json create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log create mode 100644 x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log-expected.json diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 4dec4b62bbe0..fb2be810c8d6 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -174,6 +174,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add Filebeat envoyproxy module. {pull}11700[11700] - Add apache2(httpd) log path (`/var/log/httpd`) to make apache2 module work out of the box on Redhat-family OSes. {issue}11887[11887] {pull}11888[11888] - Add support to new MongoDB additional diagnostic information {pull}11952[11952] +- New module `palo_alto` for Palo Alto Networks PAN-OS logs. {pull}11999[11999] *Heartbeat* diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index 7638265ce1a4..aa071c723952 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -40,6 +40,7 @@ grouped in the following categories: * <> * <> * <> +* <> * <> * <> * <> @@ -11822,6 +11823,247 @@ Unix timestamp of the event, in seconds since the epoch. Used for computing the String representation of the collection time, as formatted by osquery. +-- + +[[exported-fields-palo_alto]] +== palo_alto fields + +Module for Palo Alto Networks (PAN-OS) + + + +[float] +== palo_alto fields + +Fields from the palo_alto logs. + + + +[float] +== pan_os fields + +Fields for the Palo Alto Networks PAN-OS logs. + + + +*`palo_alto.pan_os.ruleset`*:: ++ +-- +type: keyword + +Name of the rule that matched this session. + + +-- + +[float] +== source fields + +Fields to extend the top-level source object. + + + +*`palo_alto.pan_os.source.zone`*:: ++ +-- +type: keyword + +Source zone for this session. + + +-- + +*`palo_alto.pan_os.source.interface`*:: ++ +-- +type: keyword + +Source interface for this session. + + +-- + +[float] +== nat fields + +Post-NAT source address, if source NAT is performed. + + + +*`palo_alto.pan_os.source.nat.ip`*:: ++ +-- +type: ip + +Post-NAT source IP. + + +-- + +*`palo_alto.pan_os.source.nat.port`*:: ++ +-- +type: long + +Post-NAT source port. + + +-- + +[float] +== destination fields + +Fields to extend the top-level destination object. + + + +*`palo_alto.pan_os.destination.zone`*:: ++ +-- +type: keyword + +Destination zone for this session. + + +-- + +*`palo_alto.pan_os.destination.interface`*:: ++ +-- +type: keyword + +Destination interface for this session. + + +-- + +[float] +== nat fields + +Post-NAT destination address, if destination NAT is performed. + + + +*`palo_alto.pan_os.destination.nat.ip`*:: ++ +-- +type: ip + +Post-NAT destination IP. + + +-- + +*`palo_alto.pan_os.destination.nat.port`*:: ++ +-- +type: long + +Post-NAT destination port. + + +-- + +[float] +== network fields + +Fields to extend the top-level network object. + + + +*`palo_alto.pan_os.network.pcap_id`*:: ++ +-- +type: keyword + +Packet capture ID for a threat. + + +-- + + +*`palo_alto.pan_os.network.nat.community_id`*:: ++ +-- +type: keyword + +Community ID flow-hash for the NAT 5-tuple. + + +-- + +[float] +== file fields + +Fields to extend the top-level file object. + + + +*`palo_alto.pan_os.file.hash`*:: ++ +-- +type: keyword + +Binary hash for a threat file sent to be analyzed by the WildFire service. + + +-- + +[float] +== url fields + +Fields to extend the top-level url object. + + + +*`palo_alto.pan_os.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'. + + +-- + +*`palo_alto.pan_os.flow_id`*:: ++ +-- +type: keyword + +Internal numeric identifier for each session. + + +-- + +*`palo_alto.pan_os.sequence_number`*:: ++ +-- +type: long + +Log entry identifier that is incremented sequentially. Unique for each log type. + + +-- + +*`palo_alto.pan_os.threat_file_or_url`*:: ++ +-- +type: keyword + +URL or file name for a threat. + + +-- + +*`palo_alto.pan_os.threat_id`*:: ++ +-- +type: keyword + +Palo Alto Networks identifier for the threat. + + -- [[exported-fields-postgresql]] diff --git a/filebeat/docs/modules/palo_alto.asciidoc b/filebeat/docs/modules/palo_alto.asciidoc new file mode 100644 index 000000000000..9c0a1fc9c03c --- /dev/null +++ b/filebeat/docs/modules/palo_alto.asciidoc @@ -0,0 +1,188 @@ +//// +This file is generated! See scripts/docs_collector.py +//// + +[[filebeat-module-palo_alto]] +[role="xpack"] + +:modulename: palo_alto +:has-dashboards: true + +== Palo Alto Networks module + +This is a module for Palo Alto Networks PAN-OS firewall monitoring logs received +over Syslog or read from a file. It currently supports messages of Traffic and +Threat types. + +[float] +=== Compatibility + +This module has been tested with logs generated by devices running PAN-OS +versions 7.1 to 9.0 but limited compatibility is expected for earlier versions. + +The {plugins}/ingest-geoip.html[ingest-geoip] +Elasticsearch plugin is required to run this module. + +include::../include/running-modules.asciidoc[] + +[float] +=== ECS field mappings + +These are the PAN-OS to ECS field mappings as well as those fields still not +in ECS that are added under the `palo_alto` prefix: + +.Traffic log mappings +[options="header"] +|============== +| PAN-OS Field | ECS Field | Non-standard field +| Receive Time | event.created | +| Serial Number | observer.serial_number | +| Type | event.category | +| Subtype | event.action | +| Generated Time | `@timestamp` | +| Source IP | client.ip source.ip | +| Destination IP | server.ip destination.ip | +| NAT Source IP | | palo_alto.source.nat.ip +| NAT Destination IP | | palo_alto.destination.nat.ip +| Rule Name | | palo_alto.ruleset +| Source User | client.user.name source.user.name | +| Destination User | server.user.name destination.user.name | +| Application | network.application | +| Source Zone | | palo_alto.source.zone +| Destination Zone | | palo_alto.destination.zone +| Ingress Interface | | palo_alto.source.interface +| Egress Interface | | palo_alto.destination.interface +| Session ID | | palo_alto.flow_id +| Source Port | client.port source.port | +| Destination Port | destination.port server.port | +| NAT Source Port | | palo_alto.source.nat.port +| NAT Destination Port | | palo_alto.destination.nat.port +| Flags | labels | +| Protocol | network.transport | +| Action | event.outcome | +| Bytes | network.bytes | +| Bytes Sent | client.bytes destination.bytes | +| Bytes Received | server.bytes source.bytes | +| Packets | network.packets | +| Start Time | event.start | +| Elapsed Time | event.duration | +| Category | | palo_alto.url.category +| Sequence Number | | palo_alto.sequence_number +| Packets Sent | server.packets destination.packets | +| Packets Received | client.packets source.packets | +| Device Name | observer.hostname | +|============== + +.Threat logs mappings +[options="header"] +|============== +| PAN-OS Field | ECS Field | Non-standard field +| Receive Time | event.created | +| Serial Number | observer.serial_number | +| Type | event.category | +| Subtype | event.action | +| Generated Time | `@timestamp` | +| Source IP | client.ip source.ip | +| Destination IP | server.ip destination.ip | +| NAT Source IP | | palo_alto.source.nat.ip +| NAT Destination IP | | palo_alto.destination.nat.ip +| Rule Name | | palo_alto.ruleset +| Source User | client.user.name source.user.name | +| Destination User | server.user.name destination.user.name | +| Application | network.application | +| Source Zone | | palo_alto.source.zone +| Destination Zone | | palo_alto.destination.zone +| Ingress Interface | | palo_alto.source.interface +| Egress Interface | | palo_alto.destination.interface +| Session ID | | palo_alto.flow_id +| Source Port | client.port source.port | +| Destination Port | destination.port server.port | +| NAT Source Port | | palo_alto.source.nat.port +| NAT Destination Port | | palo_alto.destination.nat.port +| Flags | labels | +| Protocol | network.transport | +| Action | event.outcome | +| Miscellaneous | url.original | palo_alto.threat_file_or_url +| Threat ID | | palo_alto.threat_id +| Category | | palo_alto.url.category +| Severity | log.level | +| Direction | network.direction | +| Source Location | source.geo.country_iso_code | +| Destination Location | destination.geo.country_iso_code | +| PCAP_id | | palo_alto.network.pcap_id +| Filedigest | | palo_alto.file.hash +| User Agent | user_agent.original | +| File Type | file.type | +| X-Forwarded-For | network.forwarded_ip | +| Referer | http.request.referer | +| Sender | source.user.email | +| Subject | | palo_alto.subject +| Recipient | destination.user.email | +| Device Name | observer.hostname | +|============== + +// [float] +// === Example dashboard +// +// This module comes with a sample dashboard: +// +// (TODO) +// [role="screenshot"] +// image::./images/kibana-cisco-asa.png[] + +include::../include/configuring-intro.asciidoc[] + +The module is by default configured to run via syslog on port 9001. However +it can also be configured to read logs from a file. See the following example. + +["source","yaml",subs="attributes"] +----- +- module: palo_alto + pan_os: + enabled: true + var.paths: ["/var/log/pan-os.log"] + var.input: "file" +----- + +:fileset_ex: pan_os + +include::../include/config-option-intro.asciidoc[] + +[float] +==== `pan_os` fileset settings + +Example config: + +[source,yaml] +---- + pan_os: + var.syslog_host: 0.0.0.0 + var.syslog_port: 514 +---- + +include::../include/var-paths.asciidoc[] + +*`var.syslog_host`*:: + +The interface to listen to UDP based syslog traffic. Defaults to `localhost`. +Set to `0.0.0.0` to bind to all available interfaces. + +*`var.syslog_port`*:: + +The UDP port to listen for syslog traffic. Defaults to `9001` + +NOTE: Ports below 1024 require {beatname_uc} to run as root. + +:has-dashboards!: + +:fileset_ex!: + +:modulename!: + + +[float] +=== Fields + +For a description of each field in the module, see the +<> section. + diff --git a/filebeat/docs/modules_list.asciidoc b/filebeat/docs/modules_list.asciidoc index 7fce59f66418..470f06d5a2bf 100644 --- a/filebeat/docs/modules_list.asciidoc +++ b/filebeat/docs/modules_list.asciidoc @@ -22,6 +22,7 @@ This file is generated! See scripts/docs_collector.py * <> * <> * <> + * <> * <> * <> * <> @@ -53,6 +54,7 @@ include::modules/nats.asciidoc[] include::modules/netflow.asciidoc[] include::modules/nginx.asciidoc[] include::modules/osquery.asciidoc[] +include::modules/palo_alto.asciidoc[] include::modules/postgresql.asciidoc[] include::modules/redis.asciidoc[] include::modules/santa.asciidoc[] diff --git a/x-pack/filebeat/filebeat.reference.yml b/x-pack/filebeat/filebeat.reference.yml index e5eb54cac2f6..05b7cee914eb 100644 --- a/x-pack/filebeat/filebeat.reference.yml +++ b/x-pack/filebeat/filebeat.reference.yml @@ -403,6 +403,18 @@ filebeat.modules: # of the document. The default is true. #var.use_namespace: true +#------------------------------ Palo_alto Module ------------------------------ +- module: palo_alto + pan_os: + enabled: true + + # Set which input to use between syslog (default) or file. + #var.input: + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: + #------------------------------ PostgreSQL Module ------------------------------ #- module: postgresql # Logs diff --git a/x-pack/filebeat/include/list.go b/x-pack/filebeat/include/list.go index be8a433b9e33..3eac6f892142 100644 --- a/x-pack/filebeat/include/list.go +++ b/x-pack/filebeat/include/list.go @@ -14,6 +14,7 @@ import ( _ "github.com/elastic/beats/x-pack/filebeat/module/envoyproxy" _ "github.com/elastic/beats/x-pack/filebeat/module/iptables" _ "github.com/elastic/beats/x-pack/filebeat/module/netflow" + _ "github.com/elastic/beats/x-pack/filebeat/module/palo_alto" _ "github.com/elastic/beats/x-pack/filebeat/module/suricata" _ "github.com/elastic/beats/x-pack/filebeat/module/zeek" ) diff --git a/x-pack/filebeat/module/palo_alto/README.md b/x-pack/filebeat/module/palo_alto/README.md new file mode 100644 index 000000000000..2c3910538265 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/README.md @@ -0,0 +1,6 @@ +# Palo Alto module + +## Caveats + +* Module is to be considered _beta_. + diff --git a/x-pack/filebeat/module/palo_alto/_meta/config.yml b/x-pack/filebeat/module/palo_alto/_meta/config.yml new file mode 100644 index 000000000000..e507060d2f0f --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/_meta/config.yml @@ -0,0 +1,10 @@ +- module: palo_alto + pan_os: + enabled: true + + # Set which input to use between syslog (default) or file. + #var.input: + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: diff --git a/x-pack/filebeat/module/palo_alto/_meta/docs.asciidoc b/x-pack/filebeat/module/palo_alto/_meta/docs.asciidoc new file mode 100644 index 000000000000..cbcc0098872d --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/_meta/docs.asciidoc @@ -0,0 +1,175 @@ +[role="xpack"] + +:modulename: palo_alto +:has-dashboards: true + +== Palo Alto Networks module + +This is a module for Palo Alto Networks PAN-OS firewall monitoring logs received +over Syslog or read from a file. It currently supports messages of Traffic and +Threat types. + +[float] +=== Compatibility + +This module has been tested with logs generated by devices running PAN-OS +versions 7.1 to 9.0 but limited compatibility is expected for earlier versions. + +The {plugins}/ingest-geoip.html[ingest-geoip] +Elasticsearch plugin is required to run this module. + +include::../include/running-modules.asciidoc[] + +[float] +=== ECS field mappings + +These are the PAN-OS to ECS field mappings as well as those fields still not +in ECS that are added under the `palo_alto` prefix: + +.Traffic log mappings +[options="header"] +|============== +| PAN-OS Field | ECS Field | Non-standard field +| Receive Time | event.created | +| Serial Number | observer.serial_number | +| Type | event.category | +| Subtype | event.action | +| Generated Time | `@timestamp` | +| Source IP | client.ip source.ip | +| Destination IP | server.ip destination.ip | +| NAT Source IP | | palo_alto.source.nat.ip +| NAT Destination IP | | palo_alto.destination.nat.ip +| Rule Name | | palo_alto.ruleset +| Source User | client.user.name source.user.name | +| Destination User | server.user.name destination.user.name | +| Application | network.application | +| Source Zone | | palo_alto.source.zone +| Destination Zone | | palo_alto.destination.zone +| Ingress Interface | | palo_alto.source.interface +| Egress Interface | | palo_alto.destination.interface +| Session ID | | palo_alto.flow_id +| Source Port | client.port source.port | +| Destination Port | destination.port server.port | +| NAT Source Port | | palo_alto.source.nat.port +| NAT Destination Port | | palo_alto.destination.nat.port +| Flags | labels | +| Protocol | network.transport | +| Action | event.outcome | +| Bytes | network.bytes | +| Bytes Sent | client.bytes destination.bytes | +| Bytes Received | server.bytes source.bytes | +| Packets | network.packets | +| Start Time | event.start | +| Elapsed Time | event.duration | +| Category | | palo_alto.url.category +| Sequence Number | | palo_alto.sequence_number +| Packets Sent | server.packets destination.packets | +| Packets Received | client.packets source.packets | +| Device Name | observer.hostname | +|============== + +.Threat logs mappings +[options="header"] +|============== +| PAN-OS Field | ECS Field | Non-standard field +| Receive Time | event.created | +| Serial Number | observer.serial_number | +| Type | event.category | +| Subtype | event.action | +| Generated Time | `@timestamp` | +| Source IP | client.ip source.ip | +| Destination IP | server.ip destination.ip | +| NAT Source IP | | palo_alto.source.nat.ip +| NAT Destination IP | | palo_alto.destination.nat.ip +| Rule Name | | palo_alto.ruleset +| Source User | client.user.name source.user.name | +| Destination User | server.user.name destination.user.name | +| Application | network.application | +| Source Zone | | palo_alto.source.zone +| Destination Zone | | palo_alto.destination.zone +| Ingress Interface | | palo_alto.source.interface +| Egress Interface | | palo_alto.destination.interface +| Session ID | | palo_alto.flow_id +| Source Port | client.port source.port | +| Destination Port | destination.port server.port | +| NAT Source Port | | palo_alto.source.nat.port +| NAT Destination Port | | palo_alto.destination.nat.port +| Flags | labels | +| Protocol | network.transport | +| Action | event.outcome | +| Miscellaneous | url.original | palo_alto.threat_file_or_url +| Threat ID | | palo_alto.threat_id +| Category | | palo_alto.url.category +| Severity | log.level | +| Direction | network.direction | +| Source Location | source.geo.country_iso_code | +| Destination Location | destination.geo.country_iso_code | +| PCAP_id | | palo_alto.network.pcap_id +| Filedigest | | palo_alto.file.hash +| User Agent | user_agent.original | +| File Type | file.type | +| X-Forwarded-For | network.forwarded_ip | +| Referer | http.request.referer | +| Sender | source.user.email | +| Subject | | palo_alto.subject +| Recipient | destination.user.email | +| Device Name | observer.hostname | +|============== + +// [float] +// === Example dashboard +// +// This module comes with a sample dashboard: +// +// (TODO) +// [role="screenshot"] +// image::./images/kibana-cisco-asa.png[] + +include::../include/configuring-intro.asciidoc[] + +The module is by default configured to run via syslog on port 9001. However +it can also be configured to read logs from a file. See the following example. + +["source","yaml",subs="attributes"] +----- +- module: palo_alto + pan_os: + enabled: true + var.paths: ["/var/log/pan-os.log"] + var.input: "file" +----- + +:fileset_ex: pan_os + +include::../include/config-option-intro.asciidoc[] + +[float] +==== `pan_os` fileset settings + +Example config: + +[source,yaml] +---- + pan_os: + var.syslog_host: 0.0.0.0 + var.syslog_port: 514 +---- + +include::../include/var-paths.asciidoc[] + +*`var.syslog_host`*:: + +The interface to listen to UDP based syslog traffic. Defaults to `localhost`. +Set to `0.0.0.0` to bind to all available interfaces. + +*`var.syslog_port`*:: + +The UDP port to listen for syslog traffic. Defaults to `9001` + +NOTE: Ports below 1024 require {beatname_uc} to run as root. + +:has-dashboards!: + +:fileset_ex!: + +:modulename!: diff --git a/x-pack/filebeat/module/palo_alto/_meta/fields.yml b/x-pack/filebeat/module/palo_alto/_meta/fields.yml new file mode 100644 index 000000000000..c02e9c69aa11 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/_meta/fields.yml @@ -0,0 +1,10 @@ +- key: palo_alto + title: palo_alto + description: > + Module for Palo Alto Networks (PAN-OS) + fields: + - name: palo_alto + type: group + description: > + Fields from the palo_alto logs. + fields: diff --git a/x-pack/filebeat/module/palo_alto/fields.go b/x-pack/filebeat/module/palo_alto/fields.go new file mode 100644 index 000000000000..d192ec61b6e4 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/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 palo_alto + +import ( + "github.com/elastic/beats/libbeat/asset" +) + +func init() { + if err := asset.SetFields("filebeat", "palo_alto", asset.ModuleFieldsPri, AssetPaloAlto); err != nil { + panic(err) + } +} + +// AssetPaloAlto returns asset data. +// This is the base64 encoded gzipped contents of module/palo_alto. +func AssetPaloAlto() string { + return "eJzMmM9u4zYQxu95irm5BeLcesmhQNpFgABpauw26NGgqZHEhuJoh6O4ytMXpGVHtulItb1GeAsV8vvNn08iPYUXbG+hVpbmygpdAYgRi9tTGXrNphZD7hZ+vQIA+IOyxiLkxDBTluDOCsETypL4xcNPs7un6Z/ffr4CyA3azN/GRVNwqtrZOwxpa7yFgqmpu5mEYhj3cTPImSqQEt83AkuFv+n+ry8J27puTv59PqX8kfwWA3FESES/Cn4LKc3VQ+PGokfZlurwXrBdEmc7zz5iBIAnVSFQHhnD5iClEqiU6BIzkNJ48Oi9IXeTBPLUsMYkz166hmm6pAkB/ivosoglVE8tvqLtxIAW/6CWm53VqbT1Sd/I7XIO5W4EcRjfVlhBoKv3oaz1eYwT5FztJe+8UBuV/0Hm1G6DwYdFHUk0Iy/Tp7u/1mVUWcbo/TWYfD0VnhoPNXJOXGG2z3i4zr3MpgDXARx4OIJ/P4KHWQpw8xohTuVxDWLJFedDCWLvMEmrZujFOBX2vZBfe4qfzrRfemyfy7l9ss9o335V+x7uz59m5EErD5h5pIcOxJR29QhfDzr7NK4RFners8WF7N2pHWntWqt6blIeOYOHZkq/oIBWtTSM8PAl+keBlIzqUBbhRBONaWhNVdU4I2069DHhj0xBGL+v1WIGLC2npfLl5lAaOuyXqTS1xYHGyo291CEvSB3ZUiG44/rlN+MUt7DJzrpTVjQenQTeBYJyyrZvmK7Loo2x/G1sdm84rONXozH1OkkXOZn7hu2FUt+wPTLzWgkWxO2PcfN97NdYj+evj+FrIxMf2Z+/Pm6002/tsHZdkOu45hU5M1qAXPwzVli5DIxPboBGSmSYVMoabajxk2uYFKzapWKcXAMxTBboTOEmQyaytNy3/QmXt4dwOnDKgmsqZKPBZOjE5AY5djEqXe6fF9L3OPzeoNM4d021QE4yJr5rA4CPVAA64bZPFm+YxoNxmrFCJ5h18mKUtYk6PjvzvcH3kCwVEWkgplXLzEOB58TzQz46KvWh8YhXzRPUxnxfdrjO2QmJnxd2eiE6vaP7LwAA//+NIWzi" +} diff --git a/x-pack/filebeat/module/palo_alto/module.yml b/x-pack/filebeat/module/palo_alto/module.yml new file mode 100644 index 000000000000..b78832712d05 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/module.yml @@ -0,0 +1,3 @@ +dashboards: +# TODO + diff --git a/x-pack/filebeat/module/palo_alto/pan_os/_meta/fields.yml b/x-pack/filebeat/module/palo_alto/pan_os/_meta/fields.yml new file mode 100644 index 000000000000..0e7f15e7d391 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/_meta/fields.yml @@ -0,0 +1,124 @@ + - name: pan_os + type: group + description: > + Fields for the Palo Alto Networks PAN-OS logs. + fields: + - name: ruleset + type: keyword + description: > + Name of the rule that matched this session. + - name: source + type: group + description: > + Fields to extend the top-level source object. + fields: + - name: zone + type: keyword + description: > + Source zone for this session. + - name: interface + type: keyword + description: > + Source interface for this session. + - name: nat + type: group + description: > + Post-NAT source address, if source NAT is performed. + fields: + - name: ip + type: ip + description: > + Post-NAT source IP. + - name: port + type: long + description: > + Post-NAT source port. + + - name: destination + type: group + description: > + Fields to extend the top-level destination object. + fields: + - name: zone + type: keyword + description: > + Destination zone for this session. + - name: interface + type: keyword + description: > + Destination interface for this session. + - name: nat + type: group + description: > + Post-NAT destination address, if destination NAT is performed. + fields: + - name: ip + type: ip + description: > + Post-NAT destination IP. + - name: port + type: long + description: > + Post-NAT destination port. + + - name: network + type: group + description: > + Fields to extend the top-level network object. + fields: + - name: pcap_id + type: keyword + description: > + Packet capture ID for a threat. + + - name: nat + type: group + fields: + - name: community_id + type: keyword + description: > + Community ID flow-hash for the NAT 5-tuple. + + - name: file + type: group + description: > + Fields to extend the top-level file object. + fields: + - name: hash + description: > + Binary hash for a threat file sent to be analyzed + by the WildFire service. + type: keyword + + - name: url + type: group + description: > + Fields to extend the top-level url object. + fields: + - name: category + type: keyword + description: > + For threat URLs, it's the URL category. + For WildFire, the verdict on the file and is + either 'malicious', 'grayware', or 'benign'. + + - name: flow_id + type: keyword + description: > + Internal numeric identifier for each session. + + - name: sequence_number + type: long + description: > + Log entry identifier that is incremented sequentially. + Unique for each log type. + + - name: threat_file_or_url + type: keyword + description: > + URL or file name for a threat. + + - name: threat_id + type: keyword + description: > + Palo Alto Networks identifier for the threat. diff --git a/x-pack/filebeat/module/palo_alto/pan_os/config/input.yml b/x-pack/filebeat/module/palo_alto/pan_os/config/input.yml new file mode 100644 index 000000000000..be15016ae311 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/config/input.yml @@ -0,0 +1,160 @@ +{{ if eq .input "syslog" }} + +type: syslog +protocol.udp: + host: "{{.syslog_host}}:{{.syslog_port}}" + +{{ else if eq .input "file" }} + +type: log +paths: +{{ range $i, $path := .paths }} + - {{$path}} +{{ end }} +exclude_files: [".gz$"] + +{{ end }} + +tags: {{.tags}} + +processors: +{{ if .convert_timezone }} + - add_locale: ~ +{{ end }} + + - decode_csv_fields: + fields: + message: csv + + - extract_array: + field: csv + overwrite_keys: true + mappings: + event.created: 1 + observer.serial_number: 2 + _temp_.message_type: 3 + _temp_.message_subtype: 4 + _temp_.generated_time: 6 + + - extract_array: + when: + equals: + _temp_.message_type: TRAFFIC + field: csv + overwrite_keys: true + omit_empty: true + fail_on_error: false + mappings: + client.ip: 7 + source.ip: 7 + source.address: 7 + server.ip: 8 + destination.ip: 8 + destination.address: 8 + palo_alto.pan_os.source.nat.ip: 9 + palo_alto.pan_os.destination.nat.ip: 10 + palo_alto.pan_os.ruleset: 11 + client.user.name: 12 + source.user.name: 12 + server.user.name: 13 + destination.user.name: 13 + network.application: 14 + palo_alto.pan_os.source.zone: 16 + palo_alto.pan_os.destination.zone: 17 + palo_alto.pan_os.source.interface: 18 + palo_alto.pan_os.destination.interface: 19 + palo_alto.pan_os.flow_id: 22 + client.port: 24 + source.port: 24 + destination.port: 25 + server.port: 25 + palo_alto.pan_os.source.nat.port: 26 + palo_alto.pan_os.destination.nat.port: 27 + _temp_.labels: 28 + network.transport: 29 + event.outcome: 30 + network.bytes: 31 + client.bytes: 32 + destination.bytes: 32 + server.bytes: 33 + source.bytes: 33 + network.packets: 34 + event.start: 35 + event.duration: 36 + palo_alto.pan_os.url.category: 37 + palo_alto.pan_os.sequence_number: 39 + server.packets: 44 + destination.packets: 44 + client.packets: 45 + source.packets: 45 + observer.hostname: 52 + + - extract_array: + when: + equals: + _temp_.message_type: THREAT + field: csv + omit_empty: true + overwrite_keys: true + fail_on_error: false + mappings: + client.ip: 7 + source.ip: 7 + source.address: 7 + server.ip: 8 + destination.ip: 8 + destination.address: 8 + palo_alto.pan_os.source.nat.ip: 9 + palo_alto.pan_os.destination.nat.ip: 10 + palo_alto.pan_os.ruleset: 11 + client.user.name: 12 + source.user.name: 12 + server.user.name: 13 + destination.user.name: 13 + network.application: 14 + palo_alto.pan_os.source.zone: 16 + palo_alto.pan_os.destination.zone: 17 + palo_alto.pan_os.source.interface: 18 + palo_alto.pan_os.destination.interface: 19 + palo_alto.pan_os.flow_id: 22 + client.port: 24 + source.port: 24 + destination.port: 25 + server.port: 25 + palo_alto.pan_os.source.nat.port: 26 + palo_alto.pan_os.destination.nat.port: 27 + _temp_.labels: 28 + network.transport: 29 + event.outcome: 30 + palo_alto.pan_os.threat_file_or_url: 31 + url.original: 31 + palo_alto.pan_os.threat_id: 32 + palo_alto.pan_os.url.category: 33 + log.level: 34 + _temp_.direction: 35 + source.geo.country_iso_code: 38 + destination.geo.country_iso_code: 39 + palo_alto.pan_os.network.pcap_id: 42 + palo_alto.pan_os.file.hash: 43 + user_agent.original: 46 + file.type: 47 + network.forwarded_ip: 48 + http.request.referer: 49 + source.user.email: 50 + palo_alto.pan_os.subject: 51 + destination.user.email: 52 + observer.hostname: 59 + + - drop_fields: + fields: + - csv + + - community_id: ~ + + - community_id: + target: palo_alto.pan_os.network.nat.community_id + fields: + source_ip: palo_alto.pan_os.source.nat.ip + source_port: palo_alto.pan_os.source.nat.port + destination_ip: palo_alto.pan_os.destination.nat.ip + destination_port: palo_alto.pan_os.destination.nat.port diff --git a/x-pack/filebeat/module/palo_alto/pan_os/ingest/pipeline.yml b/x-pack/filebeat/module/palo_alto/pan_os/ingest/pipeline.yml new file mode 100644 index 000000000000..18da07007dae --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/ingest/pipeline.yml @@ -0,0 +1,322 @@ +description: "Pipeline for Palo Alto PAN-OS Logs" +processors: + +# keep message as log.original. + - rename: + field: message + target_field: log.original + +# Set @timestamp to the time when the entry was generated at the data plane. + - date: + field: "_temp_.generated_time" + ignore_failure: true + #{< if .convert_timezone >} + timezone: "{{ event.timezone }}" + #{< end >} + formats: + - "yyyy/MM/dd HH:mm:ss" + +# event.created is the time the event was received at the management plane. + - date: + field: "event.created" + target_field: "event.created" + ignore_failure: true + #{< if .convert_timezone >} + timezone: "{{ event.timezone }}" + #{< end >} + formats: + - "yyyy/MM/dd HH:mm:ss" + +# event.start (traffic only) is the time the session started. + - date: + field: "event.start" + target_field: "event.start" + ignore_failure: true + #{< if .convert_timezone >} + timezone: "{{ event.timezone }}" + #{< end >} + formats: + - "yyyy/MM/dd HH:mm:ss" + +# convert integer fields as the output of the CSV processor is always a string. + - convert: { type: long, ignore_missing: true, field: client.bytes } + - convert: { type: long, ignore_missing: true, field: client.packets } + - convert: { type: long, ignore_missing: true, field: client.port } + - convert: { type: long, ignore_missing: true, field: server.bytes } + - convert: { type: long, ignore_missing: true, field: server.packets } + - convert: { type: long, ignore_missing: true, field: server.port } + - convert: { type: long, ignore_missing: true, field: source.bytes } + - convert: { type: long, ignore_missing: true, field: source.packets } + - convert: { type: long, ignore_missing: true, field: source.port } + - convert: { type: long, ignore_missing: true, field: destination.bytes } + - convert: { type: long, ignore_missing: true, field: destination.packets } + - convert: { type: long, ignore_missing: true, field: destination.port } + - convert: { type: long, ignore_missing: true, field: network.bytes } + - convert: { type: long, ignore_missing: true, field: network.packets } + - convert: { type: long, ignore_missing: true, field: event.duration } + - convert: { type: long, ignore_missing: true, field: _temp_.labels } + - convert: { type: long, ignore_missing: true, field: palo_alto.pan_os.sequence_number } + - convert: { type: long, ignore_missing: true, field: palo_alto.pan_os.source.nat.port } + - convert: { type: long, ignore_missing: true, field: palo_alto.pan_os.destination.nat.port } + +# Remove PCAP ID when zero (no packet capture). + - remove: + if: 'ctx?.palo_alto?.pan_os?.network?.pcap_id == "0"' + field: + - palo_alto.pan_os.network.pcap_id + +# Extract 'flags' bitfield into labels. + - script: + lang: painless + if: 'ctx?._temp_?.labels != null && ctx._temp_.labels != 0' + params: + pcap_included: 0x80000000 + ipv6_session: 0x02000000 + ssl_decrypted: 0x01000000 + url_filter_denied: 0x00800000 + nat_translated: 0x00400000 + captive_portal: 0x00200000 + x_forwarded_for: 0x00080000 + http_proxy: 0x00040000 + container_page: 0x00008000 + temporary_match: 0x00002000 + symmetric_return: 0x00000800 + source: > + def labels = ctx?.labels; + if (labels == null) { + labels = new HashMap(); + ctx['labels'] = labels; + } + long value = ctx._temp_.labels; + for (entry in params.entrySet()) { + if ((value & entry.getValue()) != 0) { + labels[entry.getKey()] = true; + } + } + +# normalize event.duration and determine event.end. + - script: + lang: painless + if: 'ctx?.event?.duration != null' + params: + NANOS_IN_A_SECOND: 1000000000 + source: > + long nanos = ctx['event']['duration'] * params.NANOS_IN_A_SECOND; + ctx['event']['duration'] = nanos; + def start = ctx.event?.start; + if (start != null) { + ctx.event['end'] = ZonedDateTime.parse(start).plusNanos(nanos); + } + +# Set network.direction using src/dst zone (traffic logs). + - set: + field: network.direction + value: inbound + if: 'ctx?._temp_?.message_type == "TRAFFIC" && ctx?.palo_alto?.pan_os?.source?.zone == "untrust" && ctx?.palo_alto?.pan_os?.destination?.zone == "trust"' + - set: + field: network.direction + value: outbound + if: 'ctx?._temp_?.message_type == "TRAFFIC" && ctx?.palo_alto?.pan_os?.source?.zone == "trust" && ctx?.palo_alto?.pan_os?.destination?.zone == "untrust"' + - set: + field: network.direction + value: internal + if: 'ctx?._temp_?.message_type == "TRAFFIC" && ctx?.palo_alto?.pan_os?.source?.zone == "trust" && ctx?.palo_alto?.pan_os?.destination?.zone == "trust"' + - set: + field: network.direction + value: external + if: 'ctx?._temp_?.message_type == "TRAFFIC" && ctx?.palo_alto?.pan_os?.source?.zone == "untrust" && ctx?.palo_alto?.pan_os?.destination?.zone == "untrust"' + - set: + field: network.direction + value: unknown + if: 'ctx?._temp_?.message_type == "TRAFFIC" && ((ctx?.palo_alto?.pan_os?.source?.zone != "trust" && ctx?.palo_alto?.pan_os?.source?.zone != "untrust") || (ctx?.palo_alto?.pan_os?.destination?.zone != "trust" && ctx?.palo_alto?.pan_os?.destination?.zone != "untrust"))' + +# Set network.direction from threat direction (Threat logs). + - set: + field: network.direction + value: inbound + if: 'ctx?._temp_?.message_type == "THREAT" && (ctx?._temp_?.direction == "0" || ctx?._temp_?.direction == "client-to-server")' + + - set: + field: network.direction + value: outbound + if: 'ctx?._temp_?.message_type == "THREAT" && (ctx?._temp_?.direction == "1" || ctx?._temp_?.direction == "server-to-client")' + + - set: + field: network.direction + value: unknown + if: 'ctx?._temp_?.message_type == "THREAT" && ctx?.network?.direction == null' + +# Set event.category depending on log type. + - set: + field: event.category + value: network_traffic + if: 'ctx?._temp_?.message_type == "TRAFFIC"' + - set: + field: event.category + value: security_threat + if: 'ctx?._temp_?.message_type == "THREAT"' + + - drop: + if: 'ctx?.event?.category == null' + +# event.action for traffic logs. + - set: + field: event.action + value: flow_started + if: 'ctx?._temp_?.message_subtype == "start"' + - set: + field: event.action + value: flow_terminated + if: 'ctx?._temp_?.message_subtype == "end"' + - set: + field: event.action + value: flow_dropped + if: 'ctx?._temp_?.message_subtype == "drop"' + - set: + field: event.action + value: flow_denied + if: 'ctx?._temp_?.message_subtype == "deny"' + +# event.action for threat logs. + - set: + field: event.action + value: data_match + if: 'ctx?._temp_?.message_subtype == "data"' + - set: + field: event.action + value: file_match + if: 'ctx?._temp_?.message_subtype == "file"' + - set: + field: event.action + value: flood_detected + if: 'ctx?._temp_?.message_subtype == "flood"' + - set: + field: event.action + value: packet_attack + if: 'ctx?._temp_?.message_subtype == "packet"' + - set: + field: event.action + value: scan_detected + if: 'ctx?._temp_?.message_subtype == "scan"' + - set: + field: event.action + value: spyware_detected + if: 'ctx?._temp_?.message_subtype == "spyware"' + - set: + field: event.action + value: url_filtering + if: 'ctx?._temp_?.message_subtype == "url"' + - set: + field: event.action + value: virus_detected + if: 'ctx?._temp_?.message_subtype == "virus"' + - set: + field: event.action + value: exploit_detected + if: 'ctx?._temp_?.message_subtype == "vulnerability"' + - set: + field: event.action + value: wildfire_veredict + if: 'ctx?._temp_?.message_subtype == "wildfire"' + - set: + field: event.action + value: wildfire_virus_detected + if: 'ctx?._temp_?.message_subtype == "wildfire-virus"' + + +# Set numeric log.level from event.severity. + - set: + field: "event.severity" + if: 'ctx.log.level == "critical"' + value: 1 + - set: + field: "event.severity" + if: 'ctx.log.level == "high"' + value: 2 + - set: + field: "event.severity" + if: 'ctx.log.level == "medium"' + value: 3 + - set: + field: "event.severity" + if: 'ctx.log.level == "low"' + value: 4 + - set: + field: "event.severity" + if: 'ctx.log.level == "informational"' + value: 5 + +# Normalize event.outcome. +# These values appear in the TRAFFIC docs but look like a mistake. + - set: + field: event.outcome + value: 'drop-icmp' + if: 'ctx?.event?.outcome == "drop icmp" || ctx?.event?.outcome == "drop ICMP"' + - set: + field: event.outcome + value: 'reset-both' + if: 'ctx?.event?.outcome == "reset both"' + - set: + field: event.outcome + value: 'reset-client' + if: 'ctx?.event?.outcome == "reset client"' + - set: + field: event.outcome + value: 'reset-server' + if: 'ctx?.event?.outcome == "reset server"' + +# Build related.ip array from src/dest/NAT IPs. + - append: + if: 'ctx?.source?.ip != null' + field: related.ip + value: + - '{{source.ip}}' + - append: + if: 'ctx?.destination?.ip != null' + field: related.ip + value: + - '{{destination.ip}}' + - append: + if: 'ctx?.palo_alto?.pan_os?.source?.nat?.ip != null' + field: related.ip + value: + - '{{palo_alto.pan_os.source.nat.ip}}' + - append: + if: 'ctx?.palo_alto?.pan_os?.destination?.nat?.ip != null' + field: related.ip + value: + - '{{palo_alto.pan_os.destination.nat.ip}}' + +# Geolocation for source. + - geoip: + if: 'ctx?.source?.ip != null' + field: source.ip + target_field: source.geo + +# Geolocation for destination. + - geoip: + if: 'ctx?.destination?.ip != null' + field: destination.ip + target_field: destination.geo + +# Append NAT community_id to network.community_id + - append: + if: 'ctx?.palo_alto?.pan_os?.network?.nat?.community_id != null && ctx.palo_alto.pan_os.network.nat.community_id != ctx?.network?.community_id' + field: network.community_id + value: + - '{{palo_alto.pan_os.network.nat.community_id}}' + +# Remove temporary fields. + - remove: + field: + - _temp_ + ignore_missing: true + +on_failure: + - set: + field: "error.message" + value: "{{ _ingest.on_failure_message }}" + - remove: + field: + - _temp_ + ignore_missing: true diff --git a/x-pack/filebeat/module/palo_alto/pan_os/manifest.yml b/x-pack/filebeat/module/palo_alto/pan_os/manifest.yml new file mode 100644 index 000000000000..f6265abad1ec --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/manifest.yml @@ -0,0 +1,30 @@ +module_version: "1.0" + +var: + - name: paths + default: + - /var/log/pan-os.log + - name: tags + default: [pan-os] + - name: syslog_host + default: localhost + - name: syslog_port + default: 9001 + - name: input + default: syslog + - name: convert_timezone + default: false + # if ES < 6.1.0, this flag switches to false automatically when evaluating the + # pipeline + min_elasticsearch_version: + version: 6.1.0 + value: false + - name: community_id + default: true + +ingest_pipeline: ingest/pipeline.yml +input: config/input.yml + +requires.processors: +- name: geoip + plugin: ingest-geoip diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log new file mode 100644 index 000000000000..421c6f796a6c --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log @@ -0,0 +1,34 @@ +Mar 25 23:58:57 1,2013/03/25 23:58:57,1606001116,CONFIG,0,0,2012/02/25 00:51:50,192.168.0.2,,set,admin,Web,Succeeded, config shared local-user-database user badguy,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,CONFIG,0,0,2012/02/25 00:53:22,192.168.0.2,,set,admin,Web,Succeeded, config mgt-config users badguy,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,CONFIG,0,0,2012/02/25 00:53:40,192.168.0.2,,commit,admin,Web,Submitted,,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,SYSTEM,routing,0,2012/02/25 00:53:53,,routed-config-p1-success,,0,0,general,informational,Route daemon configuration load phase-1 succeeded.,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,SYSTEM,vpn,0,2012/02/25 00:53:56,,ike-config-p1-success,,0,0,general,informational,IKE daemon configuration load phase-1 succeeded.,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,SYSTEM,routing,0,2012/02/25 00:54:16,,routed-config-p2-success,,0,0,general,informational,Route daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,SYSTEM,ras,0,2012/02/25 00:54:16,,rasmgr-config-p2-success,,0,0,general,informational,RASMGR daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,CONFIG,0,0,2012/02/25 00:57:17,192.168.0.2,,edit,badguy,Web,Succeeded, vsys vsys1 profiles url-filtering monzyspolicy,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,CONFIG,0,0,2012/02/25 00:57:36,192.168.0.2,,commit,badguy,Web,Submitted,,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,SYSTEM,routing,0,2012/02/25 00:57:49,,routed-config-p1-success,,0,0,general,informational,Route daemon configuration load phase-1 succeeded.,0,0x0 +Mar 25 23:59:02 1,2013/03/25 23:59:02,1606001116,SYSTEM,vpn,0,2012/02/25 00:57:52,,ike-config-p1-success,,0,0,general,informational,IKE daemon configuration load phase-1 succeeded.,0,0x0 +Mar 25 23:59:07 1,2013/03/25 23:59:07,1606001116,SYSTEM,routing,0,2012/02/25 00:58:12,,routed-config-p2-success,,0,0,general,informational,Route daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:07 1,2013/03/25 23:59:07,1606001116,SYSTEM,vpn,0,2012/02/25 00:58:12,,ike-config-p2-success,,0,0,general,informational,IKE daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:07 1,2013/03/25 23:59:07,1606001116,SYSTEM,ras,0,2012/02/25 00:58:12,,rasmgr-config-p2-success,,0,0,general,informational,RASMGR daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:07 1,2013/03/25 23:59:07,1606001116,SYSTEM,general,1,2012/02/25 00:58:14,,unknown,,0,0,general,informational,Config installed,909,0x0 +Mar 25 23:59:07 1,2013/03/25 23:59:07,1606001116,SYSTEM,general,0,2012/02/25 00:59:36,,general,,0,0,general,informational,Log type config cleared by user badguy ,0,0x0 +Mar 25 23:59:22 1,2013/03/25 23:59:22,01606001116,SYSTEM,general,1,2012/04/10 03:11:57,,unknown,,0,0,general,informational,Config installed,884,0x0 +Mar 25 23:59:22 1,2013/03/25 23:59:22,01606001116,SYSTEM,ras,0,2012/04/10 03:11:56,,rasmgr-config-p2-success,,0,0,general,informational,RASMGR daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:22 1,2013/03/25 23:59:22,01606001116,SYSTEM,vpn,0,2012/04/10 03:11:56,,ike-config-p2-success,,0,0,general,informational,IKE daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:22 1,2013/03/25 23:59:22,01606001116,SYSTEM,routing,0,2012/04/10 03:11:56,,routed-config-p2-success,,0,0,general,informational,Route daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:22 1,2013/03/25 23:59:22,01606001116,SYSTEM,ras,0,2012/04/10 03:06:11,,rasmgr-config-p1-success,,0,0,general,informational,RASMGR daemon configuration load phase-1 succeeded.,0,0x0 +Mar 25 23:59:27 1,2013/03/25 23:59:27,01606001116,SYSTEM,routing,0,2012/04/10 03:06:00,,routed-config-p1-success,,0,0,general,informational,Route daemon configuration load phase-1 succeeded.,0,0x0 +Mar 25 23:59:27 1,2013/03/25 23:59:27,01606001116,SYSTEM,general,1,2012/04/09 09:02:53,,unknown,,0,0,general,informational,Config installed,840,0x0 +Mar 25 23:59:27 1,2013/03/25 23:59:27,01606001116,SYSTEM,ras,0,2012/04/09 09:02:52,,rasmgr-config-p2-success,,0,0,general,informational,RASMGR daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:27 1,2013/03/25 23:59:27,01606001116,SYSTEM,vpn,0,2012/04/09 09:02:52,,ike-config-p2-success,,0,0,general,informational,IKE daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:27 1,2013/03/25 23:59:27,01606001116,SYSTEM,routing,0,2012/04/09 09:02:52,,routed-config-p2-success,,0,0,general,informational,Route daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:27 1,2013/03/25 23:59:27,01606001116,SYSTEM,ras,0,2012/04/09 09:00:55,,rasmgr-config-p1-success,,0,0,general,informational,RASMGR daemon configuration load phase-1 succeeded.,0,0x0 +Mar 25 23:59:27 1,2013/03/25 23:59:27,01606001116,SYSTEM,vpn,0,2012/04/09 09:00:52,,ike-config-p1-success,,0,0,general,informational,IKE daemon configuration load phase-1 succeeded.,0,0x0 +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,CONFIG,0,0,2012/04/09 09:00:35,192.168.0.2,,commit,admin,Web,Submitted,,0,0x0 +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,CONFIG,0,0,2012/04/09 09:00:20,192.168.0.2,,edit,admin,Web,Succeeded, vsys vsys1 profiles data-objects PII,0,0x0 +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,SYSTEM,general,1,2012/04/09 03:21:53,,unknown,,0,0,general,informational,Config installed,821,0x0 +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,SYSTEM,ras,0,2012/04/09 03:21:53,,rasmgr-config-p2-success,,0,0,general,informational,RASMGR daemon configuration load phase-2 succeeded.,0,0x0 +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,SYSTEM,vpn,0,2012/04/09 03:21:53,,ike-config-p2-success,,0,0,general,informational,IKE daemon configuration load phase-2 succeeded.,0,0x0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,25149,1,59309,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log-expected.json new file mode 100644 index 000000000000..45de9e62f21d --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log-expected.json @@ -0,0 +1,75 @@ +[ + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59309, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:56.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:56.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 5853, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,25149,1,59309,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:mY2EPMYo0US42k87/2uTzjo/rGA=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25149", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59309, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + } +] \ No newline at end of file diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log new file mode 100644 index 000000000000..b493a709848f --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log @@ -0,0 +1,100 @@ +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25149,1,59309,80,0,0,0x208000,tcp,alert,"lorexx.cn/loader.exe",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,26067,1,59313,80,0,0,0x208000,tcp,alert,"lsiu.info/evo/count.php?o=2",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,26522,1,59314,80,0,0,0x208000,tcp,alert,"lsiu.info/evo/count.php?o=5",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25112,1,59315,80,0,0,0x208000,tcp,alert,"lsiu.info/evo/count.php?o=7",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25179,1,59316,80,0,0,0x208000,tcp,alert,"lsiu.info/evo/exploits/x18.php?o=2&t=1241403746&i=1365814122",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25848,1,59317,80,0,0,0x208000,tcp,alert,"lsiu.info/evo/exploits/x19.php?o=2&t=1241403746&i=1365814122",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,THREAT,url,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,24910,1,59302,80,0,0,0x208000,tcp,alert,"liteautobestguide.cn/load.php",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,THREAT,url,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26862,1,59301,80,0,0,0x208000,tcp,alert,"liteautobestguide.cn/index.php",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,THREAT,url,1,2012/04/10 04:39:55,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,22860,1,59303,80,0,0,0x208000,tcp,alert,"litetopdetect.cn/index.php",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,THREAT,url,1,2012/04/10 04:39:55,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26360,1,59304,80,0,0,0x208000,tcp,alert,"lkmpmlm.com/fff9999.php?aid=0&uid=6cbbc5081e7548e276611ff5059df6ed30c8f8f1&os=513",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,THREAT,url,1,2012/04/10 04:39:52,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25543,1,59297,80,0,0,0x208000,tcp,alert,"girlteenxxxfreemov.com/",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,THREAT,url,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,25437,1,59299,80,0,0,0x208000,tcp,alert,"imagesrepository.com/resolution.php",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,THREAT,url,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,26338,1,59298,80,0,0,0x208000,tcp,alert,"hottestfiles.com/search/search.php?q=xxx",(9999),search-engines,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,THREAT,url,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,25713,1,59300,80,0,0,0x200000,tcp,block-url,"infodist1.com/in.cgi?11¶meter=404",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,THREAT,url,1,2012/04/10 04:39:51,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25451,1,59295,80,0,0,0x208000,tcp,alert,"cls-softwares.com/suc.php",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,THREAT,url,1,2012/04/10 04:39:51,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26414,1,59291,80,0,0,0x208000,tcp,alert,"cls-softwares.com/softwarefortubeview.40013.exe",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,THREAT,url,1,2012/04/10 04:39:52,192.168.0.2,78.159.99.224,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26927,1,59296,80,0,0,0x200000,tcp,block-url,"findmorepill.com/klik/search.php?q=xxx",(9999),online-gambling,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Germany,0, +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,26127,1,59280,80,0,0,0x208000,tcp,alert,"allowedwebsurfing.com/",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:49,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,25306,1,59281,80,0,0,0x208000,tcp,alert,"antivirus-remote.com/",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:49,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24561,1,59282,80,0,0,0x208000,tcp,alert,"bklinkov.ru/hi/start.cfg",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,15099,1,59290,80,0,0,0x208000,tcp,alert,"blogsexnakedgirlxxx.com/",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24955,1,59286,80,0,0,0x208000,tcp,alert,"bklinkov.ru/hi/start.exe",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,25398,1,59275,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,25945,1,59277,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,27111,1,59276,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25871,1,59278,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26251,1,59279,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:45,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,24816,1,59271,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:45,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,25062,1,59269,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:45,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,26266,1,59270,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:46,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,23898,1,59274,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:46,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25259,1,59273,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:46,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,26466,1,59272,80,0,0,0x208000,tcp,alert,"-/",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html +Oct 30 09:46:47 1,2012/10/30 09:46:47,01606001116,THREAT,url,1,2012/04/10 04:39:43,192.168.0.2,69.43.161.167,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:44,4086,1,59261,80,0,0,0x200000,tcp,block-url,"wantfinest.com/tds/in.cgi?default",(9999),unknown,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:47:02 1,2012/10/30 09:47:02,01606001116,THREAT,url,1,2012/04/10 04:39:38,192.168.0.2,202.31.187.154,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:39,26534,1,59248,80,0,0,0x200000,tcp,block-url,"sameshitasiteverwas.com/traf/tds/in.cgi?2",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Korea Republic Of,0, +Oct 30 09:47:02 1,2012/10/30 09:47:02,01606001116,THREAT,url,1,2012/04/10 04:39:39,192.168.0.2,89.111.176.67,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:40,26965,1,59251,80,0,0,0x200000,tcp,block-url,"svarkon.ru/update.exe",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0, +Oct 30 09:47:12 1,2012/10/30 09:47:12,01606001116,THREAT,url,1,2012/04/10 04:39:36,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:37,26076,1,59244,80,0,0,0x200000,tcp,block-url,"onlinescanxpp.com/land/eurl/1.php?code=",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:47:17 1,2012/10/30 09:47:17,01606001116,THREAT,url,1,2012/04/10 04:39:34,192.168.0.2,208.73.210.29,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:35,26198,1,59237,80,0,0,0x200000,tcp,block-url,"nolagtime.com/conn/?JKV_1RWbUUdIfRUWUaITfdIfbREdYEYdfTTRI-6XBB_1WQR-6GF5_1AU-6LC6_1Y-gW-gEUQQ-gE-tsDF6K5D_rpX51_rR-t-66FC_1Q_fQ_fQ_fQ_fQ_fQ_fQ_fQ-62BG_1Q-672V_1YOR-6N8J_1Q-6252_1WQRR-69LV_1-65GZ_1W-6",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:47:17 1,2012/10/30 09:47:17,01606001116,THREAT,url,1,2012/04/10 04:39:35,192.168.0.2,208.73.210.29,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:36,26056,1,59238,80,0,0,0x200000,tcp,block-url,"nolagtime.com/gwc.txt",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:51:03 1,2012/10/30 09:51:03,01606001116,THREAT,url,1,2012/04/10 04:38:19,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:38:20,25465,1,59010,80,0,0,0x200000,tcp,block-url,"karavan.us/bon/index.php",(9999),unknown,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:51:23 1,2012/10/30 09:51:23,01606001116,THREAT,url,1,2012/04/10 04:38:14,192.168.0.2,208.73.210.29,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:38:15,24316,1,58969,80,0,0,0x200000,tcp,block-url,"findnolimits.com/go.php?sid=1",(9999),dead-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:51:33 1,2012/10/30 09:51:33,01606001116,THREAT,url,1,2012/04/10 04:38:12,192.168.0.2,89.108.64.156,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:38:13,17258,1,58941,80,0,0,0x200000,tcp,block-url,"bizoplata.ru/moun.html",(9999),parked-domains,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0, +Oct 30 09:51:33 1,2012/10/30 09:51:33,01606001116,THREAT,url,1,2012/04/10 04:38:12,192.168.0.2,89.108.64.156,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:38:13,24735,1,58942,80,0,0,0x200000,tcp,block-url,"bizoplata.ru/palast.html",(9999),parked-domains,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0, +Oct 30 09:53:33 1,2012/10/30 09:53:33,01606001116,THREAT,spyware,1,2012/04/10 04:37:28,204.232.231.46,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:33,23497,1,80,58849,0,0,0x200000,tcp,drop-all-packets,"controller.php",Bredolab.Gen Command and Control Traffic(13024),any,critical,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Oct 30 09:53:38 1,2012/10/30 09:53:38,01606001116,THREAT,url,1,2012/04/10 04:37:32,192.168.0.2,216.8.179.25,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:32,23711,1,58856,80,0,0,0x200000,tcp,block-url,"www.15min.it/",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Canada,0, +Oct 30 09:53:48 1,2012/10/30 09:53:48,01606001116,THREAT,url,1,2012/04/10 04:37:27,192.168.0.2,69.43.161.154,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:27,23659,1,58847,80,0,0,0x200000,tcp,block-url,"tubemov.com/",(9999),adult-and-pornography,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:53:58 1,2012/10/30 09:53:58,01606001116,THREAT,url,1,2012/04/10 04:37:25,192.168.0.2,208.91.196.252,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:25,23782,1,58841,80,0,0,0x200000,tcp,block-url,"pagesinxt.com/?dn=teenstube.us&flrdr=yes&nxte=js",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Virgin Islands British,0, +Oct 30 09:55:23 1,2012/10/30 09:55:23,01606001116,THREAT,url,1,2012/04/10 04:37:05,192.168.0.2,208.73.210.29,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:06,23239,1,58795,80,0,0,0x200000,tcp,block-url,"movfree.com/",(9999),spyware-and-adware,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:56:23 1,2012/10/30 09:56:23,01606001116,THREAT,url,1,2012/04/10 04:36:51,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:52,22479,1,58753,80,0,0,0x200000,tcp,block-url,"gometascan.com/",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:57:33 1,2012/10/30 09:57:33,01606001116,THREAT,url,1,2012/04/10 04:36:39,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:40,21458,1,58708,80,0,0,0x200000,tcp,block-url,"antivirus-powerful-scannerv2.com/download/Install_11-1.exe",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Oct 30 09:57:38 1,2012/10/30 09:57:38,01606001116,THREAT,url,1,2012/04/10 04:36:38,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:39,21577,1,58707,80,0,0,0x200000,tcp,block-url,"antivirus-powerful-scannerv2.com/1/?id=11-1&back==TQzyDTyMUQNMI=N",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:58:52 1,2013/03/25 23:58:52,1606001116,THREAT,url,1,2012/04/10 04:36:27,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:28,21487,1,58603,80,0,0,0x200000,tcp,block-url,"basdzsdas.com/poker/config.bin",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:58:52 1,2013/03/25 23:58:52,1606001116,THREAT,url,1,2012/04/10 04:36:27,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:28,21487,1,58603,80,0,0,0x200000,tcp,block-url,"basdzsdas.com/poker/config.bin",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:58:57 1,2013/03/25 23:58:57,1606001116,THREAT,file,1,2012/04/10 04:19:59,173.236.179.57,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:20:05,64856,1,80,54431,0,0,0x200000,tcp,deny,"uLLGRaXP.exe",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:58:57 1,2013/03/25 23:58:57,1606001116,THREAT,url,1,2012/04/10 04:36:27,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:28,21487,1,58603,80,0,0,0x200000,tcp,block-url,"basdzsdas.com/poker/config.bin",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:07 1,2013/03/25 23:59:07,01606001116,THREAT,file,1,2012/04/10 04:51:29,91.209.163.202,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:51:34,37983,1,80,61220,0,0,0x200000,tcp,deny,"FunkyEmoticons_setup.exe",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,European Union,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:07 1,2013/03/25 23:59:07,01606001116,THREAT,file,1,2012/04/10 04:54:33,122.226.169.183,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:54:38,41989,1,80,61726,0,0,0x200000,tcp,deny,"52hxw.exe",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,China,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:07 1,2013/03/25 23:59:07,01606001116,THREAT,url,1,2012/04/10 05:01:00,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 05:01:00,49238,1,63007,80,0,0,0x200000,tcp,block-url,"softsellfast.com/test/config.bin",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,file,1,2012/04/10 04:45:17,109.201.131.15,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:45:23,21592,1,80,60212,0,0,0x200000,tcp,deny,"setup.exe",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,Netherlands,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,file,1,2012/04/10 04:46:16,91.209.163.202,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:46:22,33760,1,80,60392,0,0,0x200000,tcp,deny,"Live-Player_setup.exe",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,European Union,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,url,1,2012/04/10 04:42:39,192.168.0.2,213.180.199.61,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:42:39,28723,1,59709,80,0,0,0x200000,tcp,block-url,"boialex.narod.ru/config.txt",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0, +Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,url,1,2012/04/10 04:42:42,192.168.0.2,213.180.199.61,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:42:42,28932,1,59721,80,0,0,0x200000,tcp,block-url,"edw-melon.narod.ru/config.txt",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0, +Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,url,1,2012/04/10 04:42:51,192.168.0.2,213.180.199.61,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:42:51,28953,1,59752,80,0,0,0x200000,tcp,block-url,"maximtushin.narod.ru/config.txt",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0, +Mar 25 23:59:17 1,2013/03/25 23:59:17,01606001116,THREAT,file,1,2012/04/10 04:19:59,173.236.179.57,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:20:05,64856,1,80,54431,0,0,0x200000,tcp,deny,"uLLGRaXP.exe",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:22 1,2013/03/25 23:59:22,01606001116,THREAT,url,1,2012/04/10 04:09:01,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:09:01,55402,1,63183,80,0,0,0x200000,tcp,block-url,"marketingsoluchion.biz/fkn/config.bin",(9999),unknown,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:27,192.168.0.6,207.46.140.46,0.0.0.0,0.0.0.0,rule1,jordy,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:32,25217,1,1047,80,0,0,0x200000,tcp,alert,"default.aspx",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:29,65.54.161.34,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:34,25653,1,80,1039,0,0,0x200000,tcp,alert,"sck.aspx",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:32,65.55.5.231,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:37,25717,3,80,1064,0,0,0x200000,tcp,alert,"ADSAdClient31.dll",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:33,192.168.0.6,65.54.71.11,0.0.0.0,0.0.0.0,rule1,jordy,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:38,25290,1,1048,80,0,0,0x200000,tcp,alert,"c.gif",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:37,74.125.239.17,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:42,25932,1,80,1071,0,0,0x200000,tcp,alert,"csi",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:50:12,192.168.0.2,208.85.40.48,0.0.0.0,0.0.0.0,rule1,picard,,pandora,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:50:17,28264,1,57502,80,0,0,0x200000,tcp,alert,"internal-tuner.pandora.com",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:58:18,74.125.224.198,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:58:22,29312,1,80,57876,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,file,1,2012/04/09 08:22:27,188.190.124.75,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:22:31,26747,1,80,1082,0,0,0x200000,tcp,deny,"about.exe",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,Ukraine,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:11:43,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:11:48,19205,1,80,50986,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:14:02,74.125.239.3,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:14:07,19360,1,80,51716,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:14:39,74.125.239.3,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:14:44,19696,1,80,52119,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:16:03,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:16:08,19679,1,80,52411,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:18:14,192.168.0.2,74.125.239.6,0.0.0.0,0.0.0.0,rule1,picard,,google-analytics,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:18:19,19448,1,52366,80,0,0,0x200000,tcp,alert,"__utm.gif",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:25:04,74.125.224.193,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:25:09,20422,1,80,53026,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:36:04,74.125.239.20,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:36:09,21267,1,80,53809,0,0,0x200000,tcp,alert,"nav_logo107.png",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 08:08:08,208.80.154.225,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:08:13,24567,1,80,55912,0,0,0x200000,tcp,alert,"Eadweard_Muybridge",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 08:08:44,208.80.154.234,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:08:49,24646,1,80,55916,0,0,0x200000,tcp,alert,"load.php",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 08:16:57,65.54.75.25,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:17:01,25874,1,80,1046,0,0,0x200000,tcp,reset-both,"8fe44cb728c0f40750c64ee906eb72.css",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 04:06:41,74.125.224.206,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 04:06:46,2175,1,80,61734,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 04:12:52,74.125.224.195,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 04:12:57,3046,1,80,62292,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:07:49,207.178.96.34,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,rss,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:07:54,1560,1,80,64669,0,0,0x200000,tcp,alert,"appcast.xml",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:48:44,74.125.224.195,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:48:48,16852,1,80,65265,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:48:59,74.125.239.20,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:49:05,15948,1,80,64979,0,0,0x200000,tcp,alert,"csi",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:50:14,66.152.109.24,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:50:19,17028,1,80,49432,0,0,0x200000,tcp,alert,"index.php",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:51:34,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:51:39,15878,1,80,49722,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:53:41,192.168.0.2,74.125.224.201,0.0.0.0,0.0.0.0,rule1,picard,,google-analytics,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:53:47,16602,1,49681,80,0,0,0x200000,tcp,alert,"__utm.gif",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:54:35,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:54:41,17433,1,80,50108,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:54:55,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:55:00,17104,1,80,50387,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:44:49,192.168.0.2,208.85.40.48,0.0.0.0,0.0.0.0,rule1,jordy,,pandora,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:44:55,63706,1,59781,80,0,0,0x200000,tcp,alert,"internal-tuner.pandora.com",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0, +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:45:45,74.125.224.201,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:45:50,65257,1,80,60005,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:49:17,74.125.224.201,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:49:22,537,1,80,60443,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:53:41,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:53:45,914,1,80,60822,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:55:23,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:55:28,1475,1,80,61105,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:55:52,74.125.224.198,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-analytics,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:55:57,883,1,80,60782,0,0,0x200000,tcp,alert,"ga.js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, +Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 04:03:55,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 04:04:00,1965,1,80,61470,0,0,0x200000,tcp,reset-both,"js",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0, diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log-expected.json new file mode 100644 index 000000000000..29373236d667 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log-expected.json @@ -0,0 +1,6385 @@ +[ + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.ip": "192.168.0.2", + "client.port": 59309, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 0, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25149,1,59309,80,0,0,0x208000,tcp,alert,\"lorexx.cn/loader.exe\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:mY2EPMYo0US42k87/2uTzjo/rGA=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25149", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "lorexx.cn/loader.exe", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59309, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "lorexx.cn/loader.exe" + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.ip": "192.168.0.2", + "client.port": 59313, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 403, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,26067,1,59313,80,0,0,0x208000,tcp,alert,\"lsiu.info/evo/count.php?o=2\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:0fIOSC1t62T9ExNKvZaxl657EVc=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26067", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/count.php?o=2", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59313, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "lsiu.info/evo/count.php?o=2" + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.ip": "192.168.0.2", + "client.port": 59314, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 813, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,26522,1,59314,80,0,0,0x208000,tcp,alert,\"lsiu.info/evo/count.php?o=5\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:bZl1JgwyPgfsbSrD+z8I/hpbdc4=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26522", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/count.php?o=5", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59314, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "lsiu.info/evo/count.php?o=5" + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.ip": "192.168.0.2", + "client.port": 59315, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 1223, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25112,1,59315,80,0,0,0x208000,tcp,alert,\"lsiu.info/evo/count.php?o=7\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:ghLw4NDj0JmAhH9lVtlhdQpqEQ0=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25112", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/count.php?o=7", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59315, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "lsiu.info/evo/count.php?o=7" + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.ip": "192.168.0.2", + "client.port": 59316, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 1633, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25179,1,59316,80,0,0,0x208000,tcp,alert,\"lsiu.info/evo/exploits/x18.php?o=2&t=1241403746&i=1365814122\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:aiB5YppFUGX0pM/1Xtp3qOSFXJw=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25179", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/exploits/x18.php?o=2&t=1241403746&i=1365814122", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59316, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "lsiu.info/evo/exploits/x18.php?o=2&t=1241403746&i=1365814122" + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.ip": "192.168.0.2", + "client.port": 59317, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 2076, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,THREAT,url,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25848,1,59317,80,0,0,0x208000,tcp,alert,\"lsiu.info/evo/exploits/x19.php?o=2&t=1241403746&i=1365814122\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:GOqfpUTezPkpm6axBI22kY90kU4=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25848", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/exploits/x19.php?o=2&t=1241403746&i=1365814122", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59317, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "lsiu.info/evo/exploits/x19.php?o=2&t=1241403746&i=1365814122" + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.ip": "192.168.0.2", + "client.port": 59302, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 2519, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,THREAT,url,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,24910,1,59302,80,0,0,0x208000,tcp,alert,\"liteautobestguide.cn/load.php\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:22ouAyA1O0KgUQOEKP20E7gNa2U=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24910", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "liteautobestguide.cn/load.php", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59302, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "liteautobestguide.cn/load.php" + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.ip": "192.168.0.2", + "client.port": 59301, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 2931, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,THREAT,url,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26862,1,59301,80,0,0,0x208000,tcp,alert,\"liteautobestguide.cn/index.php\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:phQpgsVhj3YxNYzeNkqdzDgcMCg=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26862", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "liteautobestguide.cn/index.php", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59301, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "liteautobestguide.cn/index.php" + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.ip": "192.168.0.2", + "client.port": 59303, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 3344, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,THREAT,url,1,2012/04/10 04:39:55,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,22860,1,59303,80,0,0,0x208000,tcp,alert,\"litetopdetect.cn/index.php\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:6kV576B7jMsBLC62npA6Dgi/zMI=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "22860", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "litetopdetect.cn/index.php", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59303, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "litetopdetect.cn/index.php" + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.ip": "192.168.0.2", + "client.port": 59304, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 3753, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,THREAT,url,1,2012/04/10 04:39:55,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26360,1,59304,80,0,0,0x208000,tcp,alert,\"lkmpmlm.com/fff9999.php?aid=0&uid=6cbbc5081e7548e276611ff5059df6ed30c8f8f1&os=513\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:h+XKHvMK2Oz7QQvaJdhsJWE2c9E=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26360", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "lkmpmlm.com/fff9999.php?aid=0&uid=6cbbc5081e7548e276611ff5059df6ed30c8f8f1&os=513", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59304, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "lkmpmlm.com/fff9999.php?aid=0&uid=6cbbc5081e7548e276611ff5059df6ed30c8f8f1&os=513" + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.ip": "192.168.0.2", + "client.port": 59297, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 4217, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,THREAT,url,1,2012/04/10 04:39:52,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25543,1,59297,80,0,0,0x208000,tcp,alert,\"girlteenxxxfreemov.com/\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:Sa+u435/AIAAeEelFduJmiGLOv0=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25543", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "girlteenxxxfreemov.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59297, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "girlteenxxxfreemov.com/" + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.ip": "192.168.0.2", + "client.port": 59299, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 4623, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,THREAT,url,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,25437,1,59299,80,0,0,0x208000,tcp,alert,\"imagesrepository.com/resolution.php\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:C9009xCOuCuGvMPT4caMCizoYr0=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25437", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "imagesrepository.com/resolution.php", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59299, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "imagesrepository.com/resolution.php" + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.ip": "192.168.0.2", + "client.port": 59298, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 5041, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,THREAT,url,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,26338,1,59298,80,0,0,0x208000,tcp,alert,\"hottestfiles.com/search/search.php?q=xxx\",(9999),search-engines,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:BG6Rk6e+H9jRcZHXqRPFG4iA3uU=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26338", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "hottestfiles.com/search/search.php?q=xxx", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "search-engines", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59298, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "hottestfiles.com/search/search.php?q=xxx" + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.ip": "192.168.0.2", + "client.port": 59300, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 5466, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,THREAT,url,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,25713,1,59300,80,0,0,0x200000,tcp,block-url,\"infodist1.com/in.cgi?11¶meter=404\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:YDMNSbru670DK5EMT3E28WFJPz4=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25713", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "infodist1.com/in.cgi?11¶meter=404", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59300, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "infodist1.com/in.cgi?11¶meter=404" + }, + { + "@timestamp": "2012-04-10T04:39:51.000Z", + "client.ip": "192.168.0.2", + "client.port": 59295, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 5882, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,THREAT,url,1,2012/04/10 04:39:51,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25451,1,59295,80,0,0,0x208000,tcp,alert,\"cls-softwares.com/suc.php\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:AEtFqIuwxZ9TQ3w9m74nOrboCXE=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25451", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "cls-softwares.com/suc.php", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59295, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "cls-softwares.com/suc.php" + }, + { + "@timestamp": "2012-04-10T04:39:51.000Z", + "client.ip": "192.168.0.2", + "client.port": 59291, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 6290, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,THREAT,url,1,2012/04/10 04:39:51,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26414,1,59291,80,0,0,0x208000,tcp,alert,\"cls-softwares.com/softwarefortubeview.40013.exe\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:AuQEAPptnfXLW8oL/ac3CM4Gnnw=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26414", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "cls-softwares.com/softwarefortubeview.40013.exe", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59291, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "cls-softwares.com/softwarefortubeview.40013.exe" + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.ip": "192.168.0.2", + "client.port": 59296, + "client.user.name": "crusher", + "destination.address": "78.159.99.224", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "DE", + "destination.geo.location.lat": 51.2993, + "destination.geo.location.lon": 9.491, + "destination.ip": "78.159.99.224", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 6720, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,THREAT,url,1,2012/04/10 04:39:52,192.168.0.2,78.159.99.224,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26927,1,59296,80,0,0,0x200000,tcp,block-url,\"findmorepill.com/klik/search.php?q=xxx\",(9999),online-gambling,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Germany,0,", + "network.application": "web-browsing", + "network.community_id": "1:v73LbTZDPLO+1dzNRixeZAmolJ0=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26927", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "findmorepill.com/klik/search.php?q=xxx", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "online-gambling", + "related.ip": [ + "192.168.0.2", + "78.159.99.224", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "78.159.99.224", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59296, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "findmorepill.com/klik/search.php?q=xxx" + }, + { + "@timestamp": "2012-04-10T04:39:48.000Z", + "client.ip": "192.168.0.2", + "client.port": 59280, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 7132, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,26127,1,59280,80,0,0,0x208000,tcp,alert,\"allowedwebsurfing.com/\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:IRI0j5xLyLhwaONpy7gVZdl/Qow=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26127", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "allowedwebsurfing.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59280, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "allowedwebsurfing.com/" + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.ip": "192.168.0.2", + "client.port": 59281, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 7537, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:49,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,25306,1,59281,80,0,0,0x208000,tcp,alert,\"antivirus-remote.com/\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:/tG+YfZ8qFKrUDfQ7EThCBXci9Y=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25306", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "antivirus-remote.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59281, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "antivirus-remote.com/" + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.ip": "192.168.0.2", + "client.port": 59282, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 7941, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:49,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24561,1,59282,80,0,0,0x208000,tcp,alert,\"bklinkov.ru/hi/start.cfg\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:Vfi4CxQayypb3DoxclNfeNjXdjo=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24561", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "bklinkov.ru/hi/start.cfg", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59282, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "bklinkov.ru/hi/start.cfg" + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.ip": "192.168.0.2", + "client.port": 59290, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 8348, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,15099,1,59290,80,0,0,0x208000,tcp,alert,\"blogsexnakedgirlxxx.com/\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:2UbFMV1DsXMB0b/AUotNCCsHm0s=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "15099", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "blogsexnakedgirlxxx.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59290, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "blogsexnakedgirlxxx.com/" + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.ip": "192.168.0.2", + "client.port": 59286, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 8755, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,THREAT,url,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24955,1,59286,80,0,0,0x208000,tcp,alert,\"bklinkov.ru/hi/start.exe\",(9999),not-resolved,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:M8DHGZjrHyuCRpC9MNNfDUke5g4=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24955", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "bklinkov.ru/hi/start.exe", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59286, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "bklinkov.ru/hi/start.exe" + }, + { + "@timestamp": "2012-04-10T04:39:47.000Z", + "client.ip": "192.168.0.2", + "client.port": 59275, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 9162, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,25398,1,59275,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:AVMiOufq2owuhWpcu/TfRJ38tv4=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25398", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59275, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:47.000Z", + "client.ip": "192.168.0.2", + "client.port": 59277, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 9555, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,25945,1,59277,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:/+Opb16c1ye6uLeu1/TNC+SGnYs=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25945", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59277, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:47.000Z", + "client.ip": "192.168.0.2", + "client.port": 59276, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 9948, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,27111,1,59276,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:uslltTePy/m8Gxhk/MgPbZfk6Rg=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "27111", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59276, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:48.000Z", + "client.ip": "192.168.0.2", + "client.port": 59278, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 10341, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25871,1,59278,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:WiUImNtgjkeNDi1Qigg7+Y6pDAg=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25871", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59278, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:48.000Z", + "client.ip": "192.168.0.2", + "client.port": 59279, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 10734, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,THREAT,url,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26251,1,59279,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:FmIwID3HJ4Q0574SjlhMHApz/Hs=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26251", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59279, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:45.000Z", + "client.ip": "192.168.0.2", + "client.port": 59271, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 11127, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:45,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,24816,1,59271,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:6AuZBrHKsUJjLNgm/mJ5QToaPo8=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24816", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59271, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:45.000Z", + "client.ip": "192.168.0.2", + "client.port": 59269, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 11520, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:45,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,25062,1,59269,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:NwAT+gtzMjRwKS71Tn+YaKwyOvI=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25062", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59269, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:45.000Z", + "client.ip": "192.168.0.2", + "client.port": 59270, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 11913, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:45,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,26266,1,59270,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:mTTbk9h6Dgx6lH3l4aEHguufZVE=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26266", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59270, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:46.000Z", + "client.ip": "192.168.0.2", + "client.port": 59274, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 12306, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:46,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,23898,1,59274,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:/0xM0KlMLwieymkDApfqS3/WWiQ=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23898", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59274, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:46.000Z", + "client.ip": "192.168.0.2", + "client.port": 59273, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 12699, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:46,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25259,1,59273,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:VLKKVfau50s2qjTDcucU+VKCAqY=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25259", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59273, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:46.000Z", + "client.ip": "192.168.0.2", + "client.port": 59272, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "labels.container_page": true, + "log.level": "informational", + "log.offset": 13092, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,THREAT,url,1,2012/04/10 04:39:46,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,26466,1,59272,80,0,0,0x208000,tcp,alert,\"-/\",(9999),private-ip-addresses,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,text/html", + "network.application": "web-browsing", + "network.community_id": "1:jAvA0C85T0GFKryKA312lLEtKIM=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26466", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "-/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59272, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "-/" + }, + { + "@timestamp": "2012-04-10T04:39:43.000Z", + "client.ip": "192.168.0.2", + "client.port": 59261, + "client.user.name": "crusher", + "destination.address": "69.43.161.167", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "69.43.161.167", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 13485, + "log.original": "Oct 30 09:46:47 1,2012/10/30 09:46:47,01606001116,THREAT,url,1,2012/04/10 04:39:43,192.168.0.2,69.43.161.167,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:44,4086,1,59261,80,0,0,0x200000,tcp,block-url,\"wantfinest.com/tds/in.cgi?default\",(9999),unknown,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:Jqiwb/u74kolY3Y1yGkp+oMAxT4=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "4086", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "wantfinest.com/tds/in.cgi?default", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "unknown", + "related.ip": [ + "192.168.0.2", + "69.43.161.167", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "69.43.161.167", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59261, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "wantfinest.com/tds/in.cgi?default" + }, + { + "@timestamp": "2012-04-10T04:39:38.000Z", + "client.ip": "192.168.0.2", + "client.port": 59248, + "client.user.name": "crusher", + "destination.address": "202.31.187.154", + "destination.geo.continent_name": "Asia", + "destination.geo.country_iso_code": "KR", + "destination.geo.location.lat": 37.5112, + "destination.geo.location.lon": 126.97409999999999, + "destination.ip": "202.31.187.154", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 13889, + "log.original": "Oct 30 09:47:02 1,2012/10/30 09:47:02,01606001116,THREAT,url,1,2012/04/10 04:39:38,192.168.0.2,202.31.187.154,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:39,26534,1,59248,80,0,0,0x200000,tcp,block-url,\"sameshitasiteverwas.com/traf/tds/in.cgi?2\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Korea Republic Of,0,", + "network.application": "web-browsing", + "network.community_id": "1:q84mXt2kLt843wk0Y5vtvJwq+bc=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26534", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "sameshitasiteverwas.com/traf/tds/in.cgi?2", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "202.31.187.154", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "202.31.187.154", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59248, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "sameshitasiteverwas.com/traf/tds/in.cgi?2" + }, + { + "@timestamp": "2012-04-10T04:39:39.000Z", + "client.ip": "192.168.0.2", + "client.port": 59251, + "client.user.name": "crusher", + "destination.address": "89.111.176.67", + "destination.geo.city_name": "Moscow", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "RU", + "destination.geo.location.lat": 55.7522, + "destination.geo.location.lon": 37.6156, + "destination.geo.region_iso_code": "RU-MOW", + "destination.geo.region_name": "Moscow", + "destination.ip": "89.111.176.67", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 14313, + "log.original": "Oct 30 09:47:02 1,2012/10/30 09:47:02,01606001116,THREAT,url,1,2012/04/10 04:39:39,192.168.0.2,89.111.176.67,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:40,26965,1,59251,80,0,0,0x200000,tcp,block-url,\"svarkon.ru/update.exe\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0,", + "network.application": "web-browsing", + "network.community_id": "1:1jDSU+BTdTOAQSrWGRbSjxehwNg=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26965", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "svarkon.ru/update.exe", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "89.111.176.67", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "89.111.176.67", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59251, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "svarkon.ru/update.exe" + }, + { + "@timestamp": "2012-04-10T04:39:36.000Z", + "client.ip": "192.168.0.2", + "client.port": 59244, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 14717, + "log.original": "Oct 30 09:47:12 1,2012/10/30 09:47:12,01606001116,THREAT,url,1,2012/04/10 04:39:36,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:37,26076,1,59244,80,0,0,0x200000,tcp,block-url,\"onlinescanxpp.com/land/eurl/1.php?code=\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:vGp9HpobYZmzzLGyDAG6oVAe4dg=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26076", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "onlinescanxpp.com/land/eurl/1.php?code=", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59244, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "onlinescanxpp.com/land/eurl/1.php?code=" + }, + { + "@timestamp": "2012-04-10T04:39:34.000Z", + "client.ip": "192.168.0.2", + "client.port": 59237, + "client.user.name": "crusher", + "destination.address": "208.73.210.29", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "208.73.210.29", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 15135, + "log.original": "Oct 30 09:47:17 1,2012/10/30 09:47:17,01606001116,THREAT,url,1,2012/04/10 04:39:34,192.168.0.2,208.73.210.29,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:35,26198,1,59237,80,0,0,0x200000,tcp,block-url,\"nolagtime.com/conn/?JKV_1RWbUUdIfRUWUaITfdIfbREdYEYdfTTRI-6XBB_1WQR-6GF5_1AU-6LC6_1Y-gW-gEUQQ-gE-tsDF6K5D_rpX51_rR-t-66FC_1Q_fQ_fQ_fQ_fQ_fQ_fQ_fQ-62BG_1Q-672V_1YOR-6N8J_1Q-6252_1WQRR-69LV_1-65GZ_1W-6\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:8JiI5Ka3Oyz6yaLm3xObTqAo/Jw=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26198", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "nolagtime.com/conn/?JKV_1RWbUUdIfRUWUaITfdIfbREdYEYdfTTRI-6XBB_1WQR-6GF5_1AU-6LC6_1Y-gW-gEUQQ-gE-tsDF6K5D_rpX51_rR-t-66FC_1Q_fQ_fQ_fQ_fQ_fQ_fQ_fQ-62BG_1Q-672V_1YOR-6N8J_1Q-6252_1WQRR-69LV_1-65GZ_1W-6", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "208.73.210.29", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "208.73.210.29", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59237, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "nolagtime.com/conn/?JKV_1RWbUUdIfRUWUaITfdIfbREdYEYdfTTRI-6XBB_1WQR-6GF5_1AU-6LC6_1Y-gW-gEUQQ-gE-tsDF6K5D_rpX51_rR-t-66FC_1Q_fQ_fQ_fQ_fQ_fQ_fQ_fQ-62BG_1Q-672V_1YOR-6N8J_1Q-6252_1WQRR-69LV_1-65GZ_1W-6" + }, + { + "@timestamp": "2012-04-10T04:39:35.000Z", + "client.ip": "192.168.0.2", + "client.port": 59238, + "client.user.name": "crusher", + "destination.address": "208.73.210.29", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "208.73.210.29", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 15712, + "log.original": "Oct 30 09:47:17 1,2012/10/30 09:47:17,01606001116,THREAT,url,1,2012/04/10 04:39:35,192.168.0.2,208.73.210.29,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:36,26056,1,59238,80,0,0,0x200000,tcp,block-url,\"nolagtime.com/gwc.txt\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:lOdKYo+aMIHRMMJPawuXy8Bk2I0=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26056", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "nolagtime.com/gwc.txt", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "208.73.210.29", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "208.73.210.29", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59238, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "nolagtime.com/gwc.txt" + }, + { + "@timestamp": "2012-04-10T04:38:19.000Z", + "client.ip": "192.168.0.2", + "client.port": 59010, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 16111, + "log.original": "Oct 30 09:51:03 1,2012/10/30 09:51:03,01606001116,THREAT,url,1,2012/04/10 04:38:19,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:38:20,25465,1,59010,80,0,0,0x200000,tcp,block-url,\"karavan.us/bon/index.php\",(9999),unknown,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:rDRkkTH2aHta89i52OraqG5WcDI=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25465", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "karavan.us/bon/index.php", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "unknown", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59010, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "karavan.us/bon/index.php" + }, + { + "@timestamp": "2012-04-10T04:38:14.000Z", + "client.ip": "192.168.0.2", + "client.port": 58969, + "client.user.name": "crusher", + "destination.address": "208.73.210.29", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "208.73.210.29", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 16508, + "log.original": "Oct 30 09:51:23 1,2012/10/30 09:51:23,01606001116,THREAT,url,1,2012/04/10 04:38:14,192.168.0.2,208.73.210.29,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:38:15,24316,1,58969,80,0,0,0x200000,tcp,block-url,\"findnolimits.com/go.php?sid=1\",(9999),dead-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:00fHGTkjtblnJQ9P4Wiw9QuDEpI=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24316", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "findnolimits.com/go.php?sid=1", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "dead-sites", + "related.ip": [ + "192.168.0.2", + "208.73.210.29", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "208.73.210.29", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58969, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "findnolimits.com/go.php?sid=1" + }, + { + "@timestamp": "2012-04-10T04:38:12.000Z", + "client.ip": "192.168.0.2", + "client.port": 58941, + "client.user.name": "crusher", + "destination.address": "89.108.64.156", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "RU", + "destination.geo.location.lat": 55.7386, + "destination.geo.location.lon": 37.6068, + "destination.ip": "89.108.64.156", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 16912, + "log.original": "Oct 30 09:51:33 1,2012/10/30 09:51:33,01606001116,THREAT,url,1,2012/04/10 04:38:12,192.168.0.2,89.108.64.156,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:38:13,17258,1,58941,80,0,0,0x200000,tcp,block-url,\"bizoplata.ru/moun.html\",(9999),parked-domains,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0,", + "network.application": "web-browsing", + "network.community_id": "1:sQ6YL9T0OZftMg71BK+1IHpXIRM=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "17258", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "bizoplata.ru/moun.html", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "parked-domains", + "related.ip": [ + "192.168.0.2", + "89.108.64.156", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "89.108.64.156", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58941, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "bizoplata.ru/moun.html" + }, + { + "@timestamp": "2012-04-10T04:38:12.000Z", + "client.ip": "192.168.0.2", + "client.port": 58942, + "client.user.name": "crusher", + "destination.address": "89.108.64.156", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "RU", + "destination.geo.location.lat": 55.7386, + "destination.geo.location.lon": 37.6068, + "destination.ip": "89.108.64.156", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 17318, + "log.original": "Oct 30 09:51:33 1,2012/10/30 09:51:33,01606001116,THREAT,url,1,2012/04/10 04:38:12,192.168.0.2,89.108.64.156,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:38:13,24735,1,58942,80,0,0,0x200000,tcp,block-url,\"bizoplata.ru/palast.html\",(9999),parked-domains,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0,", + "network.application": "web-browsing", + "network.community_id": "1:a3rlKRtYt43mps+uHBznJUtG3Qg=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24735", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "bizoplata.ru/palast.html", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "parked-domains", + "related.ip": [ + "192.168.0.2", + "89.108.64.156", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "89.108.64.156", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58942, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "bizoplata.ru/palast.html" + }, + { + "@timestamp": "2012-04-10T04:37:28.000Z", + "client.ip": "204.232.231.46", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 58849, + "destination.user.name": "crusher", + "ecs.version": "1.0.0", + "event.action": "spyware_detected", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "drop-all-packets", + "event.severity": 1, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "critical", + "log.offset": 17726, + "log.original": "Oct 30 09:53:33 1,2012/10/30 09:53:33,01606001116,THREAT,spyware,1,2012/04/10 04:37:28,204.232.231.46,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:33,23497,1,80,58849,0,0,0x200000,tcp,drop-all-packets,\"controller.php\",Bredolab.Gen Command and Control Traffic(13024),any,critical,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:gfZAOGdC3xAoPZCFZCwHJJ7Iin4=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "23497", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "controller.php", + "palo_alto.pan_os.threat_id": "Bredolab.Gen Command and Control Traffic(13024)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "204.232.231.46", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 58849, + "server.user.name": "crusher", + "service.type": "palo_alto", + "source.address": "204.232.231.46", + "source.geo.city_name": "Charlotte", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 35.2344, + "source.geo.location.lon": -80.9091, + "source.geo.region_iso_code": "US-NC", + "source.geo.region_name": "North Carolina", + "source.ip": "204.232.231.46", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "controller.php" + }, + { + "@timestamp": "2012-04-10T04:37:32.000Z", + "client.ip": "192.168.0.2", + "client.port": 58856, + "client.user.name": "crusher", + "destination.address": "216.8.179.25", + "destination.geo.city_name": "Tecumseh", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "CA", + "destination.geo.location.lat": 42.2946, + "destination.geo.location.lon": -82.8667, + "destination.geo.region_iso_code": "CA-ON", + "destination.geo.region_name": "Ontario", + "destination.ip": "216.8.179.25", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 18156, + "log.original": "Oct 30 09:53:38 1,2012/10/30 09:53:38,01606001116,THREAT,url,1,2012/04/10 04:37:32,192.168.0.2,216.8.179.25,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:32,23711,1,58856,80,0,0,0x200000,tcp,block-url,\"www.15min.it/\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Canada,0,", + "network.application": "web-browsing", + "network.community_id": "1:VeoAydUSFUdh8ZddIqbsMY32sBU=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23711", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "www.15min.it/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "216.8.179.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "216.8.179.25", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58856, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "www.15min.it/" + }, + { + "@timestamp": "2012-04-10T04:37:27.000Z", + "client.ip": "192.168.0.2", + "client.port": 58847, + "client.user.name": "crusher", + "destination.address": "69.43.161.154", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "69.43.161.154", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 18539, + "log.original": "Oct 30 09:53:48 1,2012/10/30 09:53:48,01606001116,THREAT,url,1,2012/04/10 04:37:27,192.168.0.2,69.43.161.154,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:27,23659,1,58847,80,0,0,0x200000,tcp,block-url,\"tubemov.com/\",(9999),adult-and-pornography,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:ZsFVG8FJVifp8WmzI9Zj/lo+dB4=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23659", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "tubemov.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "adult-and-pornography", + "related.ip": [ + "192.168.0.2", + "69.43.161.154", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "69.43.161.154", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58847, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "tubemov.com/" + }, + { + "@timestamp": "2012-04-10T04:37:25.000Z", + "client.ip": "192.168.0.2", + "client.port": 58841, + "client.user.name": "crusher", + "destination.address": "208.91.196.252", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "VG", + "destination.geo.location.lat": 18.5, + "destination.geo.location.lon": -64.5, + "destination.ip": "208.91.196.252", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 18937, + "log.original": "Oct 30 09:53:58 1,2012/10/30 09:53:58,01606001116,THREAT,url,1,2012/04/10 04:37:25,192.168.0.2,208.91.196.252,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:25,23782,1,58841,80,0,0,0x200000,tcp,block-url,\"pagesinxt.com/?dn=teenstube.us&flrdr=yes&nxte=js\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Virgin Islands British,0,", + "network.application": "web-browsing", + "network.community_id": "1:NAfQ33YdKJSvbcxpFK8HIhI39lk=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23782", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "pagesinxt.com/?dn=teenstube.us&flrdr=yes&nxte=js", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "208.91.196.252", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "208.91.196.252", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58841, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "pagesinxt.com/?dn=teenstube.us&flrdr=yes&nxte=js" + }, + { + "@timestamp": "2012-04-10T04:37:05.000Z", + "client.ip": "192.168.0.2", + "client.port": 58795, + "client.user.name": "crusher", + "destination.address": "208.73.210.29", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "208.73.210.29", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 19373, + "log.original": "Oct 30 09:55:23 1,2012/10/30 09:55:23,01606001116,THREAT,url,1,2012/04/10 04:37:05,192.168.0.2,208.73.210.29,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:37:06,23239,1,58795,80,0,0,0x200000,tcp,block-url,\"movfree.com/\",(9999),spyware-and-adware,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:AMcTUl91PN0z8TJr2QwdEOP+Fmo=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23239", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "movfree.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "spyware-and-adware", + "related.ip": [ + "192.168.0.2", + "208.73.210.29", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "208.73.210.29", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58795, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "movfree.com/" + }, + { + "@timestamp": "2012-04-10T04:36:51.000Z", + "client.ip": "192.168.0.2", + "client.port": 58753, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 19768, + "log.original": "Oct 30 09:56:23 1,2012/10/30 09:56:23,01606001116,THREAT,url,1,2012/04/10 04:36:51,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:52,22479,1,58753,80,0,0,0x200000,tcp,block-url,\"gometascan.com/\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:7Tdwe73AJMSdJL4hxpQDyl5Lwn4=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "22479", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "gometascan.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58753, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "gometascan.com/" + }, + { + "@timestamp": "2012-04-10T04:36:39.000Z", + "client.ip": "192.168.0.2", + "client.port": 58708, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 20162, + "log.original": "Oct 30 09:57:33 1,2012/10/30 09:57:33,01606001116,THREAT,url,1,2012/04/10 04:36:39,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:40,21458,1,58708,80,0,0,0x200000,tcp,block-url,\"antivirus-powerful-scannerv2.com/download/Install_11-1.exe\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:q7ERSuCoAPSiI8xLXZCI+1M9B8I=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "21458", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "antivirus-powerful-scannerv2.com/download/Install_11-1.exe", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58708, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "antivirus-powerful-scannerv2.com/download/Install_11-1.exe" + }, + { + "@timestamp": "2012-04-10T04:36:38.000Z", + "client.ip": "192.168.0.2", + "client.port": 58707, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 20599, + "log.original": "Oct 30 09:57:38 1,2012/10/30 09:57:38,01606001116,THREAT,url,1,2012/04/10 04:36:38,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:39,21577,1,58707,80,0,0,0x200000,tcp,block-url,\"antivirus-powerful-scannerv2.com/1/?id=11-1&back==TQzyDTyMUQNMI=N\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:AsPpOgQhhKdBtPhY4zahdBuNcTc=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "21577", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "antivirus-powerful-scannerv2.com/1/?id=11-1&back==TQzyDTyMUQNMI=N", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58707, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "antivirus-powerful-scannerv2.com/1/?id=11-1&back==TQzyDTyMUQNMI=N" + }, + { + "@timestamp": "2012-04-10T04:36:27.000Z", + "client.ip": "192.168.0.2", + "client.port": 58603, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 21043, + "log.original": "Mar 25 23:58:52 1,2013/03/25 23:58:52,1606001116,THREAT,url,1,2012/04/10 04:36:27,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:28,21487,1,58603,80,0,0,0x200000,tcp,block-url,\"basdzsdas.com/poker/config.bin\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:Inta5pHrKZ+nIMo9QJjgmv1raGE=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "1606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "21487", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "basdzsdas.com/poker/config.bin", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58603, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "basdzsdas.com/poker/config.bin" + }, + { + "@timestamp": "2012-04-10T04:36:27.000Z", + "client.ip": "192.168.0.2", + "client.port": 58603, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 21451, + "log.original": "Mar 25 23:58:52 1,2013/03/25 23:58:52,1606001116,THREAT,url,1,2012/04/10 04:36:27,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:28,21487,1,58603,80,0,0,0x200000,tcp,block-url,\"basdzsdas.com/poker/config.bin\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:Inta5pHrKZ+nIMo9QJjgmv1raGE=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "1606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "21487", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "basdzsdas.com/poker/config.bin", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58603, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "basdzsdas.com/poker/config.bin" + }, + { + "@timestamp": "2012-04-10T04:19:59.000Z", + "client.ip": "173.236.179.57", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 54431, + "destination.user.name": "crusher", + "ecs.version": "1.0.0", + "event.action": "file_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "deny", + "event.severity": 4, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "low", + "log.offset": 21859, + "log.original": "Mar 25 23:58:57 1,2013/03/25 23:58:57,1606001116,THREAT,file,1,2012/04/10 04:19:59,173.236.179.57,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:20:05,64856,1,80,54431,0,0,0x200000,tcp,deny,\"uLLGRaXP.exe\",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:to6WA2KM9vqO74DfMPJ8+v0cKPs=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "1606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "64856", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "uLLGRaXP.exe", + "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "173.236.179.57", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 54431, + "server.user.name": "crusher", + "service.type": "palo_alto", + "source.address": "173.236.179.57", + "source.geo.city_name": "Brea", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 33.9269, + "source.geo.location.lon": -117.8612, + "source.geo.region_iso_code": "US-CA", + "source.geo.region_name": "California", + "source.ip": "173.236.179.57", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "uLLGRaXP.exe" + }, + { + "@timestamp": "2012-04-10T04:36:27.000Z", + "client.ip": "192.168.0.2", + "client.port": 58603, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 22250, + "log.original": "Mar 25 23:58:57 1,2013/03/25 23:58:57,1606001116,THREAT,url,1,2012/04/10 04:36:27,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:36:28,21487,1,58603,80,0,0,0x200000,tcp,block-url,\"basdzsdas.com/poker/config.bin\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:Inta5pHrKZ+nIMo9QJjgmv1raGE=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "1606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "21487", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "basdzsdas.com/poker/config.bin", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 58603, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "basdzsdas.com/poker/config.bin" + }, + { + "@timestamp": "2012-04-10T04:51:29.000Z", + "client.ip": "91.209.163.202", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 61220, + "destination.user.name": "crusher", + "ecs.version": "1.0.0", + "event.action": "file_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "deny", + "event.severity": 4, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "low", + "log.offset": 22658, + "log.original": "Mar 25 23:59:07 1,2013/03/25 23:59:07,01606001116,THREAT,file,1,2012/04/10 04:51:29,91.209.163.202,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:51:34,37983,1,80,61220,0,0,0x200000,tcp,deny,\"FunkyEmoticons_setup.exe\",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,European Union,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:dHpseryW+AZk/t5IUvlyhaLSGI0=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "37983", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "FunkyEmoticons_setup.exe", + "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "91.209.163.202", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 61220, + "server.user.name": "crusher", + "service.type": "palo_alto", + "source.address": "91.209.163.202", + "source.geo.country_iso_code": "European Union", + "source.ip": "91.209.163.202", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "FunkyEmoticons_setup.exe" + }, + { + "@timestamp": "2012-04-10T04:54:33.000Z", + "client.ip": "122.226.169.183", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 61726, + "destination.user.name": "crusher", + "ecs.version": "1.0.0", + "event.action": "file_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "deny", + "event.severity": 4, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "low", + "log.offset": 23063, + "log.original": "Mar 25 23:59:07 1,2013/03/25 23:59:07,01606001116,THREAT,file,1,2012/04/10 04:54:33,122.226.169.183,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:54:38,41989,1,80,61726,0,0,0x200000,tcp,deny,\"52hxw.exe\",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,China,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:lIp7rPLlF21gCwZ63WafZ2HbNKA=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "41989", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "52hxw.exe", + "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "122.226.169.183", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 61726, + "server.user.name": "crusher", + "service.type": "palo_alto", + "source.address": "122.226.169.183", + "source.geo.continent_name": "Asia", + "source.geo.country_iso_code": "CN", + "source.geo.location.lat": 30.2936, + "source.geo.location.lon": 120.1614, + "source.geo.region_iso_code": "CN-ZJ", + "source.geo.region_name": "Zhejiang", + "source.ip": "122.226.169.183", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "52hxw.exe" + }, + { + "@timestamp": "2012-04-10T05:01:00.000Z", + "client.ip": "192.168.0.2", + "client.port": 63007, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 23445, + "log.original": "Mar 25 23:59:07 1,2013/03/25 23:59:07,01606001116,THREAT,url,1,2012/04/10 05:01:00,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 05:01:00,49238,1,63007,80,0,0,0x200000,tcp,block-url,\"softsellfast.com/test/config.bin\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:n39Q6RPkLwPiDU/pfHT7uRZGkXY=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "49238", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "softsellfast.com/test/config.bin", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 63007, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "softsellfast.com/test/config.bin" + }, + { + "@timestamp": "2012-04-10T04:45:17.000Z", + "client.ip": "109.201.131.15", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 60212, + "destination.user.name": "crusher", + "ecs.version": "1.0.0", + "event.action": "file_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "deny", + "event.severity": 4, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "low", + "log.offset": 23856, + "log.original": "Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,file,1,2012/04/10 04:45:17,109.201.131.15,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:45:23,21592,1,80,60212,0,0,0x200000,tcp,deny,\"setup.exe\",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,Netherlands,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:69YGwS9/vtp36Khj80nU/Q0TTfM=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "21592", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "setup.exe", + "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "109.201.131.15", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 60212, + "server.user.name": "crusher", + "service.type": "palo_alto", + "source.address": "109.201.131.15", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "NL", + "source.geo.location.lat": 52.3824, + "source.geo.location.lon": 4.8995, + "source.ip": "109.201.131.15", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "setup.exe" + }, + { + "@timestamp": "2012-04-10T04:46:16.000Z", + "client.ip": "91.209.163.202", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 60392, + "destination.user.name": "crusher", + "ecs.version": "1.0.0", + "event.action": "file_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "deny", + "event.severity": 4, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "low", + "log.offset": 24243, + "log.original": "Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,file,1,2012/04/10 04:46:16,91.209.163.202,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:46:22,33760,1,80,60392,0,0,0x200000,tcp,deny,\"Live-Player_setup.exe\",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,European Union,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:MKMWzixtfYaSoShU7T3wN6MLk5g=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "33760", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "Live-Player_setup.exe", + "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "91.209.163.202", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 60392, + "server.user.name": "crusher", + "service.type": "palo_alto", + "source.address": "91.209.163.202", + "source.geo.country_iso_code": "European Union", + "source.ip": "91.209.163.202", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "Live-Player_setup.exe" + }, + { + "@timestamp": "2012-04-10T04:42:39.000Z", + "client.ip": "192.168.0.2", + "client.port": 59709, + "client.user.name": "crusher", + "destination.address": "213.180.199.61", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "RU", + "destination.geo.location.lat": 55.7386, + "destination.geo.location.lon": 37.6068, + "destination.ip": "213.180.199.61", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 24645, + "log.original": "Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,url,1,2012/04/10 04:42:39,192.168.0.2,213.180.199.61,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:42:39,28723,1,59709,80,0,0,0x200000,tcp,block-url,\"boialex.narod.ru/config.txt\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0,", + "network.application": "web-browsing", + "network.community_id": "1:J4hfLZVy8UJEkW68RkW2hMu84Wk=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28723", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "boialex.narod.ru/config.txt", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "213.180.199.61", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "213.180.199.61", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59709, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "boialex.narod.ru/config.txt" + }, + { + "@timestamp": "2012-04-10T04:42:42.000Z", + "client.ip": "192.168.0.2", + "client.port": 59721, + "client.user.name": "crusher", + "destination.address": "213.180.199.61", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "RU", + "destination.geo.location.lat": 55.7386, + "destination.geo.location.lon": 37.6068, + "destination.ip": "213.180.199.61", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 25056, + "log.original": "Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,url,1,2012/04/10 04:42:42,192.168.0.2,213.180.199.61,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:42:42,28932,1,59721,80,0,0,0x200000,tcp,block-url,\"edw-melon.narod.ru/config.txt\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0,", + "network.application": "web-browsing", + "network.community_id": "1:1211QM61Juawz4PBXLQBL9Q2FNA=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28932", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "edw-melon.narod.ru/config.txt", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "213.180.199.61", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "213.180.199.61", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59721, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "edw-melon.narod.ru/config.txt" + }, + { + "@timestamp": "2012-04-10T04:42:51.000Z", + "client.ip": "192.168.0.2", + "client.port": 59752, + "client.user.name": "crusher", + "destination.address": "213.180.199.61", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "RU", + "destination.geo.location.lat": 55.7386, + "destination.geo.location.lon": 37.6068, + "destination.ip": "213.180.199.61", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 25469, + "log.original": "Mar 25 23:59:12 1,2013/03/25 23:59:12,01606001116,THREAT,url,1,2012/04/10 04:42:51,192.168.0.2,213.180.199.61,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:42:51,28953,1,59752,80,0,0,0x200000,tcp,block-url,\"maximtushin.narod.ru/config.txt\",(9999),malware-sites,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,Russian Federation,0,", + "network.application": "web-browsing", + "network.community_id": "1:MQfJlERz16LAn6Hn1YhCNKLOjjA=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28953", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "maximtushin.narod.ru/config.txt", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "213.180.199.61", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "213.180.199.61", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59752, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "maximtushin.narod.ru/config.txt" + }, + { + "@timestamp": "2012-04-10T04:19:59.000Z", + "client.ip": "173.236.179.57", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 54431, + "destination.user.name": "crusher", + "ecs.version": "1.0.0", + "event.action": "file_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "deny", + "event.severity": 4, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "low", + "log.offset": 25884, + "log.original": "Mar 25 23:59:17 1,2013/03/25 23:59:17,01606001116,THREAT,file,1,2012/04/10 04:19:59,173.236.179.57,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,crusher,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:20:05,64856,1,80,54431,0,0,0x200000,tcp,deny,\"uLLGRaXP.exe\",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:to6WA2KM9vqO74DfMPJ8+v0cKPs=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "64856", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "uLLGRaXP.exe", + "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "173.236.179.57", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 54431, + "server.user.name": "crusher", + "service.type": "palo_alto", + "source.address": "173.236.179.57", + "source.geo.city_name": "Brea", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 33.9269, + "source.geo.location.lon": -117.8612, + "source.geo.region_iso_code": "US-CA", + "source.geo.region_name": "California", + "source.ip": "173.236.179.57", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "uLLGRaXP.exe" + }, + { + "@timestamp": "2012-04-10T04:09:01.000Z", + "client.ip": "192.168.0.2", + "client.port": 63183, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 26276, + "log.original": "Mar 25 23:59:22 1,2013/03/25 23:59:22,01606001116,THREAT,url,1,2012/04/10 04:09:01,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:09:01,55402,1,63183,80,0,0,0x200000,tcp,block-url,\"marketingsoluchion.biz/fkn/config.bin\",(9999),unknown,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:uO6RhHsqSUg1LHv5h+n+FE4cqrE=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "55402", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "marketingsoluchion.biz/fkn/config.bin", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "unknown", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "204.232.231.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 63183, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ], + "url.original": "marketingsoluchion.biz/fkn/config.bin" + }, + { + "@timestamp": "2012-04-09T08:18:27.000Z", + "client.ip": "192.168.0.6", + "client.port": 1047, + "client.user.name": "jordy", + "destination.address": "207.46.140.46", + "destination.geo.city_name": "Hong Kong", + "destination.geo.continent_name": "Asia", + "destination.geo.country_iso_code": "HK", + "destination.geo.location.lat": 22.2833, + "destination.geo.location.lon": 114.15, + "destination.geo.region_iso_code": "HK-HCW", + "destination.geo.region_name": "Central and Western District", + "destination.ip": "207.46.140.46", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 26686, + "log.original": "Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:27,192.168.0.6,207.46.140.46,0.0.0.0,0.0.0.0,rule1,jordy,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:32,25217,1,1047,80,0,0,0x200000,tcp,alert,\"default.aspx\",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:KC3xpBK9CdouZqamG9S6Mjl6LIo=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25217", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "default.aspx", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.6", + "207.46.140.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "207.46.140.46", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.6", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.6", + "source.port": 1047, + "source.user.name": "jordy", + "tags": [ + "pan-os" + ], + "url.original": "default.aspx" + }, + { + "@timestamp": "2012-04-09T08:18:29.000Z", + "client.ip": "65.54.161.34", + "client.port": 80, + "destination.address": "192.168.0.6", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.6", + "destination.port": 1039, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 27064, + "log.original": "Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:29,65.54.161.34,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:34,25653,1,80,1039,0,0,0x200000,tcp,alert,\"sck.aspx\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:qtNTXnMjHLAldLWQ5/jdyuCV6Yk=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "25653", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "sck.aspx", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "65.54.161.34", + "192.168.0.6", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.6", + "server.port": 1039, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "65.54.161.34", + "source.geo.city_name": "Redmond", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 47.6801, + "source.geo.location.lon": -122.1206, + "source.geo.region_iso_code": "US-WA", + "source.geo.region_name": "Washington", + "source.ip": "65.54.161.34", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "sck.aspx" + }, + { + "@timestamp": "2012-04-09T08:18:32.000Z", + "client.ip": "65.55.5.231", + "client.port": 80, + "destination.address": "192.168.0.6", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.6", + "destination.port": 1064, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 27437, + "log.original": "Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:32,65.55.5.231,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:37,25717,3,80,1064,0,0,0x200000,tcp,alert,\"ADSAdClient31.dll\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:OSQCnxYE2CqKztyfnzJHya/llPw=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "25717", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "ADSAdClient31.dll", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "65.55.5.231", + "192.168.0.6", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.6", + "server.port": 1064, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "65.55.5.231", + "source.geo.city_name": "Redmond", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 47.6801, + "source.geo.location.lon": -122.1206, + "source.geo.region_iso_code": "US-WA", + "source.geo.region_name": "Washington", + "source.ip": "65.55.5.231", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "ADSAdClient31.dll" + }, + { + "@timestamp": "2012-04-09T08:18:33.000Z", + "client.ip": "192.168.0.6", + "client.port": 1048, + "client.user.name": "jordy", + "destination.address": "65.54.71.11", + "destination.geo.city_name": "Los Angeles", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 34.0544, + "destination.geo.location.lon": -118.244, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "65.54.71.11", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 27818, + "log.original": "Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:33,192.168.0.6,65.54.71.11,0.0.0.0,0.0.0.0,rule1,jordy,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:38,25290,1,1048,80,0,0,0x200000,tcp,alert,\"c.gif\",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "web-browsing", + "network.community_id": "1:MeB0cefg5kMN7f+LW+cirwH2nA8=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25290", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "c.gif", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.6", + "65.54.71.11", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "65.54.71.11", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.6", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.6", + "source.port": 1048, + "source.user.name": "jordy", + "tags": [ + "pan-os" + ], + "url.original": "c.gif" + }, + { + "@timestamp": "2012-04-09T08:18:37.000Z", + "client.ip": "74.125.239.17", + "client.port": 80, + "destination.address": "192.168.0.6", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.6", + "destination.port": 1071, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 28187, + "log.original": "Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:18:37,74.125.239.17,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:18:42,25932,1,80,1071,0,0,0x200000,tcp,alert,\"csi\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:iDmf9CnG+CdUuHWmwVsmhee3/Qs=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "25932", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "csi", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.239.17", + "192.168.0.6", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.6", + "server.port": 1071, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.239.17", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.239.17", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "csi" + }, + { + "@timestamp": "2012-04-09T08:50:12.000Z", + "client.ip": "192.168.0.2", + "client.port": 57502, + "client.user.name": "picard", + "destination.address": "208.85.40.48", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "208.85.40.48", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 28556, + "log.original": "Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:50:12,192.168.0.2,208.85.40.48,0.0.0.0,0.0.0.0,rule1,picard,,pandora,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:50:17,28264,1,57502,80,0,0,0x200000,tcp,alert,\"internal-tuner.pandora.com\",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "pandora", + "network.community_id": "1:c67I85z1uJV7VW6M9MR5Q8fjHQM=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28264", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "internal-tuner.pandora.com", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "208.85.40.48", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "208.85.40.48", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 57502, + "source.user.name": "picard", + "tags": [ + "pan-os" + ], + "url.original": "internal-tuner.pandora.com" + }, + { + "@timestamp": "2012-04-09T08:58:18.000Z", + "client.ip": "74.125.224.198", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 57876, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 28944, + "log.original": "Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,data,1,2012/04/09 08:58:18,74.125.224.198,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:58:22,29312,1,80,57876,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:w5GKumufuJCv3Gw8bvP3vTxap24=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "29312", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.198", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 57876, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.224.198", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.198", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T08:22:27.000Z", + "client.ip": "188.190.124.75", + "client.port": 80, + "destination.address": "192.168.0.6", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.6", + "destination.port": 1082, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "file_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "deny", + "event.severity": 4, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "low", + "log.offset": 29319, + "log.original": "Mar 25 23:59:32 1,2013/03/25 23:59:32,01606001116,THREAT,file,1,2012/04/09 08:22:27,188.190.124.75,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:22:31,26747,1,80,1082,0,0,0x200000,tcp,deny,\"about.exe\",Windows Executable (EXE)(52020),any,low,server-to-client,0,0x0,Ukraine,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:a7oyQr47OdJP8ZnG9SCELvH8aco=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "26747", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "about.exe", + "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "188.190.124.75", + "192.168.0.6", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.6", + "server.port": 1082, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "188.190.124.75", + "source.geo.country_iso_code": "Ukraine", + "source.ip": "188.190.124.75", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "about.exe" + }, + { + "@timestamp": "2012-04-09T07:11:43.000Z", + "client.ip": "74.125.224.200", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 50986, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 29699, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:11:43,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:11:48,19205,1,80,50986,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:yyAK8WOE46l0/k8dVOECI6qa2zQ=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "19205", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.200", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 50986, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.224.200", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.200", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T07:14:02.000Z", + "client.ip": "74.125.239.3", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 51716, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 30074, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:14:02,74.125.239.3,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:14:07,19360,1,80,51716,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:15fj8zz0nlNi/Fnz8ibhS9Ihqdg=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "19360", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.239.3", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 51716, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.239.3", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.239.3", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T07:14:39.000Z", + "client.ip": "74.125.239.3", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 52119, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 30447, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:14:39,74.125.239.3,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:14:44,19696,1,80,52119,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:fl9AVyrQeXPX/eoeKOy+6/UoR8M=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "19696", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.239.3", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 52119, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.239.3", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.239.3", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T07:16:03.000Z", + "client.ip": "74.125.224.200", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 52411, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 30820, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:16:03,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:16:08,19679,1,80,52411,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:cHzYL+SCc86AntedL6fbRx+2wzE=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "19679", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.200", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 52411, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.224.200", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.200", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T07:18:14.000Z", + "client.ip": "192.168.0.2", + "client.port": 52366, + "client.user.name": "picard", + "destination.address": "74.125.239.6", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "74.125.239.6", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 31195, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:18:14,192.168.0.2,74.125.239.6,0.0.0.0,0.0.0.0,rule1,picard,,google-analytics,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:18:19,19448,1,52366,80,0,0,0x200000,tcp,alert,\"__utm.gif\",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "google-analytics", + "network.community_id": "1:pRuFj5DzdmtFceU+OTawbYPhbJg=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "19448", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "__utm.gif", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "74.125.239.6", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "74.125.239.6", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 52366, + "source.user.name": "picard", + "tags": [ + "pan-os" + ], + "url.original": "__utm.gif" + }, + { + "@timestamp": "2012-04-09T07:25:04.000Z", + "client.ip": "74.125.224.193", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 53026, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 31575, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:25:04,74.125.224.193,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:25:09,20422,1,80,53026,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:e27i7C6aBac+TOOJNFkXsvos7v0=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "20422", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.193", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 53026, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.224.193", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.193", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T07:36:04.000Z", + "client.ip": "74.125.239.20", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 53809, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 31950, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 07:36:04,74.125.239.20,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 07:36:09,21267,1,80,53809,0,0,0x200000,tcp,alert,\"nav_logo107.png\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:I0nRW7fXHKg0He8sWEMh90mqrd8=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "21267", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "nav_logo107.png", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.239.20", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 53809, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.239.20", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.239.20", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "nav_logo107.png" + }, + { + "@timestamp": "2012-04-09T08:08:08.000Z", + "client.ip": "208.80.154.225", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 55912, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 32333, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 08:08:08,208.80.154.225,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:08:13,24567,1,80,55912,0,0,0x200000,tcp,alert,\"Eadweard_Muybridge\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:W08oA4XVHxagaCryNLen9OoTnPk=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "24567", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "Eadweard_Muybridge", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "208.80.154.225", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 55912, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "208.80.154.225", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "208.80.154.225", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "Eadweard_Muybridge" + }, + { + "@timestamp": "2012-04-09T08:08:44.000Z", + "client.ip": "208.80.154.234", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 55916, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 32720, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 08:08:44,208.80.154.234,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:08:49,24646,1,80,55916,0,0,0x200000,tcp,alert,\"load.php\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:tvB7u/5+rW38IXXGXjbdYYdzJ5s=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "24646", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "load.php", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "208.80.154.234", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 55916, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "208.80.154.234", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "208.80.154.234", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "load.php" + }, + { + "@timestamp": "2012-04-09T08:16:57.000Z", + "client.ip": "65.54.75.25", + "client.port": 80, + "destination.address": "192.168.0.6", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.6", + "destination.port": 1046, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 33097, + "log.original": "Mar 25 23:59:37 1,2013/03/25 23:59:37,01606001116,THREAT,data,1,2012/04/09 08:16:57,65.54.75.25,192.168.0.6,0.0.0.0,0.0.0.0,rule1,,jordy,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 08:17:01,25874,1,80,1046,0,0,0x200000,tcp,reset-both,\"8fe44cb728c0f40750c64ee906eb72.css\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:LvKTW1EWi7nem/oAlX14Sg2W9kU=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "25874", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "8fe44cb728c0f40750c64ee906eb72.css", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "65.54.75.25", + "192.168.0.6", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.6", + "server.port": 1046, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "65.54.75.25", + "source.geo.city_name": "Los Angeles", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 34.0544, + "source.geo.location.lon": -118.244, + "source.geo.region_iso_code": "US-CA", + "source.geo.region_name": "California", + "source.ip": "65.54.75.25", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "8fe44cb728c0f40750c64ee906eb72.css" + }, + { + "@timestamp": "2012-04-09T04:06:41.000Z", + "client.ip": "74.125.224.206", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 61734, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 33500, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 04:06:41,74.125.224.206,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 04:06:46,2175,1,80,61734,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:Iur0h7DmmxbVfmJ8EKqn0v73b88=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "2175", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.206", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 61734, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.224.206", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.206", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T04:12:52.000Z", + "client.ip": "74.125.224.195", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 62292, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 33873, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 04:12:52,74.125.224.195,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 04:12:57,3046,1,80,62292,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:n3f9RX9U3DOM57vpn8aB1QSo2Yw=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "3046", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.195", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 62292, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.224.195", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.195", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T06:07:49.000Z", + "client.ip": "207.178.96.34", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 64669, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 34246, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:07:49,207.178.96.34,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,rss,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:07:54,1560,1,80,64669,0,0,0x200000,tcp,alert,\"appcast.xml\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "rss", + "network.community_id": "1:K6mY9EnrwYs1/a01d++OZ3kna2g=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "1560", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "appcast.xml", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "207.178.96.34", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 64669, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "207.178.96.34", + "source.geo.city_name": "Wichita", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.6875, + "source.geo.location.lon": -97.338, + "source.geo.region_iso_code": "US-KS", + "source.geo.region_name": "Kansas", + "source.ip": "207.178.96.34", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "appcast.xml" + }, + { + "@timestamp": "2012-04-09T06:48:44.000Z", + "client.ip": "74.125.224.195", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 65265, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 34614, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:48:44,74.125.224.195,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:48:48,16852,1,80,65265,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:u89cWOeFF4sWlYYJHVB+nr6g6Qg=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "16852", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.195", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 65265, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.224.195", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.195", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T06:48:59.000Z", + "client.ip": "74.125.239.20", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 64979, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 34989, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:48:59,74.125.239.20,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:49:05,15948,1,80,64979,0,0,0x200000,tcp,alert,\"csi\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:QmMWJ0pdk04yRgDj9m6OAKnXpDY=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "15948", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "csi", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.239.20", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 64979, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.239.20", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.239.20", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "csi" + }, + { + "@timestamp": "2012-04-09T06:50:14.000Z", + "client.ip": "66.152.109.24", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 49432, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 35360, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:50:14,66.152.109.24,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,web-browsing,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:50:19,17028,1,80,49432,0,0,0x200000,tcp,alert,\"index.php\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "web-browsing", + "network.community_id": "1:d3Kvg96HWrCNAfAK3vx2Uqglkdo=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "17028", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "index.php", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "66.152.109.24", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 49432, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "66.152.109.24", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "66.152.109.24", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "index.php" + }, + { + "@timestamp": "2012-04-09T06:51:34.000Z", + "client.ip": "74.125.224.200", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 49722, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 35737, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:51:34,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:51:39,15878,1,80,49722,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:+c2DVc+anjtRZ3iRsjbG51UM+JA=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "15878", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.200", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 49722, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.224.200", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.200", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T06:53:41.000Z", + "client.ip": "192.168.0.2", + "client.port": 49681, + "client.user.name": "picard", + "destination.address": "74.125.224.201", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "74.125.224.201", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 36112, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:53:41,192.168.0.2,74.125.224.201,0.0.0.0,0.0.0.0,rule1,picard,,google-analytics,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:53:47,16602,1,49681,80,0,0,0x200000,tcp,alert,\"__utm.gif\",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "google-analytics", + "network.community_id": "1:5z6QdMj01RaYM1NdZtQSRQgE9gk=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "16602", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "__utm.gif", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "74.125.224.201", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "74.125.224.201", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 49681, + "source.user.name": "picard", + "tags": [ + "pan-os" + ], + "url.original": "__utm.gif" + }, + { + "@timestamp": "2012-04-09T06:54:35.000Z", + "client.ip": "74.125.224.200", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 50108, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 36494, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:54:35,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:54:41,17433,1,80,50108,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:Ut9W+vlgpMAH7M4p87nZ/gF7zO8=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "17433", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.200", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 50108, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.224.200", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.200", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T06:54:55.000Z", + "client.ip": "74.125.224.200", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 50387, + "destination.user.name": "picard", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 36869, + "log.original": "Mar 25 23:59:42 1,2013/03/25 23:59:42,01606001116,THREAT,data,1,2012/04/09 06:54:55,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,picard,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 06:55:00,17104,1,80,50387,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:MNjszUBgbVupAxKdr7W7OIvU2lo=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "17104", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.200", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 50387, + "server.user.name": "picard", + "service.type": "palo_alto", + "source.address": "74.125.224.200", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.200", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T03:44:49.000Z", + "client.ip": "192.168.0.2", + "client.port": 59781, + "client.user.name": "jordy", + "destination.address": "208.85.40.48", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "208.85.40.48", + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 37244, + "log.original": "Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:44:49,192.168.0.2,208.85.40.48,0.0.0.0,0.0.0.0,rule1,jordy,,pandora,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:44:55,63706,1,59781,80,0,0,0x200000,tcp,alert,\"internal-tuner.pandora.com\",PII(60000),any,informational,client-to-server,0,0x0,192.168.0.0-192.168.255.255,United States,0,", + "network.application": "pandora", + "network.community_id": "1:PzMJQoALQDxnDaqwOEEz4zxyhHU=", + "network.direction": "inbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "63706", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "internal-tuner.pandora.com", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "208.85.40.48", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "208.85.40.48", + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.0.2", + "source.port": 59781, + "source.user.name": "jordy", + "tags": [ + "pan-os" + ], + "url.original": "internal-tuner.pandora.com" + }, + { + "@timestamp": "2012-04-09T03:45:45.000Z", + "client.ip": "74.125.224.201", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 60005, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 37631, + "log.original": "Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:45:45,74.125.224.201,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:45:50,65257,1,80,60005,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:ThkQfWduH5PZoI7qa/R4rWqT2VM=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "65257", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.201", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 60005, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.224.201", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.201", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T03:49:17.000Z", + "client.ip": "74.125.224.201", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 60443, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 38005, + "log.original": "Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:49:17,74.125.224.201,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:49:22,537,1,80,60443,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:Fd/TWc6RIS9q2bsgzztXrAAL4Ek=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "537", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.201", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 60443, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.224.201", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.201", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T03:53:41.000Z", + "client.ip": "74.125.224.200", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 60822, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 38377, + "log.original": "Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:53:41,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:53:45,914,1,80,60822,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:7gqxhjxtnxyQnsvGukcI+WZWzAY=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "914", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.200", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 60822, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.224.200", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.200", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T03:55:23.000Z", + "client.ip": "74.125.224.200", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 61105, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 38749, + "log.original": "Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:55:23,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:55:28,1475,1,80,61105,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:ZzHOd7AFzjbGqVCj9S3bTNHFX4Q=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "1475", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.200", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 61105, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.224.200", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.200", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + }, + { + "@timestamp": "2012-04-09T03:55:52.000Z", + "client.ip": "74.125.224.198", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 60782, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "alert", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 39122, + "log.original": "Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 03:55:52,74.125.224.198,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-analytics,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 03:55:57,883,1,80,60782,0,0,0x200000,tcp,alert,\"ga.js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-analytics", + "network.community_id": "1:uH37XIov0Sgv5kARW8dP9vrOs7w=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "883", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "ga.js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.198", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 60782, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.224.198", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.198", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "ga.js" + }, + { + "@timestamp": "2012-04-09T04:03:55.000Z", + "client.ip": "74.125.224.200", + "client.port": 80, + "destination.address": "192.168.0.2", + "destination.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "destination.ip": "192.168.0.2", + "destination.port": 61470, + "destination.user.name": "jordy", + "ecs.version": "1.0.0", + "event.action": "data_match", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.level": "informational", + "log.offset": 39497, + "log.original": "Mar 25 23:59:47 1,2013/03/25 23:59:47,01606001116,THREAT,data,1,2012/04/09 04:03:55,74.125.224.200,192.168.0.2,0.0.0.0,0.0.0.0,rule1,,jordy,google-maps,vsys1,untrust,trust,ethernet1/2,ethernet1/1,forwardAll,2012/04/09 04:04:00,1965,1,80,61470,0,0,0x200000,tcp,reset-both,\"js\",PII(60000),any,informational,server-to-client,0,0x0,United States,192.168.0.0-192.168.255.255,0,", + "network.application": "google-maps", + "network.community_id": "1:9jnjFXERN6VFakI1U/qwzyqifzg=", + "network.direction": "outbound", + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "1965", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.threat_file_or_url": "js", + "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "74.125.224.200", + "192.168.0.2", + "0.0.0.0", + "0.0.0.0" + ], + "server.ip": "192.168.0.2", + "server.port": 61470, + "server.user.name": "jordy", + "service.type": "palo_alto", + "source.address": "74.125.224.200", + "source.geo.continent_name": "North America", + "source.geo.country_iso_code": "US", + "source.geo.location.lat": 37.751, + "source.geo.location.lon": -97.822, + "source.ip": "74.125.224.200", + "source.port": 80, + "tags": [ + "pan-os" + ], + "url.original": "js" + } +] \ No newline at end of file diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log new file mode 100644 index 000000000000..70d2804a7127 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log @@ -0,0 +1,100 @@ +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,11449,1,59324,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:59,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,25572,1,54448,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,26208,1,53121,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,14931,1,59323,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,25544,1,59322,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,25308,1,55766,53,0,0,0x200000,udp,allow,74,74,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,26376,1,55072,53,0,0,0x200000,udp,allow,74,74,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,end,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25118,1,59207,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:27,1,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,end,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,26146,1,59209,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:28,0,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,end,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25272,1,59208,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:27,1,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,24069,1,59318,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25848,1,59317,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:57,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25179,1,59316,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:57,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25112,1,59315,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:57,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26161,1,59206,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:27,0,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26000,1,59205,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:26,1,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,65184,1,56858,80,0,0,0x200000,tcp,allow,1910,1359,551,21,2012/04/10 04:29:54,512,malware-sites,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,18,3 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26522,1,59314,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26067,1,59313,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26573,1,52139,53,0,0,0x200000,udp,allow,69,69,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26894,1,60592,53,0,0,0x200000,udp,allow,69,69,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,25149,1,59309,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:56,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,25258,1,57322,53,0,0,0x200000,udp,allow,164,66,98,2,2012/04/10 04:39:26,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,25025,1,59204,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:26,0,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26138,1,59203,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:26,0,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,27175,1,59305,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26261,1,64005,53,0,0,0x200000,udp,allow,69,69,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,25022,1,58768,53,0,0,0x200000,udp,allow,69,69,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,98.149.55.63,0.0.0.0,0.0.0.0,rule1,crusher,,skype,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,24027,1,47752,13069,0,0,0x200000,udp,allow,1008,504,504,16,2012/04/10 04:37:50,125,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,8,8 +Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26360,1,59304,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26394,1,54533,53,0,0,0x200000,udp,allow,71,71,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:55,192.168.0.2,212.48.10.58,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,24917,1,59201,80,0,0,0x200000,tcp,allow,9967,837,9130,20,2012/04/10 04:39:24,1,search-engines,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,10,10 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,22860,1,59303,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,14146,1,50876,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,25876,1,57657,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,24910,1,59302,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,26862,1,59301,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,26222,1,64844,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,26329,1,52257,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.100,8.8.8.8,0.0.0.0,0.0.0.0,rule1,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25142,1,38796,53,0,0,0x0,udp,allow,206,95,111,2,2012/04/10 04:39:24,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25095,1,59200,80,0,0,0x200000,tcp,allow,1503,597,906,13,2012/04/10 04:39:23,1,entertainment-and-arts,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.100,50.19.102.116,0.0.0.0,0.0.0.0,rule1,,,paloalto-wildfire-cloud,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,24787,1,48412,443,0,0,0x0,tcp,allow,5817,804,5013,17,2012/04/10 04:39:24,0,computer-and-internet-security,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,10,7 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.2,65.55.223.19,0.0.0.0,0.0.0.0,rule1,crusher,,skype-probe,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25948,1,47752,40026,0,0,0x200000,udp,allow,286,187,99,2,2012/04/10 04:39:24,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.2,65.55.223.24,0.0.0.0,0.0.0.0,rule1,crusher,,skype-probe,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25444,1,47752,40029,0,0,0x200000,udp,allow,978,76,902,2,2012/04/10 04:39:24,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.100,8.8.8.8,0.0.0.0,0.0.0.0,rule1,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25349,1,52189,53,0,0,0x0,udp,allow,227,86,141,2,2012/04/10 04:39:24,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1 +Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25713,1,59300,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,26499,1,54414,53,0,0,0x200000,udp,allow,73,73,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25437,1,59299,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,24848,1,60399,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,24924,1,59626,53,0,0,0x200000,udp,allow,482,166,316,4,2012/04/10 04:39:22,1,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,2,2 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25899,1,51542,53,0,0,0x200000,udp,allow,196,75,121,2,2012/04/10 04:39:23,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26066,1,54182,53,0,0,0x200000,udp,allow,244,75,169,2,2012/04/10 04:39:23,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,24908,1,59199,80,0,0,0x200000,tcp,allow,1548,594,954,13,2012/04/10 04:39:23,0,business-and-economy,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,212.48.10.58,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25105,1,59198,80,0,0,0x200000,tcp,allow,10135,1005,9130,22,2012/04/10 04:39:21,2,search-engines,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,12,10 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,11964,1,56856,80,0,0,0x200000,tcp,allow,1918,1363,555,21,2012/04/10 04:29:51,512,malware-sites,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,18,3 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26502,1,52489,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26338,1,59298,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,24919,1,60185,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26731,1,51817,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,65.55.223.31,0.0.0.0,0.0.0.0,rule1,crusher,,skype-probe,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26504,1,47752,40043,0,0,0x200000,udp,allow,186,186,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25543,1,59297,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,21948,1,52537,53,0,0,0x200000,udp,allow,82,82,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,26279,1,53155,53,0,0,0x200000,udp,allow,82,82,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:52,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24894,1,59197,80,0,0,0x200000,tcp,allow,1487,581,906,13,2012/04/10 04:39:21,1,entertainment-and-arts,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24985,1,56995,53,0,0,0x200000,udp,allow,251,88,163,2,2012/04/10 04:39:22,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:51,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,25380,1,59069,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:51,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:51,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24994,1,55697,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:51,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:51,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,25451,1,59295,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:51,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:51,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,24866,1,59196,80,0,0,0x200000,tcp,allow,1500,578,922,13,2012/04/10 04:39:20,1,business-and-economy,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,26414,1,59291,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:51,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,26131,1,52858,53,0,0,0x200000,udp,allow,77,77,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,26555,1,61383,53,0,0,0x200000,udp,allow,77,77,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,15099,1,59290,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,8.5.1.1,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24980,1,59195,80,0,0,0x200000,tcp,allow,28096,1310,26786,39,2012/04/10 04:39:20,0,not-resolved,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,17,22 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26215,1,49812,53,0,0,0x200000,udp,allow,83,83,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25881,1,50185,53,0,0,0x200000,udp,allow,83,83,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24955,1,59286,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24961,1,52531,53,0,0,0x200000,udp,allow,244,75,169,2,2012/04/10 04:39:20,0,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,1,1 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,212.48.10.58,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24226,1,59194,80,0,0,0x200000,tcp,allow,10097,1033,9064,21,2012/04/10 04:39:17,3,search-engines,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,12,9 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,212.48.10.58,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25129,1,59192,80,0,0,0x200000,tcp,allow,10105,981,9124,22,2012/04/10 04:39:13,7,search-engines,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,12,10 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25194,1,56463,53,0,0,0x200000,udp,allow,214,77,137,2,2012/04/10 04:39:20,0,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,1,1 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26257,1,55849,53,0,0,0x200000,udp,allow,170,77,93,2,2012/04/10 04:39:20,0,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,1,1 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24561,1,59282,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26150,1,57846,53,0,0,0x200000,udp,allow,71,71,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25676,1,51008,53,0,0,0x200000,udp,allow,71,71,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25306,1,59281,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26411,1,55252,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:49,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24844,1,56995,53,0,0,0x200000,udp,allow,176,176,0,2,2012/04/10 04:39:18,1,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,2,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,26335,1,60989,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,26127,1,59280,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:48,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,25488,1,53766,53,0,0,0x200000,udp,allow,81,81,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:48,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,25269,1,56032,53,0,0,0x200000,udp,allow,81,81,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:48,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25715,1,59193,80,0,0,0x200000,tcp,allow,1487,581,906,13,2012/04/10 04:39:17,1,entertainment-and-arts,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7 +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,26251,1,59279,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25871,1,59278,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25945,1,59277,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:47,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,end,1,2012/04/10 04:39:47,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25310,1,60026,53,0,0,0x200000,udp,allow,166,166,0,2,2012/04/10 04:39:16,1,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,2,0 +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,27111,1,59276,80,0,0,0x200000,tcp,allow,429,351,78,4,2012/04/10 04:39:47,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,3,1 +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,25398,1,59275,80,0,0,0x200000,tcp,allow,429,351,78,4,2012/04/10 04:39:47,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,3,1 +Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:46,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,23898,1,59274,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:46,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0 diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log-expected.json new file mode 100644 index 000000000000..bdf2ad4d7baf --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log-expected.json @@ -0,0 +1,7135 @@ +[ + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59324, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:59.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:59.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 0, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,11449,1,59324,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:59,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:MaqerLAYuvMg6JWjWKmIMO6QJ6s=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "11449", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59324, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 54448, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:58.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:58.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 364, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,25572,1,54448,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 76, + "network.community_id": "1:rmRctS0ZS56Ixay3V5beNERhPNc=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25572", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 54448, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 53121, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:58.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:58.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 717, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,26208,1,53121,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 76, + "network.community_id": "1:NmeRH4O3xNBaUjzIOpdGXeAJ/sg=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26208", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 53121, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59323, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:58.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:58.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 1070, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,14931,1,59323,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:ej/0QPUwuraByxuNxWsOp2ouPuE=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "14931", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59323, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59322, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:58.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:58.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 1434, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,25544,1,59322,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:XHKuVPA6enGOr0Qng8AJtYTgWAQ=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25544", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59322, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 74, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 55766, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 74, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:58.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:58.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 1798, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,25308,1,55766,53,0,0,0x200000,udp,allow,74,74,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 74, + "network.community_id": "1:bkpOCSg/r3P7zn1eVdfrSSHQMn0=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25308", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 55766, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 74, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 55072, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 74, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:58.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:58.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 2151, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:58,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:59,26376,1,55072,53,0,0,0x200000,udp,allow,74,74,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 74, + "network.community_id": "1:f08UBDqcNW5jC3R+i40XfD1g8l8=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26376", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 55072, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 549, + "client.ip": "192.168.0.2", + "client.packets": 4, + "client.port": 59207, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 549, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:28.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:27.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 2504, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,end,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25118,1,59207,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:27,1,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4", + "network.application": "web-browsing", + "network.bytes": 1355, + "network.community_id": "1:kGyE7FdnFLrk4Cc6NHaD5WeE81A=", + "network.direction": "outbound", + "network.packets": 10, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25118", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 806, + "server.ip": "204.232.231.46", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 806, + "source.ip": "192.168.0.2", + "source.packets": 4, + "source.port": 59207, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 549, + "client.ip": "192.168.0.2", + "client.packets": 4, + "client.port": 59209, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 549, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:28.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:28.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 2889, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,end,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,26146,1,59209,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:28,0,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4", + "network.application": "web-browsing", + "network.bytes": 1355, + "network.community_id": "1:pxN/AvFcFozLjRgniFdZmScORYQ=", + "network.direction": "outbound", + "network.packets": 10, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26146", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 806, + "server.ip": "204.232.231.46", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 806, + "source.ip": "192.168.0.2", + "source.packets": 4, + "source.port": 59209, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:58.000Z", + "client.bytes": 549, + "client.ip": "192.168.0.2", + "client.packets": 4, + "client.port": 59208, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 549, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:28.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:27.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 3274, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,end,1,2012/04/10 04:39:58,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25272,1,59208,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:27,1,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4", + "network.application": "web-browsing", + "network.bytes": 1355, + "network.community_id": "1:HmuQtYxq+NpgJ0zVEIpz7zLNOKM=", + "network.direction": "outbound", + "network.packets": 10, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25272", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 806, + "server.ip": "204.232.231.46", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 806, + "source.ip": "192.168.0.2", + "source.packets": 4, + "source.port": 59208, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59318, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:58.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:58.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 3659, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,24069,1,59318,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:58,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:I7NZAEypUvCTVa5iVWyAsWeEWgY=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24069", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59318, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59317, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:57.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:57.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 4023, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25848,1,59317,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:57,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:GOqfpUTezPkpm6axBI22kY90kU4=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25848", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59317, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59316, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:57.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:57.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 4387, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25179,1,59316,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:57,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:aiB5YppFUGX0pM/1Xtp3qOSFXJw=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25179", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59316, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59315, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:57.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:57.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 4751, + "log.original": "Oct 30 09:46:12 1,2012/10/30 09:46:12,01606001116,TRAFFIC,start,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:58,25112,1,59315,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:57,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:ghLw4NDj0JmAhH9lVtlhdQpqEQ0=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25112", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59315, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.bytes": 549, + "client.ip": "192.168.0.2", + "client.packets": 4, + "client.port": 59206, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 549, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:27.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 5115, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26161,1,59206,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:27,0,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4", + "network.application": "web-browsing", + "network.bytes": 1355, + "network.community_id": "1:SIxV4kkvJlBljF+gLKAaihputgk=", + "network.direction": "outbound", + "network.packets": 10, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26161", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 806, + "server.ip": "204.232.231.46", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 806, + "source.ip": "192.168.0.2", + "source.packets": 4, + "source.port": 59206, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:57.000Z", + "client.bytes": 549, + "client.ip": "192.168.0.2", + "client.packets": 4, + "client.port": 59205, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 549, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:26.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 5500, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:57,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26000,1,59205,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:26,1,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4", + "network.application": "web-browsing", + "network.bytes": 1355, + "network.community_id": "1:rpU2pqp4ioYKgiuDEfjZitnLkow=", + "network.direction": "outbound", + "network.packets": 10, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26000", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 806, + "server.ip": "204.232.231.46", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 806, + "source.ip": "192.168.0.2", + "source.packets": 4, + "source.port": 59205, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 1359, + "client.ip": "192.168.0.2", + "client.packets": 3, + "client.port": 56858, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 1359, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 18, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 512000000000, + "event.end": "2012-04-10T04:38:26.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:29:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 5885, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,65184,1,56858,80,0,0,0x200000,tcp,allow,1910,1359,551,21,2012/04/10 04:29:54,512,malware-sites,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,18,3", + "network.application": "web-browsing", + "network.bytes": 1910, + "network.community_id": "1:JuKJfhPs1pDZMiwy04nz1EsD7PA=", + "network.direction": "outbound", + "network.packets": 21, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "65184", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 551, + "server.ip": "204.232.231.46", + "server.packets": 18, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 551, + "source.ip": "192.168.0.2", + "source.packets": 3, + "source.port": 56858, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59314, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:56.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:56.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 6267, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26522,1,59314,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:bZl1JgwyPgfsbSrD+z8I/hpbdc4=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26522", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59314, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59313, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:56.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:56.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 6631, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26067,1,59313,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:0fIOSC1t62T9ExNKvZaxl657EVc=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26067", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59313, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 69, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 52139, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 69, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:56.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:56.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 6995, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26573,1,52139,53,0,0,0x200000,udp,allow,69,69,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 69, + "network.community_id": "1:vFErz1cKNExckY21peQ3YAc8Tmk=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26573", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 52139, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 69, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 60592, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 69, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:56.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:56.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 7348, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,26894,1,60592,53,0,0,0x200000,udp,allow,69,69,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 69, + "network.community_id": "1:i4rdWjY94ZjxNIBve+QH3YwdL04=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26894", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 60592, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59309, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:56.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:56.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 7701, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:57,25149,1,59309,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:mY2EPMYo0US42k87/2uTzjo/rGA=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25149", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59309, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 66, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 57322, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 66, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:26.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:26.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 8065, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:56,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,25258,1,57322,53,0,0,0x200000,udp,allow,164,66,98,2,2012/04/10 04:39:26,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1", + "network.application": "dns", + "network.bytes": 164, + "network.community_id": "1:GjCL7PEzM4X3r7frQ42mW+tNEIQ=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25258", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 98, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 98, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 57322, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 549, + "client.ip": "192.168.0.2", + "client.packets": 4, + "client.port": 59204, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 549, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:26.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:26.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 8418, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,25025,1,59204,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:26,0,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4", + "network.application": "web-browsing", + "network.bytes": 1355, + "network.community_id": "1:2+g5+FYJDJku+1Cl3ZbhVCYdAog=", + "network.direction": "outbound", + "network.packets": 10, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25025", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 806, + "server.ip": "204.232.231.46", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 806, + "source.ip": "192.168.0.2", + "source.packets": 4, + "source.port": 59204, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:56.000Z", + "client.bytes": 549, + "client.ip": "192.168.0.2", + "client.packets": 4, + "client.port": 59203, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 549, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:26.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:26.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 8803, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,end,1,2012/04/10 04:39:56,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26138,1,59203,80,0,0,0x200000,tcp,allow,1355,549,806,10,2012/04/10 04:39:26,0,private-ip-addresses,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,6,4", + "network.application": "web-browsing", + "network.bytes": 1355, + "network.community_id": "1:+ENVPObTW4uBLTLg/Gs7oB3/t0E=", + "network.direction": "outbound", + "network.packets": 10, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26138", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "private-ip-addresses", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 806, + "server.ip": "204.232.231.46", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 806, + "source.ip": "192.168.0.2", + "source.packets": 4, + "source.port": 59203, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59305, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:56.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:56.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 9188, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,27175,1,59305,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:56,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:TPp8b1ubMhxmeJWRt0DCagjd7jA=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "27175", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59305, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.bytes": 69, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 64005, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 69, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:55.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:55.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 9552, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26261,1,64005,53,0,0,0x200000,udp,allow,69,69,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 69, + "network.community_id": "1:9xSXx0HsnsbhZkZ6kFjNeIn1Aw8=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26261", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 64005, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.bytes": 69, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 58768, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 69, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:55.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:55.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 9905, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,25022,1,58768,53,0,0,0x200000,udp,allow,69,69,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 69, + "network.community_id": "1:Ukie7FwgRVUkTl4/hKbkxseBqj0=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25022", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 58768, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.bytes": 504, + "client.ip": "192.168.0.2", + "client.packets": 8, + "client.port": 47752, + "client.user.name": "crusher", + "destination.address": "98.149.55.63", + "destination.bytes": 504, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "98.149.55.63", + "destination.packets": 8, + "destination.port": 13069, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 125000000000, + "event.end": "2012-04-10T04:39:55.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:37:50.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 10258, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,98.149.55.63,0.0.0.0,0.0.0.0,rule1,crusher,,skype,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,24027,1,47752,13069,0,0,0x200000,udp,allow,1008,504,504,16,2012/04/10 04:37:50,125,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,8,8", + "network.application": "skype", + "network.bytes": 1008, + "network.community_id": "1:7+CQvC/DGk2fhUdWzglWwYXYMZE=", + "network.direction": "outbound", + "network.packets": 16, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24027", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "98.149.55.63", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 504, + "server.ip": "98.149.55.63", + "server.packets": 8, + "server.port": 13069, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 504, + "source.ip": "192.168.0.2", + "source.packets": 8, + "source.port": 47752, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59304, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:55.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:55.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 10624, + "log.original": "Oct 30 09:46:17 1,2012/10/30 09:46:17,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26360,1,59304,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:h+XKHvMK2Oz7QQvaJdhsJWE2c9E=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26360", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59304, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.bytes": 71, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 54533, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 71, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:55.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:55.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 10988, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:55,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:56,26394,1,54533,53,0,0,0x200000,udp,allow,71,71,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 71, + "network.community_id": "1:x/kpg5sNW5nn7RkabTWPIKsvO58=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26394", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 54533, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:55.000Z", + "client.bytes": 837, + "client.ip": "192.168.0.2", + "client.packets": 10, + "client.port": 59201, + "client.user.name": "crusher", + "destination.address": "212.48.10.58", + "destination.bytes": 837, + "destination.geo.city_name": "Milan", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 45.4667, + "destination.geo.location.lon": 9.2, + "destination.geo.region_iso_code": "IT-MI", + "destination.geo.region_name": "Milan", + "destination.ip": "212.48.10.58", + "destination.packets": 10, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:25.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:24.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 11341, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:55,192.168.0.2,212.48.10.58,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,24917,1,59201,80,0,0,0x200000,tcp,allow,9967,837,9130,20,2012/04/10 04:39:24,1,search-engines,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,10,10", + "network.application": "web-browsing", + "network.bytes": 9967, + "network.community_id": "1:GL6UBrkzpi/gQHrUyqxHb1jJeUU=", + "network.direction": "outbound", + "network.packets": 20, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24917", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "search-engines", + "related.ip": [ + "192.168.0.2", + "212.48.10.58", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 9130, + "server.ip": "212.48.10.58", + "server.packets": 10, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 9130, + "source.ip": "192.168.0.2", + "source.packets": 10, + "source.port": 59201, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59303, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:55.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:55.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 11713, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,22860,1,59303,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:55,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:6kV576B7jMsBLC62npA6Dgi/zMI=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "22860", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59303, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 50876, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:54.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 12077, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,14146,1,50876,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 76, + "network.community_id": "1:TuGe54F1FJdU+mNdTf97Ced2UmI=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "14146", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 50876, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 57657, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:54.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 12430, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,25876,1,57657,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 76, + "network.community_id": "1:1yn57zVSr0UsUwbuL7XvzIWMbpM=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25876", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 57657, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59302, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:54.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 12783, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,24910,1,59302,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:22ouAyA1O0KgUQOEKP20E7gNa2U=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24910", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59302, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59301, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:54.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 13147, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,26862,1,59301,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:phQpgsVhj3YxNYzeNkqdzDgcMCg=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26862", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59301, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 80, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 64844, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 80, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:54.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 13511, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,26222,1,64844,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 80, + "network.community_id": "1:SxifLhXvL8EiCuMvSbDcRARZyRw=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26222", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 64844, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 80, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 52257, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 80, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:54.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 13864, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:54,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:55,26329,1,52257,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 80, + "network.community_id": "1:QYDqyZAUrBKpnIVn+epBn1ew/so=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26329", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 52257, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 95, + "client.ip": "192.168.0.100", + "client.packets": 1, + "client.port": 38796, + "destination.address": "8.8.8.8", + "destination.bytes": 95, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:24.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:24.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "log.offset": 14217, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.100,8.8.8.8,0.0.0.0,0.0.0.0,rule1,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25142,1,38796,53,0,0,0x0,udp,allow,206,95,111,2,2012/04/10 04:39:24,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1", + "network.application": "dns", + "network.bytes": 206, + "network.community_id": "1:shHCpyazCigToSNjn/e4N7P4biU=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25142", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.100", + "8.8.8.8", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 111, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.100", + "source.bytes": 111, + "source.ip": "192.168.0.100", + "source.packets": 1, + "source.port": 38796, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 597, + "client.ip": "192.168.0.2", + "client.packets": 7, + "client.port": 59200, + "client.user.name": "crusher", + "destination.address": "62.211.68.12", + "destination.bytes": 597, + "destination.geo.city_name": "Latina", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 41.4661, + "destination.geo.location.lon": 12.9043, + "destination.geo.region_iso_code": "IT-LT", + "destination.geo.region_name": "Provincia di Latina", + "destination.ip": "62.211.68.12", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:24.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:23.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 14556, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25095,1,59200,80,0,0,0x200000,tcp,allow,1503,597,906,13,2012/04/10 04:39:23,1,entertainment-and-arts,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7", + "network.application": "web-browsing", + "network.bytes": 1503, + "network.community_id": "1:cDqhuLJdpDu0NsYQNFC3GAMS3GQ=", + "network.direction": "outbound", + "network.packets": 13, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25095", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "entertainment-and-arts", + "related.ip": [ + "192.168.0.2", + "62.211.68.12", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 906, + "server.ip": "62.211.68.12", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 906, + "source.ip": "192.168.0.2", + "source.packets": 7, + "source.port": 59200, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 804, + "client.ip": "192.168.0.100", + "client.packets": 7, + "client.port": 48412, + "destination.address": "50.19.102.116", + "destination.bytes": 804, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "50.19.102.116", + "destination.packets": 10, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:24.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:24.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "log.offset": 14933, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.100,50.19.102.116,0.0.0.0,0.0.0.0,rule1,,,paloalto-wildfire-cloud,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,24787,1,48412,443,0,0,0x0,tcp,allow,5817,804,5013,17,2012/04/10 04:39:24,0,computer-and-internet-security,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,10,7", + "network.application": "paloalto-wildfire-cloud", + "network.bytes": 5817, + "network.community_id": "1:uf1iUYRFFiUYttG2AFf4pcXOdjw=", + "network.direction": "outbound", + "network.packets": 17, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24787", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-security", + "related.ip": [ + "192.168.0.100", + "50.19.102.116", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 5013, + "server.ip": "50.19.102.116", + "server.packets": 10, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.0.100", + "source.bytes": 5013, + "source.ip": "192.168.0.100", + "source.packets": 7, + "source.port": 48412, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 187, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 47752, + "client.user.name": "crusher", + "destination.address": "65.55.223.19", + "destination.bytes": 187, + "destination.geo.city_name": "Washington", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 38.7163, + "destination.geo.location.lon": -78.1704, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "65.55.223.19", + "destination.packets": 1, + "destination.port": 40026, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:24.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:24.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 15331, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.2,65.55.223.19,0.0.0.0,0.0.0.0,rule1,crusher,,skype-probe,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25948,1,47752,40026,0,0,0x200000,udp,allow,286,187,99,2,2012/04/10 04:39:24,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1", + "network.application": "skype-probe", + "network.bytes": 286, + "network.community_id": "1:XF4dVSWPB46mtqr78f9EFUDEn6I=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25948", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "65.55.223.19", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 99, + "server.ip": "65.55.223.19", + "server.packets": 1, + "server.port": 40026, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 99, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 47752, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 47752, + "client.user.name": "crusher", + "destination.address": "65.55.223.24", + "destination.bytes": 76, + "destination.geo.city_name": "Washington", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 38.7163, + "destination.geo.location.lon": -78.1704, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "65.55.223.24", + "destination.packets": 1, + "destination.port": 40029, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:24.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:24.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 15696, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.2,65.55.223.24,0.0.0.0,0.0.0.0,rule1,crusher,,skype-probe,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25444,1,47752,40029,0,0,0x200000,udp,allow,978,76,902,2,2012/04/10 04:39:24,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1", + "network.application": "skype-probe", + "network.bytes": 978, + "network.community_id": "1:HEEGx0vjlpNA8Pw0s6pBr2v0rpo=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25444", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "65.55.223.24", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 902, + "server.ip": "65.55.223.24", + "server.packets": 1, + "server.port": 40029, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 902, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 47752, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:54.000Z", + "client.bytes": 86, + "client.ip": "192.168.0.100", + "client.packets": 1, + "client.port": 52189, + "destination.address": "8.8.8.8", + "destination.bytes": 86, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:24.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:24.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "log.offset": 16061, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,end,1,2012/04/10 04:39:54,192.168.0.100,8.8.8.8,0.0.0.0,0.0.0.0,rule1,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25349,1,52189,53,0,0,0x0,udp,allow,227,86,141,2,2012/04/10 04:39:24,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1", + "network.application": "dns", + "network.bytes": 227, + "network.community_id": "1:1CvVfwyezBZcR2u+VcrEzfuQK9s=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25349", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.100", + "8.8.8.8", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 141, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.100", + "source.bytes": 141, + "source.ip": "192.168.0.100", + "source.packets": 1, + "source.port": 52189, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59300, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:54.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 16400, + "log.original": "Oct 30 09:46:22 1,2012/10/30 09:46:22,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,25713,1,59300,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:54,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:YDMNSbru670DK5EMT3E28WFJPz4=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25713", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59300, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 73, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 54414, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 73, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:53.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:53.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 16764, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:54,26499,1,54414,53,0,0,0x200000,udp,allow,73,73,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 73, + "network.community_id": "1:K6PPTb7ohj/4wQV86uCrgAF1mcY=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26499", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 54414, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59299, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:53.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:53.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 17117, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25437,1,59299,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:C9009xCOuCuGvMPT4caMCizoYr0=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25437", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59299, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 80, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 60399, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 80, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:53.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:53.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 17481, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,24848,1,60399,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 80, + "network.community_id": "1:BKNHj3e0QZpWJwLNiG4yqJnbrxk=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24848", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 60399, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 166, + "client.ip": "192.168.0.2", + "client.packets": 2, + "client.port": 59626, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 166, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 2, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:23.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:22.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 17834, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,24924,1,59626,53,0,0,0x200000,udp,allow,482,166,316,4,2012/04/10 04:39:22,1,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,2,2", + "network.application": "dns", + "network.bytes": 482, + "network.community_id": "1:RQ3lmwvSayYq24fFbjpDDqDG+Dg=", + "network.direction": "outbound", + "network.packets": 4, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24924", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 316, + "server.ip": "205.171.2.25", + "server.packets": 2, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 316, + "source.ip": "192.168.0.2", + "source.packets": 2, + "source.port": 59626, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 75, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 51542, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 75, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:23.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:23.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 18189, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25899,1,51542,53,0,0,0x200000,udp,allow,196,75,121,2,2012/04/10 04:39:23,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1", + "network.application": "dns", + "network.bytes": 196, + "network.community_id": "1:g5ixoTtR3QVz4le7g1L6PZ67CmU=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25899", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 121, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 121, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 51542, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 75, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 54182, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 75, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:23.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:23.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 18543, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26066,1,54182,53,0,0,0x200000,udp,allow,244,75,169,2,2012/04/10 04:39:23,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1", + "network.application": "dns", + "network.bytes": 244, + "network.community_id": "1:z0genl/l2JGIJaNTqaSLGCLTlo4=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26066", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 169, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 169, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 54182, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 594, + "client.ip": "192.168.0.2", + "client.packets": 7, + "client.port": 59199, + "client.user.name": "crusher", + "destination.address": "62.211.68.12", + "destination.bytes": 594, + "destination.geo.city_name": "Latina", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 41.4661, + "destination.geo.location.lon": 12.9043, + "destination.geo.region_iso_code": "IT-LT", + "destination.geo.region_name": "Provincia di Latina", + "destination.ip": "62.211.68.12", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:23.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:23.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 18897, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,24908,1,59199,80,0,0,0x200000,tcp,allow,1548,594,954,13,2012/04/10 04:39:23,0,business-and-economy,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7", + "network.application": "web-browsing", + "network.bytes": 1548, + "network.community_id": "1:cIfWskY1iVpg8gxVVTX1K8A7+MA=", + "network.direction": "outbound", + "network.packets": 13, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24908", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.0.2", + "62.211.68.12", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 954, + "server.ip": "62.211.68.12", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 954, + "source.ip": "192.168.0.2", + "source.packets": 7, + "source.port": 59199, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 1005, + "client.ip": "192.168.0.2", + "client.packets": 10, + "client.port": 59198, + "client.user.name": "crusher", + "destination.address": "212.48.10.58", + "destination.bytes": 1005, + "destination.geo.city_name": "Milan", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 45.4667, + "destination.geo.location.lon": 9.2, + "destination.geo.region_iso_code": "IT-MI", + "destination.geo.region_name": "Milan", + "destination.ip": "212.48.10.58", + "destination.packets": 12, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 2000000000, + "event.end": "2012-04-10T04:39:23.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 19272, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,212.48.10.58,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25105,1,59198,80,0,0,0x200000,tcp,allow,10135,1005,9130,22,2012/04/10 04:39:21,2,search-engines,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,12,10", + "network.application": "web-browsing", + "network.bytes": 10135, + "network.community_id": "1:UPWyVvocuULCMUmJlrn6XBha7JE=", + "network.direction": "outbound", + "network.packets": 22, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25105", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "search-engines", + "related.ip": [ + "192.168.0.2", + "212.48.10.58", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 9130, + "server.ip": "212.48.10.58", + "server.packets": 12, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 9130, + "source.ip": "192.168.0.2", + "source.packets": 10, + "source.port": 59198, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 1363, + "client.ip": "192.168.0.2", + "client.packets": 3, + "client.port": 56856, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 1363, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 18, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 512000000000, + "event.end": "2012-04-10T04:38:23.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:29:51.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 19646, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,end,1,2012/04/10 04:39:53,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,11964,1,56856,80,0,0,0x200000,tcp,allow,1918,1363,555,21,2012/04/10 04:29:51,512,malware-sites,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,18,3", + "network.application": "web-browsing", + "network.bytes": 1918, + "network.community_id": "1:jFqkUdvAr9S/yeKacw5dlE+0/o0=", + "network.direction": "outbound", + "network.packets": 21, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "11964", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "malware-sites", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 555, + "server.ip": "204.232.231.46", + "server.packets": 18, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 555, + "source.ip": "192.168.0.2", + "source.packets": 3, + "source.port": 56856, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:53.000Z", + "client.bytes": 80, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 52489, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 80, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:53.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:53.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 20028, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:53,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26502,1,52489,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 80, + "network.community_id": "1:dQTHsEW3omlFoTmdZu1fchcTb9c=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26502", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 52489, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59298, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:53.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:53.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 20381, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26338,1,59298,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:53,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:BG6Rk6e+H9jRcZHXqRPFG4iA3uU=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26338", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59298, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 60185, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 20745, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,24919,1,60185,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 76, + "network.community_id": "1:eLVg5C7+4Gz+x6GBj4MlJHk/vyk=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24919", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 60185, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 51817, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 21098, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26731,1,51817,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 76, + "network.community_id": "1:2v1FAVArMu9Fw0rZTZH/beAYGjs=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26731", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 51817, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 186, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 47752, + "client.user.name": "crusher", + "destination.address": "65.55.223.31", + "destination.bytes": 186, + "destination.geo.city_name": "Washington", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 38.7163, + "destination.geo.location.lon": -78.1704, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "65.55.223.31", + "destination.packets": 1, + "destination.port": 40043, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 21451, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,65.55.223.31,0.0.0.0,0.0.0.0,rule1,crusher,,skype-probe,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,26504,1,47752,40043,0,0,0x200000,udp,allow,186,186,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "skype-probe", + "network.bytes": 186, + "network.community_id": "1:2fa34ze5XsRR97Shg/2DWoWt57c=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26504", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "65.55.223.31", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "65.55.223.31", + "server.packets": 1, + "server.port": 40043, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 47752, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59297, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 21817, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,25543,1,59297,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:Sa+u435/AIAAeEelFduJmiGLOv0=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25543", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59297, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 82, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 52537, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 82, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 22181, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:53,21948,1,52537,53,0,0,0x200000,udp,allow,82,82,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 82, + "network.community_id": "1:Uym9anPFBcnC+VaX8dVhkzw/pgg=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "21948", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 52537, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 82, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 53155, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 82, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 22534, + "log.original": "Oct 30 09:46:27 1,2012/10/30 09:46:27,01606001116,TRAFFIC,start,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,26279,1,53155,53,0,0,0x200000,udp,allow,82,82,0,1,2012/04/10 04:39:52,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 82, + "network.community_id": "1:BWJpN5ucpEKzwxBd0yrkows1+X4=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26279", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 53155, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 581, + "client.ip": "192.168.0.2", + "client.packets": 7, + "client.port": 59197, + "client.user.name": "crusher", + "destination.address": "62.211.68.12", + "destination.bytes": 581, + "destination.geo.city_name": "Latina", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 41.4661, + "destination.geo.location.lon": 12.9043, + "destination.geo.region_iso_code": "IT-LT", + "destination.geo.region_name": "Provincia di Latina", + "destination.ip": "62.211.68.12", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:22.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 22887, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:52,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24894,1,59197,80,0,0,0x200000,tcp,allow,1487,581,906,13,2012/04/10 04:39:21,1,entertainment-and-arts,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7", + "network.application": "web-browsing", + "network.bytes": 1487, + "network.community_id": "1:k2B753fAG7GMJoQhAbMrDsOfDxA=", + "network.direction": "outbound", + "network.packets": 13, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24894", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "entertainment-and-arts", + "related.ip": [ + "192.168.0.2", + "62.211.68.12", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 906, + "server.ip": "62.211.68.12", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 906, + "source.ip": "192.168.0.2", + "source.packets": 7, + "source.port": 59197, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:52.000Z", + "client.bytes": 88, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 56995, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 88, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:22.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:22.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 23264, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:52,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24985,1,56995,53,0,0,0x200000,udp,allow,251,88,163,2,2012/04/10 04:39:22,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,1", + "network.application": "dns", + "network.bytes": 251, + "network.community_id": "1:PkU1rpfXiwvVRig4MJMcDvEUEas=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24985", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 163, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 163, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 56995, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:51.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59069, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:51.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:51.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 23618, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:51,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,25380,1,59069,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:51,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 76, + "network.community_id": "1:BYZjFq0Mi2hPewpUDaO1jY2UNnA=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25380", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59069, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:51.000Z", + "client.bytes": 76, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 55697, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:51.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:51.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 23971, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:51,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,24994,1,55697,53,0,0,0x200000,udp,allow,76,76,0,1,2012/04/10 04:39:51,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 76, + "network.community_id": "1:l0WoNEsuwN4ml47IyB3IhM2NX6A=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24994", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 55697, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:51.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59295, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:51.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:51.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 24324, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:51,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:52,25451,1,59295,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:51,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:AEtFqIuwxZ9TQ3w9m74nOrboCXE=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25451", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59295, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:51.000Z", + "client.bytes": 578, + "client.ip": "192.168.0.2", + "client.packets": 7, + "client.port": 59196, + "client.user.name": "crusher", + "destination.address": "62.211.68.12", + "destination.bytes": 578, + "destination.geo.city_name": "Latina", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 41.4661, + "destination.geo.location.lon": 12.9043, + "destination.geo.region_iso_code": "IT-LT", + "destination.geo.region_name": "Provincia di Latina", + "destination.ip": "62.211.68.12", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:21.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 24688, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:51,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,24866,1,59196,80,0,0,0x200000,tcp,allow,1500,578,922,13,2012/04/10 04:39:20,1,business-and-economy,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7", + "network.application": "web-browsing", + "network.bytes": 1500, + "network.community_id": "1:t42FnU6e46qlRX0ij7ufkKPs3Co=", + "network.direction": "outbound", + "network.packets": 13, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24866", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.0.2", + "62.211.68.12", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 922, + "server.ip": "62.211.68.12", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 922, + "source.ip": "192.168.0.2", + "source.packets": 7, + "source.port": 59196, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59291, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:51.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:51.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 25063, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,26414,1,59291,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:51,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:AuQEAPptnfXLW8oL/ac3CM4Gnnw=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26414", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59291, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 77, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 52858, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 77, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:50.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:50.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 25427, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,26131,1,52858,53,0,0,0x200000,udp,allow,77,77,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 77, + "network.community_id": "1:ZVsgbE2ux52iF80QIxJN36vdI1M=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26131", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 52858, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 77, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 61383, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 77, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:50.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:50.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 25780, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:51,26555,1,61383,53,0,0,0x200000,udp,allow,77,77,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 77, + "network.community_id": "1:p68po3QtexuC2kor01hJgMDKiPM=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26555", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 61383, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59290, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:50.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:50.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 26133, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,15099,1,59290,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:2UbFMV1DsXMB0b/AUotNCCsHm0s=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "15099", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59290, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 1310, + "client.ip": "192.168.0.2", + "client.packets": 22, + "client.port": 59195, + "client.user.name": "crusher", + "destination.address": "8.5.1.1", + "destination.bytes": 1310, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.5.1.1", + "destination.packets": 17, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:20.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 26497, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,8.5.1.1,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24980,1,59195,80,0,0,0x200000,tcp,allow,28096,1310,26786,39,2012/04/10 04:39:20,0,not-resolved,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,17,22", + "network.application": "web-browsing", + "network.bytes": 28096, + "network.community_id": "1:J6pba/4Qby485gtIOBCJnQ0T04E=", + "network.direction": "outbound", + "network.packets": 39, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24980", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "not-resolved", + "related.ip": [ + "192.168.0.2", + "8.5.1.1", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 26786, + "server.ip": "8.5.1.1", + "server.packets": 17, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 26786, + "source.ip": "192.168.0.2", + "source.packets": 22, + "source.port": 59195, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 83, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 49812, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 83, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:50.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:50.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 26873, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26215,1,49812,53,0,0,0x200000,udp,allow,83,83,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 83, + "network.community_id": "1:iSTXT01g3/K5eC8sEHIzTaFShsA=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26215", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 49812, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 83, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 50185, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 83, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:50.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:50.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 27226, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25881,1,50185,53,0,0,0x200000,udp,allow,83,83,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 83, + "network.community_id": "1:3UaggcKnXvkcjpVHqbTU3mCMT5E=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25881", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 50185, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59286, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:50.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:50.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 27579, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,start,1,2012/04/10 04:39:50,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24955,1,59286,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:50,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:M8DHGZjrHyuCRpC9MNNfDUke5g4=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24955", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59286, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 75, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 52531, + "client.user.name": "crusher", + "destination.address": "192.168.0.1", + "destination.bytes": 75, + "destination.ip": "192.168.0.1", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:20.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 27943, + "log.original": "Oct 30 09:46:32 1,2012/10/30 09:46:32,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24961,1,52531,53,0,0,0x200000,udp,allow,244,75,169,2,2012/04/10 04:39:20,0,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,1,1", + "network.application": "dns", + "network.bytes": 244, + "network.community_id": "1:aqHtUqeIwO72eo1M5ATE45cIze8=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24961", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "192.168.0.1", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 169, + "server.ip": "192.168.0.1", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 169, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 52531, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 1033, + "client.ip": "192.168.0.2", + "client.packets": 9, + "client.port": 59194, + "client.user.name": "crusher", + "destination.address": "212.48.10.58", + "destination.bytes": 1033, + "destination.geo.city_name": "Milan", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 45.4667, + "destination.geo.location.lon": 9.2, + "destination.geo.region_iso_code": "IT-MI", + "destination.geo.region_name": "Milan", + "destination.ip": "212.48.10.58", + "destination.packets": 12, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 3000000000, + "event.end": "2012-04-10T04:39:20.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:17.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 28310, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,212.48.10.58,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24226,1,59194,80,0,0,0x200000,tcp,allow,10097,1033,9064,21,2012/04/10 04:39:17,3,search-engines,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,12,9", + "network.application": "web-browsing", + "network.bytes": 10097, + "network.community_id": "1:ZM81iQMHQAIwuZHdw5tm5lXF25A=", + "network.direction": "outbound", + "network.packets": 21, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24226", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "search-engines", + "related.ip": [ + "192.168.0.2", + "212.48.10.58", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 9064, + "server.ip": "212.48.10.58", + "server.packets": 12, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 9064, + "source.ip": "192.168.0.2", + "source.packets": 9, + "source.port": 59194, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 981, + "client.ip": "192.168.0.2", + "client.packets": 10, + "client.port": 59192, + "client.user.name": "crusher", + "destination.address": "212.48.10.58", + "destination.bytes": 981, + "destination.geo.city_name": "Milan", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 45.4667, + "destination.geo.location.lon": 9.2, + "destination.geo.region_iso_code": "IT-MI", + "destination.geo.region_name": "Milan", + "destination.ip": "212.48.10.58", + "destination.packets": 12, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 7000000000, + "event.end": "2012-04-10T04:39:20.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 28683, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,212.48.10.58,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25129,1,59192,80,0,0,0x200000,tcp,allow,10105,981,9124,22,2012/04/10 04:39:13,7,search-engines,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,12,10", + "network.application": "web-browsing", + "network.bytes": 10105, + "network.community_id": "1:yYl3JBOjYyGDcmf0pDc+hxky9gU=", + "network.direction": "outbound", + "network.packets": 22, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25129", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "search-engines", + "related.ip": [ + "192.168.0.2", + "212.48.10.58", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 9124, + "server.ip": "212.48.10.58", + "server.packets": 12, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 9124, + "source.ip": "192.168.0.2", + "source.packets": 10, + "source.port": 59192, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 77, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 56463, + "client.user.name": "crusher", + "destination.address": "192.168.0.1", + "destination.bytes": 77, + "destination.ip": "192.168.0.1", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:20.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 29056, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25194,1,56463,53,0,0,0x200000,udp,allow,214,77,137,2,2012/04/10 04:39:20,0,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,1,1", + "network.application": "dns", + "network.bytes": 214, + "network.community_id": "1:VW3f2r1OUrbsOCF06MDfY/o+epU=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25194", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "192.168.0.1", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 137, + "server.ip": "192.168.0.1", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 137, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 56463, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:50.000Z", + "client.bytes": 77, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 55849, + "client.user.name": "crusher", + "destination.address": "192.168.0.1", + "destination.bytes": 77, + "destination.ip": "192.168.0.1", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:20.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 29423, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:50,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26257,1,55849,53,0,0,0x200000,udp,allow,170,77,93,2,2012/04/10 04:39:20,0,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,1,1", + "network.application": "dns", + "network.bytes": 170, + "network.community_id": "1:yvOxIP48drmX6OmaQqFTRaGanko=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26257", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "192.168.0.1", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 93, + "server.ip": "192.168.0.1", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 93, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 55849, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59282, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:49.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:49.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 29789, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24561,1,59282,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:Vfi4CxQayypb3DoxclNfeNjXdjo=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24561", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59282, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.bytes": 71, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 57846, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 71, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:49.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:49.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 30153, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26150,1,57846,53,0,0,0x200000,udp,allow,71,71,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 71, + "network.community_id": "1:cWkoifFGPLq+ZcxaNzzYym9H7jI=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26150", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 57846, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.bytes": 71, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 51008, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 71, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:49.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:49.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 30506, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25676,1,51008,53,0,0,0x200000,udp,allow,71,71,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 71, + "network.community_id": "1:SicjKSp4oQCovx4rjFSg+IThGYA=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25676", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 51008, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59281, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:49.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:49.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 30859, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,25306,1,59281,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:/tG+YfZ8qFKrUDfQ7EThCBXci9Y=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25306", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59281, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.bytes": 80, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 55252, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 80, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:49.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:49.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 31223, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,26411,1,55252,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 80, + "network.community_id": "1:cp0HVI5MHMB+G4/hIuKGoX1WWac=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26411", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 55252, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.bytes": 176, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 56995, + "client.user.name": "crusher", + "destination.address": "192.168.0.1", + "destination.bytes": 176, + "destination.ip": "192.168.0.1", + "destination.packets": 2, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:19.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:18.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 31576, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:49,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:50,24844,1,56995,53,0,0,0x200000,udp,allow,176,176,0,2,2012/04/10 04:39:18,1,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,2,0", + "network.application": "dns", + "network.bytes": 176, + "network.community_id": "1:X6pWtJqspZOnEXaF1nKblB/B3f4=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24844", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "192.168.0.1", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "192.168.0.1", + "server.packets": 2, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 56995, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:49.000Z", + "client.bytes": 80, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 60989, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 80, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:49.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:49.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 31942, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:49,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,26335,1,60989,53,0,0,0x200000,udp,allow,80,80,0,1,2012/04/10 04:39:49,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 80, + "network.community_id": "1:bIf8k1Z5+8sNSsr63qo8XknzQDo=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26335", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 60989, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:48.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59280, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:48.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:48.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 32295, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,26127,1,59280,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:IRI0j5xLyLhwaONpy7gVZdl/Qow=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26127", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59280, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:48.000Z", + "client.bytes": 81, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 53766, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 81, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:48.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:48.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 32659, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:48,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,25488,1,53766,53,0,0,0x200000,udp,allow,81,81,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 81, + "network.community_id": "1:VJaNvIgkNIXRerGHtYQC0HUPZh8=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25488", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 53766, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:48.000Z", + "client.bytes": 81, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 56032, + "client.user.name": "crusher", + "destination.address": "205.171.2.25", + "destination.bytes": 81, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "205.171.2.25", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:48.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:48.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 33012, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,start,1,2012/04/10 04:39:48,192.168.0.2,205.171.2.25,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:49,25269,1,56032,53,0,0,0x200000,udp,allow,81,81,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "dns", + "network.bytes": 81, + "network.community_id": "1:fMeKYeqX7mnB812D1vOtHs7BRO4=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25269", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "205.171.2.25", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "205.171.2.25", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 56032, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:48.000Z", + "client.bytes": 581, + "client.ip": "192.168.0.2", + "client.packets": 7, + "client.port": 59193, + "client.user.name": "crusher", + "destination.address": "62.211.68.12", + "destination.bytes": 581, + "destination.geo.city_name": "Latina", + "destination.geo.continent_name": "Europe", + "destination.geo.country_iso_code": "IT", + "destination.geo.location.lat": 41.4661, + "destination.geo.location.lon": 12.9043, + "destination.geo.region_iso_code": "IT-LT", + "destination.geo.region_name": "Provincia di Latina", + "destination.ip": "62.211.68.12", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:18.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:17.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 33365, + "log.original": "Oct 30 09:46:37 1,2012/10/30 09:46:37,01606001116,TRAFFIC,end,1,2012/04/10 04:39:48,192.168.0.2,62.211.68.12,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25715,1,59193,80,0,0,0x200000,tcp,allow,1487,581,906,13,2012/04/10 04:39:17,1,entertainment-and-arts,0,0,0x0,192.168.0.0-192.168.255.255,Italy,0,6,7", + "network.application": "web-browsing", + "network.bytes": 1487, + "network.community_id": "1:2482BoM8NEujTrlI4lp2vfAxmus=", + "network.direction": "outbound", + "network.packets": 13, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25715", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "entertainment-and-arts", + "related.ip": [ + "192.168.0.2", + "62.211.68.12", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 906, + "server.ip": "62.211.68.12", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 906, + "source.ip": "192.168.0.2", + "source.packets": 7, + "source.port": 59193, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:48.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59279, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:48.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:48.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 33742, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:48,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,26251,1,59279,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:FmIwID3HJ4Q0574SjlhMHApz/Hs=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "26251", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59279, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:47.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59278, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:48.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:48.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 34106, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25871,1,59278,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:48,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:WiUImNtgjkeNDi1Qigg7+Y6pDAg=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25871", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59278, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:47.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59277, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:47.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:47.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 34470, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25945,1,59277,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:47,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:/+Opb16c1ye6uLeu1/TNC+SGnYs=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25945", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59277, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:47.000Z", + "client.bytes": 166, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 60026, + "client.user.name": "crusher", + "destination.address": "192.168.0.1", + "destination.bytes": 166, + "destination.ip": "192.168.0.1", + "destination.packets": 2, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2012-04-10T04:39:17.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:16.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 34834, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,end,1,2012/04/10 04:39:47,192.168.0.2,192.168.0.1,0.0.0.0,0.0.0.0,rule1,crusher,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:48,25310,1,60026,53,0,0,0x200000,udp,allow,166,166,0,2,2012/04/10 04:39:16,1,any,0,0,0x0,192.168.0.0-192.168.255.255,192.168.0.0-192.168.255.255,0,2,0", + "network.application": "dns", + "network.bytes": 166, + "network.community_id": "1:h46cgrbWRw4seDnSlCbWxjLRmqs=", + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25310", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "192.168.0.1", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "192.168.0.1", + "server.packets": 2, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 60026, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:47.000Z", + "client.bytes": 351, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 59276, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 351, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 3, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:47.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:47.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 35200, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,27111,1,59276,80,0,0,0x200000,tcp,allow,429,351,78,4,2012/04/10 04:39:47,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,3,1", + "network.application": "web-browsing", + "network.bytes": 429, + "network.community_id": "1:uslltTePy/m8Gxhk/MgPbZfk6Rg=", + "network.direction": "outbound", + "network.packets": 4, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "27111", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 78, + "server.ip": "204.232.231.46", + "server.packets": 3, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 78, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 59276, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:47.000Z", + "client.bytes": 351, + "client.ip": "192.168.0.2", + "client.packets": 1, + "client.port": 59275, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 351, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 3, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:47.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:47.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 35567, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:47,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,25398,1,59275,80,0,0,0x200000,tcp,allow,429,351,78,4,2012/04/10 04:39:47,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,3,1", + "network.application": "web-browsing", + "network.bytes": 429, + "network.community_id": "1:AVMiOufq2owuhWpcu/TfRJ38tv4=", + "network.direction": "outbound", + "network.packets": 4, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25398", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 78, + "server.ip": "204.232.231.46", + "server.packets": 3, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 78, + "source.ip": "192.168.0.2", + "source.packets": 1, + "source.port": 59275, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2012-04-10T04:39:46.000Z", + "client.bytes": 78, + "client.ip": "192.168.0.2", + "client.packets": 0, + "client.port": 59274, + "client.user.name": "crusher", + "destination.address": "204.232.231.46", + "destination.bytes": 78, + "destination.geo.city_name": "Charlotte", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 35.2344, + "destination.geo.location.lon": -80.9091, + "destination.geo.region_iso_code": "US-NC", + "destination.geo.region_name": "North Carolina", + "destination.ip": "204.232.231.46", + "destination.packets": 1, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2012-04-10T04:39:46.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2012-04-10T04:39:46.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.captive_portal": true, + "log.offset": 35934, + "log.original": "Oct 30 09:46:42 1,2012/10/30 09:46:42,01606001116,TRAFFIC,start,1,2012/04/10 04:39:46,192.168.0.2,204.232.231.46,0.0.0.0,0.0.0.0,rule1,crusher,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,forwardAll,2012/04/10 04:39:47,23898,1,59274,80,0,0,0x200000,tcp,allow,78,78,0,1,2012/04/10 04:39:46,0,any,0,0,0x0,192.168.0.0-192.168.255.255,United States,0,1,0", + "network.application": "web-browsing", + "network.bytes": 78, + "network.community_id": "1:/0xM0KlMLwieymkDApfqS3/WWiQ=", + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.serial_number": "01606001116", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23898", + "palo_alto.pan_os.ruleset": "rule1", + "palo_alto.pan_os.sequence_number": 0, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "0.0.0.0", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.0.2", + "204.232.231.46", + "0.0.0.0", + "0.0.0.0" + ], + "server.bytes": 0, + "server.ip": "204.232.231.46", + "server.packets": 1, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.0.2", + "source.bytes": 0, + "source.ip": "192.168.0.2", + "source.packets": 0, + "source.port": 59274, + "source.user.name": "crusher", + "tags": [ + "pan-os" + ] + } +] \ No newline at end of file diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log b/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log new file mode 100644 index 000000000000..2b6854cf5a5e --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log @@ -0,0 +1,76 @@ +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28191,1,52984,443,37679,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7726,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28219,1,52983,443,28249,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7727,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,27723,1,52986,443,63898,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7728,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28172,1,52985,443,7515,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7729,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28151,1,52987,443,3225,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7730,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28076,1,52988,443,60449,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7731,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28173,1,52990,443,60559,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7732,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28186,1,52989,443,47414,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7733,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28192,1,52992,443,37673,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7734,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,27011,1,52991,443,8232,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7735,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28240,1,52994,443,32982,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7736,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28143,1,52993,443,10473,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7737,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28272,1,52995,443,20446,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7738,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28146,1,52996,443,34699,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7739,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28278,1,52997,443,22820,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7740,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:37,012801096514,THREAT,url,2049,2018/11/30 16:44:37,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:37,28185,1,52998,443,41060,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7741,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:37,012801096514,THREAT,url,2049,2018/11/30 16:44:37,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:37,28201,1,52999,443,9058,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7742,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:37,012801096514,THREAT,url,2049,2018/11/30 16:44:37,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:37,28148,1,53001,443,54846,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7743,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:37,012801096514,THREAT,url,2049,2018/11/30 16:44:37,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:37,28121,1,53002,443,52731,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7744,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:38 PA-220 1,2018/11/30 16:44:38,012801096514,THREAT,url,2049,2018/11/30 16:44:38,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:38,28228,1,53003,443,15165,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7745,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:38 PA-220 1,2018/11/30 16:44:38,012801096514,THREAT,url,2049,2018/11/30 16:44:38,192.168.15.224,23.72.137.131,192.168.1.63,23.72.137.131,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:38,28196,1,53004,443,53918,443,0x403000,tcp,block-url,"b.scorecardresearch.com/",(9999),business-and-economy,informational,client-to-server,7746,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:38 PA-220 1,2018/11/30 16:44:38,012801096514,THREAT,url,2049,2018/11/30 16:44:38,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:38,28007,1,53000,443,40792,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7747,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28117,1,53006,443,54044,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7748,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28109,1,53007,443,19544,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7749,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28260,1,53008,443,13462,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7750,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28275,1,53010,443,44892,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7752,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28266,1,53011,443,16487,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7753,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28294,1,53012,443,23952,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7754,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28248,1,53013,443,2810,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7755,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28274,1,53014,443,13272,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7756,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28285,1,53022,443,8663,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7762,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28306,1,53023,443,55738,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7763,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28116,1,53024,443,10650,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7764,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28214,1,53025,443,44087,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7765,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28080,1,53026,443,15915,443,0x403000,tcp,block-url,"consent.cmp.oath.com/",(9999),business-and-economy,informational,client-to-server,7766,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:53 PA-220 1,2018/11/30 16:44:53,012801096514,THREAT,url,2049,2018/11/30 16:44:53,192.168.15.224,151.101.2.2,192.168.1.63,151.101.2.2,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:53,28318,1,53041,443,41165,443,0x403000,tcp,block-url,"cdn.taboola.com/",(9999),business-and-economy,informational,client-to-server,7768,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:54 PA-220 1,2018/11/30 16:44:54,012801096514,THREAT,url,2049,2018/11/30 16:44:54,192.168.15.224,54.192.7.152,192.168.1.63,54.192.7.152,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:54,28300,1,53040,443,54133,443,0x403000,tcp,block-url,"rules.quantcount.com/",(9999),business-and-economy,informational,client-to-server,7769,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:59 PA-220 1,2018/11/30 16:44:58,012801096514,THREAT,url,2049,2018/11/30 16:44:58,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:58,28339,1,53093,443,8485,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7770,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:59 PA-220 1,2018/11/30 16:44:58,012801096514,THREAT,url,2049,2018/11/30 16:44:58,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:58,28299,1,53094,443,12496,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7771,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:59 PA-220 1,2018/11/30 16:44:58,012801096514,THREAT,url,2049,2018/11/30 16:44:58,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:58,28303,1,53095,443,17029,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7772,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:44:59 PA-220 1,2018/11/30 16:44:58,012801096514,THREAT,url,2049,2018/11/30 16:44:58,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:58,28390,1,53096,443,23696,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7773,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:00 PA-220 1,2018/11/30 16:44:59,012801096514,THREAT,url,2049,2018/11/30 16:44:59,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:59,28433,1,53097,443,34769,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7774,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:00 PA-220 1,2018/11/30 16:44:59,012801096514,THREAT,url,2049,2018/11/30 16:44:59,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:59,28380,1,53099,443,22486,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7775,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:00 PA-220 1,2018/11/30 16:44:59,012801096514,THREAT,url,2049,2018/11/30 16:44:59,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:59,28363,1,53100,443,12894,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7776,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28349,1,53101,443,62348,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7777,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28411,1,53104,443,6224,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7778,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28397,1,53107,443,44120,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7779,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28347,1,53108,443,44228,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7780,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28443,1,53109,443,31322,443,0x403000,tcp,block-url,"srv-2018-11-30-22.config.parsely.com/",(9999),business-and-economy,informational,client-to-server,7781,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:14 PA-220 1,2018/11/30 16:45:13,012801096514,THREAT,url,2049,2018/11/30 16:45:13,192.168.15.224,216.58.194.98,192.168.1.63,216.58.194.98,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:13,28439,1,53118,443,1672,443,0x403000,tcp,block-url,"www.googleadservices.com/",(9999),business-and-economy,informational,client-to-server,7782,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:15,012801096514,THREAT,url,2049,2018/11/30 16:45:15,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:15,25958,1,53126,443,20801,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7783,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:15,012801096514,THREAT,url,2049,2018/11/30 16:45:15,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:15,28429,1,53127,443,24533,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7784,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:15,012801096514,THREAT,url,2049,2018/11/30 16:45:15,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:15,28465,1,53128,443,30150,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7785,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:15,012801096514,THREAT,url,2049,2018/11/30 16:45:15,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:15,28504,1,53129,443,36305,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7786,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28458,1,53130,443,42682,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7787,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28491,1,53131,443,22530,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7788,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28520,1,53132,443,43713,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7789,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28335,1,53133,443,60608,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7790,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28414,1,53134,443,9302,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7791,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:17 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28488,1,53135,443,11634,443,0x403000,tcp,block-url,"service.maxymiser.net/",(9999),business-and-economy,informational,client-to-server,7792,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28469,1,53152,443,30818,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7793,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28556,1,53155,443,64260,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7794,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28558,1,53158,443,7071,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7795,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28531,1,53160,443,4512,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7796,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28580,1,53161,443,3422,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7797,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28477,1,53162,443,4651,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7798,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28484,1,53163,443,19068,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7799,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28609,1,53164,443,5831,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7800,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28564,1,53165,443,7084,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7801,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28542,1,53166,443,18633,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7802,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:28 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28590,1,53167,443,25557,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7803,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:28 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28455,1,53150,443,20661,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7804,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:29 PA-220 1,2018/11/30 16:45:28,012801096514,THREAT,url,2049,2018/11/30 16:45:28,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:28,28585,1,53185,443,65438,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7805,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:29 PA-220 1,2018/11/30 16:45:28,012801096514,THREAT,url,2049,2018/11/30 16:45:28,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:28,28462,1,53187,443,53101,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7806,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:29 PA-220 1,2018/11/30 16:45:28,012801096514,THREAT,url,2049,2018/11/30 16:45:28,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:28,28839,1,53188,443,35463,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7807,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, +Nov 30 16:45:30 PA-220 1,2018/11/30 16:45:29,012801096514,THREAT,url,2049,2018/11/30 16:45:29,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:29,28400,1,53178,443,45769,443,0x403000,tcp,block-url,"segment-data.zqtk.net/",(9999),business-and-economy,informational,client-to-server,7808,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295, diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log-expected.json new file mode 100644 index 000000000000..0b4a7a429350 --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log-expected.json @@ -0,0 +1,5108 @@ +[ + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52984, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 0, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28191,1,52984,443,37679,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7726,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:mDxnuNGkonQEEYcMT0Dur/FCt/I=", + "1:qjpdroY6VaRSEUbSXzSWtUX00kc=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28191", + "palo_alto.pan_os.network.nat.community_id": "1:qjpdroY6VaRSEUbSXzSWtUX00kc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 37679, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52984, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52983, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 546, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28219,1,52983,443,28249,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7727,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:svoGHRUXQeOT1QlGYhMbEalRiPU=", + "1:j6so5fl9DGKhDhaNmjI+6ipOFyc=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28219", + "palo_alto.pan_os.network.nat.community_id": "1:j6so5fl9DGKhDhaNmjI+6ipOFyc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 28249, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52983, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52986, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 1092, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,27723,1,52986,443,63898,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7728,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:cl1ZW9fCG1bKgQuAww26hYqxyq0=", + "1:c4Xs8aAPhIYB760P+BLmrzOvjv4=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "27723", + "palo_alto.pan_os.network.nat.community_id": "1:c4Xs8aAPhIYB760P+BLmrzOvjv4=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 63898, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52986, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52985, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 1638, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28172,1,52985,443,7515,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7729,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:0KdQcz2+OQg8Kuyqn3tvtzrtAtk=", + "1:RU/nMZByVkBbsckJ18XtpXhQlPg=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28172", + "palo_alto.pan_os.network.nat.community_id": "1:RU/nMZByVkBbsckJ18XtpXhQlPg=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 7515, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52985, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52987, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 2183, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28151,1,52987,443,3225,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7730,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:ZuULYSnnlQSsdqWsfJBHQTPqbJo=", + "1:FTVZK5v5Nqts17X+FJm/bQk1rwM=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28151", + "palo_alto.pan_os.network.nat.community_id": "1:FTVZK5v5Nqts17X+FJm/bQk1rwM=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 3225, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52987, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52988, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 2728, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28076,1,52988,443,60449,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7731,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:ovf/7i/MclKhY1UKalpHzmmlthk=", + "1:iHTY/vpQo2TsRYJW2n+lqb0w5f4=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28076", + "palo_alto.pan_os.network.nat.community_id": "1:iHTY/vpQo2TsRYJW2n+lqb0w5f4=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 60449, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52988, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52990, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 3274, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28173,1,52990,443,60559,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7732,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:K7vLQF60EynWhcmrB6/wjEG8qzI=", + "1:f+u5A73xp5gqmRCSN2kCCSbvBRg=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28173", + "palo_alto.pan_os.network.nat.community_id": "1:f+u5A73xp5gqmRCSN2kCCSbvBRg=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 60559, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52990, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52989, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 3820, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28186,1,52989,443,47414,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7733,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:nMc/XZ2HhyrMMpTfW7UK0Q7QRJM=", + "1:v4+MIeqiGJJ9Z3SUTNLFEoYtw74=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28186", + "palo_alto.pan_os.network.nat.community_id": "1:v4+MIeqiGJJ9Z3SUTNLFEoYtw74=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 47414, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52989, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52992, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 4366, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28192,1,52992,443,37673,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7734,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:UDkY52oWrSsYAqwPSTAKyKhwzvQ=", + "1:BilmVEwf9nQIXodvin3X6lZuVAc=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28192", + "palo_alto.pan_os.network.nat.community_id": "1:BilmVEwf9nQIXodvin3X6lZuVAc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 37673, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52992, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52991, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 4912, + "log.original": "Nov 30 16:44:36 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,27011,1,52991,443,8232,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7735,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:pWCQCkwDKmw2APwAJ2GcT6QNXQg=", + "1:CmZ6KkZzaxpkJHXJn0lNskvvZLA=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "27011", + "palo_alto.pan_os.network.nat.community_id": "1:CmZ6KkZzaxpkJHXJn0lNskvvZLA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 8232, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52991, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52994, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 5457, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28240,1,52994,443,32982,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7736,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:3V7ODANn0gD6PFiGWb7LVZcr3TY=", + "1:Xy6vXuBmLPx1/PDpu/KMI1ZPnW0=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28240", + "palo_alto.pan_os.network.nat.community_id": "1:Xy6vXuBmLPx1/PDpu/KMI1ZPnW0=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 32982, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52994, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52993, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 6003, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28143,1,52993,443,10473,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7737,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:7WQBEq/QCPNFLId7r93vN98nPHQ=", + "1:nmxmtIja0z/MV5rgbBnScsKtW0U=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28143", + "palo_alto.pan_os.network.nat.community_id": "1:nmxmtIja0z/MV5rgbBnScsKtW0U=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 10473, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52993, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52995, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 6549, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28272,1,52995,443,20446,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7738,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:r3rve3ghPTa/BACcRlan0FEgZFw=", + "1:XNlHvX7cDGGCkvSS/aFHGg/RnAk=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28272", + "palo_alto.pan_os.network.nat.community_id": "1:XNlHvX7cDGGCkvSS/aFHGg/RnAk=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 20446, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52995, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52996, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 7095, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28146,1,52996,443,34699,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7739,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:2A2PtRAEa2EIbgp0B+6pQMVyM1o=", + "1:DqCF4BufQU/spPG8UYok6IrChWo=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28146", + "palo_alto.pan_os.network.nat.community_id": "1:DqCF4BufQU/spPG8UYok6IrChWo=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 34699, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52996, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:36.000Z", + "client.ip": "192.168.15.224", + "client.port": 52997, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 7641, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:36,012801096514,THREAT,url,2049,2018/11/30 16:44:36,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:36,28278,1,52997,443,22820,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7740,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:ttgSlbqHs+GKueSexHsquCbfjCk=", + "1:lJHLfl+/x95GohXozN52zokIxvA=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28278", + "palo_alto.pan_os.network.nat.community_id": "1:lJHLfl+/x95GohXozN52zokIxvA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 22820, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52997, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:37.000Z", + "client.ip": "192.168.15.224", + "client.port": 52998, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 8187, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:37,012801096514,THREAT,url,2049,2018/11/30 16:44:37,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:37,28185,1,52998,443,41060,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7741,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:h4Yhxi4lfeFiizTNiugYzEk9CM4=", + "1:OVE3ctnTt5X1L6qNDr4QILL0dFg=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28185", + "palo_alto.pan_os.network.nat.community_id": "1:OVE3ctnTt5X1L6qNDr4QILL0dFg=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 41060, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52998, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:37.000Z", + "client.ip": "192.168.15.224", + "client.port": 52999, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 8733, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:37,012801096514,THREAT,url,2049,2018/11/30 16:44:37,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:37,28201,1,52999,443,9058,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7742,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:SsYXkesHdCi9Tx1qsjfCIH8mHm4=", + "1:bzhUSIQYpz+jY7TA+j8UmFOdJ08=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28201", + "palo_alto.pan_os.network.nat.community_id": "1:bzhUSIQYpz+jY7TA+j8UmFOdJ08=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 9058, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 52999, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:37.000Z", + "client.ip": "192.168.15.224", + "client.port": 53001, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 9278, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:37,012801096514,THREAT,url,2049,2018/11/30 16:44:37,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:37,28148,1,53001,443,54846,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7743,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:84WYKtahMlLwf+ZletWf/DNnE30=", + "1:NRiTxPYsIvfOnUXhwuF5KPucNf8=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28148", + "palo_alto.pan_os.network.nat.community_id": "1:NRiTxPYsIvfOnUXhwuF5KPucNf8=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 54846, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53001, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:37.000Z", + "client.ip": "192.168.15.224", + "client.port": 53002, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 9824, + "log.original": "Nov 30 16:44:37 PA-220 1,2018/11/30 16:44:37,012801096514,THREAT,url,2049,2018/11/30 16:44:37,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:37,28121,1,53002,443,52731,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7744,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:X4Zvg9D/bP0EYECRSLna3za4r68=", + "1:9noBCzeHKSZpuQWETkS7W5mOTT0=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28121", + "palo_alto.pan_os.network.nat.community_id": "1:9noBCzeHKSZpuQWETkS7W5mOTT0=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 52731, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53002, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:38.000Z", + "client.ip": "192.168.15.224", + "client.port": 53003, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 10370, + "log.original": "Nov 30 16:44:38 PA-220 1,2018/11/30 16:44:38,012801096514,THREAT,url,2049,2018/11/30 16:44:38,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:38,28228,1,53003,443,15165,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7745,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:greC2ffRfw5diAvjZvd+je5rhrk=", + "1:NQ3UU1pIt7hTJ2TYkbe6yjIVIsw=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28228", + "palo_alto.pan_os.network.nat.community_id": "1:NQ3UU1pIt7hTJ2TYkbe6yjIVIsw=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 15165, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53003, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:38.000Z", + "client.ip": "192.168.15.224", + "client.port": 53004, + "destination.address": "23.72.137.131", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.137.131", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 10916, + "log.original": "Nov 30 16:44:38 PA-220 1,2018/11/30 16:44:38,012801096514,THREAT,url,2049,2018/11/30 16:44:38,192.168.15.224,23.72.137.131,192.168.1.63,23.72.137.131,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:38,28196,1,53004,443,53918,443,0x403000,tcp,block-url,\"b.scorecardresearch.com/\",(9999),business-and-economy,informational,client-to-server,7746,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:EcYXcH6rGmgtHGDCjUQcmM+hR0c=", + "1:pzcUv98hFdzW07/5bQ15jcEOAAM=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.137.131", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28196", + "palo_alto.pan_os.network.nat.community_id": "1:pzcUv98hFdzW07/5bQ15jcEOAAM=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 53918, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "b.scorecardresearch.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.137.131", + "192.168.1.63", + "23.72.137.131" + ], + "server.ip": "23.72.137.131", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53004, + "tags": [ + "pan-os" + ], + "url.original": "b.scorecardresearch.com/" + }, + { + "@timestamp": "2018-11-30T16:44:38.000Z", + "client.ip": "192.168.15.224", + "client.port": 53000, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 11463, + "log.original": "Nov 30 16:44:38 PA-220 1,2018/11/30 16:44:38,012801096514,THREAT,url,2049,2018/11/30 16:44:38,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:38,28007,1,53000,443,40792,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7747,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:OX20k3mW9JzBo4RmzVjTtvOawu4=", + "1:iHNZW72XqbNDDHf4ziF4MHkPsq8=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28007", + "palo_alto.pan_os.network.nat.community_id": "1:iHNZW72XqbNDDHf4ziF4MHkPsq8=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 40792, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53000, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53006, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 12009, + "log.original": "Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28117,1,53006,443,54044,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7748,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:oWKucHrzLhzCpDmWJPLBELyMrzw=", + "1:WmnET8BZufXJpdVk04PIVGj+Kgk=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28117", + "palo_alto.pan_os.network.nat.community_id": "1:WmnET8BZufXJpdVk04PIVGj+Kgk=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 54044, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53006, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53007, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 12555, + "log.original": "Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28109,1,53007,443,19544,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7749,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:63h3SPrH4/pr2GMJEkpg++zeJMU=", + "1:qCp/BEY5ANYRj3J+xhPpjW00kTA=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28109", + "palo_alto.pan_os.network.nat.community_id": "1:qCp/BEY5ANYRj3J+xhPpjW00kTA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 19544, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53007, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53008, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 13101, + "log.original": "Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28260,1,53008,443,13462,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7750,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:MpnxD3AYYy43RYm8rBQmgxv2NQ0=", + "1:QTdF07Qsc5riXT20oN+YWQ2Yt6U=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28260", + "palo_alto.pan_os.network.nat.community_id": "1:QTdF07Qsc5riXT20oN+YWQ2Yt6U=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 13462, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53008, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53010, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 13647, + "log.original": "Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28275,1,53010,443,44892,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7752,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:kibVei9WSdxBMV8iUIg8nZMCiss=", + "1:v9tvyVPSkJni3/nd8jUVgcsqqQk=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28275", + "palo_alto.pan_os.network.nat.community_id": "1:v9tvyVPSkJni3/nd8jUVgcsqqQk=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 44892, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53010, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53011, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 14193, + "log.original": "Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28266,1,53011,443,16487,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7753,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:l33FK2i+ASkvlnDYQYRCH4evHcI=", + "1:00oN9bToRGtVdpy+GQ742sbkpfI=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28266", + "palo_alto.pan_os.network.nat.community_id": "1:00oN9bToRGtVdpy+GQ742sbkpfI=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 16487, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53011, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53012, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 14739, + "log.original": "Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28294,1,53012,443,23952,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7754,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:cSD3ZfDTv0BFEStL/v2rRm0wow0=", + "1:AmJtkqyAyzgRUMxNGxjT3hhwb8c=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28294", + "palo_alto.pan_os.network.nat.community_id": "1:AmJtkqyAyzgRUMxNGxjT3hhwb8c=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 23952, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53012, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53013, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 15285, + "log.original": "Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28248,1,53013,443,2810,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7755,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:l8cnTJWO0qdKrXtvCBWHbQUpvgE=", + "1:CzGrIa22/gNrIvkcJMIh6eWNjFI=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28248", + "palo_alto.pan_os.network.nat.community_id": "1:CzGrIa22/gNrIvkcJMIh6eWNjFI=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 2810, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53013, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53014, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 15830, + "log.original": "Nov 30 16:44:46 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28274,1,53014,443,13272,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7756,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:2dLIQC1NuJw/6kPkSukOc7rN5UE=", + "1:b3MpSidntZseAvCtO89765ETlyI=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28274", + "palo_alto.pan_os.network.nat.community_id": "1:b3MpSidntZseAvCtO89765ETlyI=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 13272, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53014, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53022, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 16376, + "log.original": "Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28285,1,53022,443,8663,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7762,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:39KkS/Y1cEc0OLIWR3+26TPoFhQ=", + "1:wug3mTERsDOMF1R52vDi6SpWbMc=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28285", + "palo_alto.pan_os.network.nat.community_id": "1:wug3mTERsDOMF1R52vDi6SpWbMc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 8663, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53022, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53023, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 16921, + "log.original": "Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28306,1,53023,443,55738,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7763,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:IFLzwMkLmz8UfCYPFfRgTIBIzSI=", + "1:ktdKYACJa2q76tdS55sj5QaeMBs=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28306", + "palo_alto.pan_os.network.nat.community_id": "1:ktdKYACJa2q76tdS55sj5QaeMBs=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 55738, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53023, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53024, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 17467, + "log.original": "Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28116,1,53024,443,10650,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7764,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:spPQtp0F92JeXKXtvGndU6vymNo=", + "1:sWvGFBOOisURcvYe5nB5HUSa6B8=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28116", + "palo_alto.pan_os.network.nat.community_id": "1:sWvGFBOOisURcvYe5nB5HUSa6B8=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 10650, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53024, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53025, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 18013, + "log.original": "Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28214,1,53025,443,44087,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7765,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:xBwOt7zrEs9oyuV1oEHKLKXdg1Q=", + "1:LHZawFx+zgZPTd01rJqX/31kNmE=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28214", + "palo_alto.pan_os.network.nat.community_id": "1:LHZawFx+zgZPTd01rJqX/31kNmE=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 44087, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53025, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:46.000Z", + "client.ip": "192.168.15.224", + "client.port": 53026, + "destination.address": "152.195.55.192", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "152.195.55.192", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 18559, + "log.original": "Nov 30 16:44:47 PA-220 1,2018/11/30 16:44:46,012801096514,THREAT,url,2049,2018/11/30 16:44:46,192.168.15.224,152.195.55.192,192.168.1.63,152.195.55.192,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:46,28080,1,53026,443,15915,443,0x403000,tcp,block-url,\"consent.cmp.oath.com/\",(9999),business-and-economy,informational,client-to-server,7766,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:z5jHjldbSP1U0TqDWR9Uox2k3Js=", + "1:XcghkvaiKIQS/KgINx7Mb5Vvn3M=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "152.195.55.192", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28080", + "palo_alto.pan_os.network.nat.community_id": "1:XcghkvaiKIQS/KgINx7Mb5Vvn3M=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 15915, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "152.195.55.192", + "192.168.1.63", + "152.195.55.192" + ], + "server.ip": "152.195.55.192", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53026, + "tags": [ + "pan-os" + ], + "url.original": "consent.cmp.oath.com/" + }, + { + "@timestamp": "2018-11-30T16:44:53.000Z", + "client.ip": "192.168.15.224", + "client.port": 53041, + "destination.address": "151.101.2.2", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "151.101.2.2", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 19105, + "log.original": "Nov 30 16:44:53 PA-220 1,2018/11/30 16:44:53,012801096514,THREAT,url,2049,2018/11/30 16:44:53,192.168.15.224,151.101.2.2,192.168.1.63,151.101.2.2,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:53,28318,1,53041,443,41165,443,0x403000,tcp,block-url,\"cdn.taboola.com/\",(9999),business-and-economy,informational,client-to-server,7768,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:tQxUFWF1PJh9XS+U53oZgNQELoA=", + "1:XdO4yHx+1HZM4GcutRTyur9ixdM=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "151.101.2.2", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28318", + "palo_alto.pan_os.network.nat.community_id": "1:XdO4yHx+1HZM4GcutRTyur9ixdM=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 41165, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "cdn.taboola.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "151.101.2.2", + "192.168.1.63", + "151.101.2.2" + ], + "server.ip": "151.101.2.2", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53041, + "tags": [ + "pan-os" + ], + "url.original": "cdn.taboola.com/" + }, + { + "@timestamp": "2018-11-30T16:44:54.000Z", + "client.ip": "192.168.15.224", + "client.port": 53040, + "destination.address": "54.192.7.152", + "destination.geo.city_name": "Seattle", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 47.6103, + "destination.geo.location.lon": -122.3341, + "destination.geo.region_iso_code": "US-WA", + "destination.geo.region_name": "Washington", + "destination.ip": "54.192.7.152", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 19640, + "log.original": "Nov 30 16:44:54 PA-220 1,2018/11/30 16:44:54,012801096514,THREAT,url,2049,2018/11/30 16:44:54,192.168.15.224,54.192.7.152,192.168.1.63,54.192.7.152,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:54,28300,1,53040,443,54133,443,0x403000,tcp,block-url,\"rules.quantcount.com/\",(9999),business-and-economy,informational,client-to-server,7769,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:J9ymoylt3wkbcwWFUbTc1FK8W6k=", + "1:kCzU3MoZUMh7VlhTewngoP1twbw=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.192.7.152", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28300", + "palo_alto.pan_os.network.nat.community_id": "1:kCzU3MoZUMh7VlhTewngoP1twbw=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 54133, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "rules.quantcount.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.192.7.152", + "192.168.1.63", + "54.192.7.152" + ], + "server.ip": "54.192.7.152", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53040, + "tags": [ + "pan-os" + ], + "url.original": "rules.quantcount.com/" + }, + { + "@timestamp": "2018-11-30T16:44:58.000Z", + "client.ip": "192.168.15.224", + "client.port": 53093, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 20182, + "log.original": "Nov 30 16:44:59 PA-220 1,2018/11/30 16:44:58,012801096514,THREAT,url,2049,2018/11/30 16:44:58,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:58,28339,1,53093,443,8485,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7770,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:DDpR8PTbIvvnd+7Hcre+jZQVtaY=", + "1:fj3W3hxHPqT4snZlcRibDiqLNvs=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28339", + "palo_alto.pan_os.network.nat.community_id": "1:fj3W3hxHPqT4snZlcRibDiqLNvs=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 8485, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53093, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:44:58.000Z", + "client.ip": "192.168.15.224", + "client.port": 53094, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 20739, + "log.original": "Nov 30 16:44:59 PA-220 1,2018/11/30 16:44:58,012801096514,THREAT,url,2049,2018/11/30 16:44:58,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:58,28299,1,53094,443,12496,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7771,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:1dccHKUcnMkeYh68uGS1Jhl6+Hk=", + "1:HLMiinoD9jzLzaYU394wqKksBUE=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28299", + "palo_alto.pan_os.network.nat.community_id": "1:HLMiinoD9jzLzaYU394wqKksBUE=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 12496, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53094, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:44:58.000Z", + "client.ip": "192.168.15.224", + "client.port": 53095, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 21297, + "log.original": "Nov 30 16:44:59 PA-220 1,2018/11/30 16:44:58,012801096514,THREAT,url,2049,2018/11/30 16:44:58,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:58,28303,1,53095,443,17029,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7772,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:URFNGbFKOwT3Iaugo33D1mB/ndw=", + "1:pNMLPgDpZv2+S840jW/Ggq8ng2I=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28303", + "palo_alto.pan_os.network.nat.community_id": "1:pNMLPgDpZv2+S840jW/Ggq8ng2I=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 17029, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53095, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:44:58.000Z", + "client.ip": "192.168.15.224", + "client.port": 53096, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 21855, + "log.original": "Nov 30 16:44:59 PA-220 1,2018/11/30 16:44:58,012801096514,THREAT,url,2049,2018/11/30 16:44:58,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:58,28390,1,53096,443,23696,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7773,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:/KMTfFetIlydTraxch89t5PYve0=", + "1:l6AkSmB92aDAHpLhiSCR28J+ANI=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28390", + "palo_alto.pan_os.network.nat.community_id": "1:l6AkSmB92aDAHpLhiSCR28J+ANI=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 23696, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53096, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:44:59.000Z", + "client.ip": "192.168.15.224", + "client.port": 53097, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 22413, + "log.original": "Nov 30 16:45:00 PA-220 1,2018/11/30 16:44:59,012801096514,THREAT,url,2049,2018/11/30 16:44:59,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:59,28433,1,53097,443,34769,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7774,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:Z8gFtZEJJ5xho2+kyaSyoXp1O/I=", + "1:33ah/rOB1xL3Yy0FUH0sEGuRvx8=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28433", + "palo_alto.pan_os.network.nat.community_id": "1:33ah/rOB1xL3Yy0FUH0sEGuRvx8=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 34769, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53097, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:44:59.000Z", + "client.ip": "192.168.15.224", + "client.port": 53099, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 22971, + "log.original": "Nov 30 16:45:00 PA-220 1,2018/11/30 16:44:59,012801096514,THREAT,url,2049,2018/11/30 16:44:59,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:59,28380,1,53099,443,22486,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7775,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:dS0Vb9L/suztc58TuCJc5kLrnd4=", + "1:zOzoB9ZSg+/QZ7bt4sM6/I2TOXc=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28380", + "palo_alto.pan_os.network.nat.community_id": "1:zOzoB9ZSg+/QZ7bt4sM6/I2TOXc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 22486, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53099, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:44:59.000Z", + "client.ip": "192.168.15.224", + "client.port": 53100, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 23529, + "log.original": "Nov 30 16:45:00 PA-220 1,2018/11/30 16:44:59,012801096514,THREAT,url,2049,2018/11/30 16:44:59,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:44:59,28363,1,53100,443,12894,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7776,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:ZWPOx8XRihDI9+WqUDIHe1OyInQ=", + "1:l+VVTNzHKEhzOIqE/8PVt4xidPQ=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28363", + "palo_alto.pan_os.network.nat.community_id": "1:l+VVTNzHKEhzOIqE/8PVt4xidPQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 12894, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53100, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:45:00.000Z", + "client.ip": "192.168.15.224", + "client.port": 53101, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 24087, + "log.original": "Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28349,1,53101,443,62348,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7777,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:T7UcACShDtZytIaufQKjiQ8jkhM=", + "1:/GTSxrH684FoBXpyEBepCy2M81Q=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28349", + "palo_alto.pan_os.network.nat.community_id": "1:/GTSxrH684FoBXpyEBepCy2M81Q=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 62348, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53101, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:45:00.000Z", + "client.ip": "192.168.15.224", + "client.port": 53104, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 24645, + "log.original": "Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28411,1,53104,443,6224,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7778,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:v2q2MvHECPCP6FDhZOfU9EhWDmw=", + "1:z/innn6bIUB0vbGtF+NoTKxtaCQ=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28411", + "palo_alto.pan_os.network.nat.community_id": "1:z/innn6bIUB0vbGtF+NoTKxtaCQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 6224, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53104, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:45:00.000Z", + "client.ip": "192.168.15.224", + "client.port": 53107, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 25202, + "log.original": "Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28397,1,53107,443,44120,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7779,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:/FL+10fyEBLqVR4oJrH3NBEx/pg=", + "1:7H4lb05cbTOpCa4pIgruj3M2WrY=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28397", + "palo_alto.pan_os.network.nat.community_id": "1:7H4lb05cbTOpCa4pIgruj3M2WrY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 44120, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53107, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:45:00.000Z", + "client.ip": "192.168.15.224", + "client.port": 53108, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 25760, + "log.original": "Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28347,1,53108,443,44228,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7780,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:abQPCp6V8x2Fumiz5x/+vZnuNfM=", + "1:G3GfJYWnCjo8Ato/aBgr49UKGTI=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28347", + "palo_alto.pan_os.network.nat.community_id": "1:G3GfJYWnCjo8Ato/aBgr49UKGTI=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 44228, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53108, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:45:00.000Z", + "client.ip": "192.168.15.224", + "client.port": 53109, + "destination.address": "52.4.120.175", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.4.120.175", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 26318, + "log.original": "Nov 30 16:45:00 PA-220 1,2018/11/30 16:45:00,012801096514,THREAT,url,2049,2018/11/30 16:45:00,192.168.15.224,52.4.120.175,192.168.1.63,52.4.120.175,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:00,28443,1,53109,443,31322,443,0x403000,tcp,block-url,\"srv-2018-11-30-22.config.parsely.com/\",(9999),business-and-economy,informational,client-to-server,7781,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:Ix3Fldb6W5hQx30Bw7Vd5/lm8hw=", + "1:Ni0ZlLTDuNH8F3hFm9nLZkj/SKI=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.4.120.175", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28443", + "palo_alto.pan_os.network.nat.community_id": "1:Ni0ZlLTDuNH8F3hFm9nLZkj/SKI=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 31322, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "52.4.120.175", + "192.168.1.63", + "52.4.120.175" + ], + "server.ip": "52.4.120.175", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53109, + "tags": [ + "pan-os" + ], + "url.original": "srv-2018-11-30-22.config.parsely.com/" + }, + { + "@timestamp": "2018-11-30T16:45:13.000Z", + "client.ip": "192.168.15.224", + "client.port": 53118, + "destination.address": "216.58.194.98", + "destination.geo.city_name": "Mountain View", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.386, + "destination.geo.location.lon": -122.0838, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "216.58.194.98", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 26876, + "log.original": "Nov 30 16:45:14 PA-220 1,2018/11/30 16:45:13,012801096514,THREAT,url,2049,2018/11/30 16:45:13,192.168.15.224,216.58.194.98,192.168.1.63,216.58.194.98,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:13,28439,1,53118,443,1672,443,0x403000,tcp,block-url,\"www.googleadservices.com/\",(9999),business-and-economy,informational,client-to-server,7782,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:iBwlaPm6awPJaLJMdMMVOH9f5RU=", + "1:WQC21tSR1QNUhWYgrcbgaLyTkos=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "216.58.194.98", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28439", + "palo_alto.pan_os.network.nat.community_id": "1:WQC21tSR1QNUhWYgrcbgaLyTkos=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 1672, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "www.googleadservices.com/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "216.58.194.98", + "192.168.1.63", + "216.58.194.98" + ], + "server.ip": "216.58.194.98", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53118, + "tags": [ + "pan-os" + ], + "url.original": "www.googleadservices.com/" + }, + { + "@timestamp": "2018-11-30T16:45:15.000Z", + "client.ip": "192.168.15.224", + "client.port": 53126, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 27423, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:15,012801096514,THREAT,url,2049,2018/11/30 16:45:15,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:15,25958,1,53126,443,20801,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7783,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:0TIOUPyQekmpFSgX6VlMP7asdJs=", + "1:hYoXMUwV0cAKhYUb4hSHsLUSo1s=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "25958", + "palo_alto.pan_os.network.nat.community_id": "1:hYoXMUwV0cAKhYUb4hSHsLUSo1s=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 20801, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53126, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:15.000Z", + "client.ip": "192.168.15.224", + "client.port": 53127, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 27968, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:15,012801096514,THREAT,url,2049,2018/11/30 16:45:15,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:15,28429,1,53127,443,24533,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7784,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:5CeaDtLLJAW4qpNe5rR3zJ3u1KM=", + "1:al192CljLcXBQ5a9fXhiLM+uAKg=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28429", + "palo_alto.pan_os.network.nat.community_id": "1:al192CljLcXBQ5a9fXhiLM+uAKg=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 24533, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53127, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:15.000Z", + "client.ip": "192.168.15.224", + "client.port": 53128, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 28513, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:15,012801096514,THREAT,url,2049,2018/11/30 16:45:15,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:15,28465,1,53128,443,30150,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7785,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:HYgrk1tiJGzjAjdHLQJ54QqqEH0=", + "1:qI8dj7I/HOk1zkz/wkZBjQ/igsw=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28465", + "palo_alto.pan_os.network.nat.community_id": "1:qI8dj7I/HOk1zkz/wkZBjQ/igsw=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 30150, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53128, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:15.000Z", + "client.ip": "192.168.15.224", + "client.port": 53129, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 29058, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:15,012801096514,THREAT,url,2049,2018/11/30 16:45:15,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:15,28504,1,53129,443,36305,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7786,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:8k83tpdWoK7nNJrq4t81UXuScHA=", + "1:NTrpQ6lfrWcfRCXSB/tQ49z7sOQ=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28504", + "palo_alto.pan_os.network.nat.community_id": "1:NTrpQ6lfrWcfRCXSB/tQ49z7sOQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 36305, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53129, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:16.000Z", + "client.ip": "192.168.15.224", + "client.port": 53130, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 29603, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28458,1,53130,443,42682,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7787,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:Ob0VEjF8YeGq1hR7SbX0pZ+5/EI=", + "1:93oplAL+YibXq75Qng9iomHp97k=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28458", + "palo_alto.pan_os.network.nat.community_id": "1:93oplAL+YibXq75Qng9iomHp97k=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 42682, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53130, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:16.000Z", + "client.ip": "192.168.15.224", + "client.port": 53131, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 30148, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28491,1,53131,443,22530,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7788,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:WlDGM7WbDrN83JffZtwB6PNK3Y8=", + "1:uhEHJXnnMaxBL0QYfNxS8lxZkls=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28491", + "palo_alto.pan_os.network.nat.community_id": "1:uhEHJXnnMaxBL0QYfNxS8lxZkls=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 22530, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53131, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:16.000Z", + "client.ip": "192.168.15.224", + "client.port": 53132, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 30693, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28520,1,53132,443,43713,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7789,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:U5qBRasQ13RQONeFOyA2+9QbWK8=", + "1:KtlZO5BbsoCg/ymqE05xAvw/iIA=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28520", + "palo_alto.pan_os.network.nat.community_id": "1:KtlZO5BbsoCg/ymqE05xAvw/iIA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 43713, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53132, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:16.000Z", + "client.ip": "192.168.15.224", + "client.port": 53133, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 31238, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28335,1,53133,443,60608,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7790,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:S99EiT3uXg1VHeNM5TVPoeW1Zrk=", + "1:4MqfykfAOpIQmtvXcxzLNXqgyTs=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28335", + "palo_alto.pan_os.network.nat.community_id": "1:4MqfykfAOpIQmtvXcxzLNXqgyTs=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 60608, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53133, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:16.000Z", + "client.ip": "192.168.15.224", + "client.port": 53134, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 31783, + "log.original": "Nov 30 16:45:16 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28414,1,53134,443,9302,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7791,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:IMZ08eMrtDP/qCq8+cruyYo5r98=", + "1:Qj+AYB26PhFUPHkeHTP+u0XmR3A=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28414", + "palo_alto.pan_os.network.nat.community_id": "1:Qj+AYB26PhFUPHkeHTP+u0XmR3A=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 9302, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53134, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:16.000Z", + "client.ip": "192.168.15.224", + "client.port": 53135, + "destination.address": "23.72.145.245", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.72.145.245", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 32327, + "log.original": "Nov 30 16:45:17 PA-220 1,2018/11/30 16:45:16,012801096514,THREAT,url,2049,2018/11/30 16:45:16,192.168.15.224,23.72.145.245,192.168.1.63,23.72.145.245,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:16,28488,1,53135,443,11634,443,0x403000,tcp,block-url,\"service.maxymiser.net/\",(9999),business-and-economy,informational,client-to-server,7792,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:Z6zBvBoA+0NQryjJ96nYaFcOuXw=", + "1:BQw3RXiNvT4NW4kw0J5Ol6rFN5A=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.72.145.245", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28488", + "palo_alto.pan_os.network.nat.community_id": "1:BQw3RXiNvT4NW4kw0J5Ol6rFN5A=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 11634, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "23.72.145.245", + "192.168.1.63", + "23.72.145.245" + ], + "server.ip": "23.72.145.245", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53135, + "tags": [ + "pan-os" + ], + "url.original": "service.maxymiser.net/" + }, + { + "@timestamp": "2018-11-30T16:45:26.000Z", + "client.ip": "192.168.15.224", + "client.port": 53152, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 32872, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28469,1,53152,443,30818,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7793,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:Qo8vSWzvn9QN5ADlmHxjJft+bxA=", + "1:1XJhGS1EujYy5wSCA64wjjK7hwA=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28469", + "palo_alto.pan_os.network.nat.community_id": "1:1XJhGS1EujYy5wSCA64wjjK7hwA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 30818, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53152, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:26.000Z", + "client.ip": "192.168.15.224", + "client.port": 53155, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 33417, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28556,1,53155,443,64260,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7794,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:N2DPhwTnklulMwYKpcc4j0nLwu4=", + "1:YHN6cU700Mp7622M1rIzbnPQ+ik=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28556", + "palo_alto.pan_os.network.nat.community_id": "1:YHN6cU700Mp7622M1rIzbnPQ+ik=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 64260, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53155, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:26.000Z", + "client.ip": "192.168.15.224", + "client.port": 53158, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 33962, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28558,1,53158,443,7071,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7795,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:j5m21kfahBuP4jLMiqVnsVTJZ+Q=", + "1:o5UB5uvp2ThXPXChyc7lgvBMH0s=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28558", + "palo_alto.pan_os.network.nat.community_id": "1:o5UB5uvp2ThXPXChyc7lgvBMH0s=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 7071, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53158, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:26.000Z", + "client.ip": "192.168.15.224", + "client.port": 53160, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 34506, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28531,1,53160,443,4512,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7796,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:8jQcqVCl+Q8N6jDNJlJwuydmDsA=", + "1:RRfOKybSMc/qYj1QHLEpuh+r0Eg=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28531", + "palo_alto.pan_os.network.nat.community_id": "1:RRfOKybSMc/qYj1QHLEpuh+r0Eg=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 4512, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53160, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:26.000Z", + "client.ip": "192.168.15.224", + "client.port": 53161, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 35050, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:26,012801096514,THREAT,url,2049,2018/11/30 16:45:26,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:26,28580,1,53161,443,3422,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7797,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:zcJ3HhZj3urz6vGwVhseviLv7kY=", + "1:KhCfFcRk3sovsTfN9pRRfgjsP84=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28580", + "palo_alto.pan_os.network.nat.community_id": "1:KhCfFcRk3sovsTfN9pRRfgjsP84=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 3422, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53161, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:27.000Z", + "client.ip": "192.168.15.224", + "client.port": 53162, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 35594, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28477,1,53162,443,4651,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7798,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:DJHoN3ahXiIF4S4aGocL7KS/AhY=", + "1:hZhkH3fz7n30Q+zsXnQejsna14Q=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28477", + "palo_alto.pan_os.network.nat.community_id": "1:hZhkH3fz7n30Q+zsXnQejsna14Q=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 4651, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53162, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:27.000Z", + "client.ip": "192.168.15.224", + "client.port": 53163, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 36138, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28484,1,53163,443,19068,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7799,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:oQCUvcNDUq8NlFsOiIljRD/md2E=", + "1:lFuLGvzKiGz77tAPKRWLQ7eIBNw=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28484", + "palo_alto.pan_os.network.nat.community_id": "1:lFuLGvzKiGz77tAPKRWLQ7eIBNw=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 19068, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53163, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:27.000Z", + "client.ip": "192.168.15.224", + "client.port": 53164, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 36683, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28609,1,53164,443,5831,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7800,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:DjIyvY/MLQ8U4RrMwFVhfq30m6g=", + "1:lXgqW6uer7QCnFv+5qVbgX4vM6E=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28609", + "palo_alto.pan_os.network.nat.community_id": "1:lXgqW6uer7QCnFv+5qVbgX4vM6E=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 5831, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53164, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:27.000Z", + "client.ip": "192.168.15.224", + "client.port": 53165, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 37227, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28564,1,53165,443,7084,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7801,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:fsi7g4zFbrFG09Mvo8P/WofCEKc=", + "1:SDf7YJ4JLx2oja8SY0iCD/f9ZYk=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28564", + "palo_alto.pan_os.network.nat.community_id": "1:SDf7YJ4JLx2oja8SY0iCD/f9ZYk=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 7084, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53165, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:27.000Z", + "client.ip": "192.168.15.224", + "client.port": 53166, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 37771, + "log.original": "Nov 30 16:45:27 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28542,1,53166,443,18633,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7802,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:wICcAfDG87s8YdjIhDgBqv6mTws=", + "1:/wf94ECkqPez+fxVgk+3KErtaBQ=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28542", + "palo_alto.pan_os.network.nat.community_id": "1:/wf94ECkqPez+fxVgk+3KErtaBQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 18633, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53166, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:27.000Z", + "client.ip": "192.168.15.224", + "client.port": 53167, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 38316, + "log.original": "Nov 30 16:45:28 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28590,1,53167,443,25557,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7803,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:L9I6mLjr15WmWcGfC1vPrN0NmY0=", + "1:lGMn2sEJLK3qbOX02axD1srH/FY=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28590", + "palo_alto.pan_os.network.nat.community_id": "1:lGMn2sEJLK3qbOX02axD1srH/FY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 25557, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53167, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:27.000Z", + "client.ip": "192.168.15.224", + "client.port": 53150, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 38861, + "log.original": "Nov 30 16:45:28 PA-220 1,2018/11/30 16:45:27,012801096514,THREAT,url,2049,2018/11/30 16:45:27,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:27,28455,1,53150,443,20661,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7804,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:pvzPjqjqA6kLTjxiRDVSDxuidwg=", + "1:O1zDnt5d52xTreiMgL/sHMRHiXA=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28455", + "palo_alto.pan_os.network.nat.community_id": "1:O1zDnt5d52xTreiMgL/sHMRHiXA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 20661, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53150, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:28.000Z", + "client.ip": "192.168.15.224", + "client.port": 53185, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 39406, + "log.original": "Nov 30 16:45:29 PA-220 1,2018/11/30 16:45:28,012801096514,THREAT,url,2049,2018/11/30 16:45:28,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:28,28585,1,53185,443,65438,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7805,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:hu8p8gkxiimZqTLhIkgVfSePEqk=", + "1:CwNRTMQumfdoC3msd4z5PIYkKLU=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28585", + "palo_alto.pan_os.network.nat.community_id": "1:CwNRTMQumfdoC3msd4z5PIYkKLU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 65438, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53185, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:28.000Z", + "client.ip": "192.168.15.224", + "client.port": 53187, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 39951, + "log.original": "Nov 30 16:45:29 PA-220 1,2018/11/30 16:45:28,012801096514,THREAT,url,2049,2018/11/30 16:45:28,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:28,28462,1,53187,443,53101,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7806,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:z12wzV1bKYppHPfC9LypWH+RtE4=", + "1:0YBp8myYbHSoKWG2HvxutMfose0=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28462", + "palo_alto.pan_os.network.nat.community_id": "1:0YBp8myYbHSoKWG2HvxutMfose0=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 53101, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53187, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:28.000Z", + "client.ip": "192.168.15.224", + "client.port": 53188, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 40496, + "log.original": "Nov 30 16:45:29 PA-220 1,2018/11/30 16:45:28,012801096514,THREAT,url,2049,2018/11/30 16:45:28,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:28,28839,1,53188,443,35463,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7807,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:eJYKKiIqzYxe5ja/6/hDB3CgzSI=", + "1:CQrsQ2CJN8/aVtRj6kkSqGiLA4w=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28839", + "palo_alto.pan_os.network.nat.community_id": "1:CQrsQ2CJN8/aVtRj6kkSqGiLA4w=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 35463, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53188, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + }, + { + "@timestamp": "2018-11-30T16:45:29.000Z", + "client.ip": "192.168.15.224", + "client.port": 53178, + "destination.address": "54.209.101.70", + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.209.101.70", + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "url_filtering", + "event.category": "security_threat", + "event.dataset": "palo_alto.pan_os", + "event.module": "palo_alto", + "event.outcome": "block-url", + "event.severity": 5, + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "labels.temporary_match": true, + "log.level": "informational", + "log.offset": 41041, + "log.original": "Nov 30 16:45:30 PA-220 1,2018/11/30 16:45:29,012801096514,THREAT,url,2049,2018/11/30 16:45:29,192.168.15.224,54.209.101.70,192.168.1.63,54.209.101.70,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:45:29,28400,1,53178,443,45769,443,0x403000,tcp,block-url,\"segment-data.zqtk.net/\",(9999),business-and-economy,informational,client-to-server,7808,0x2000000000000000,192.168.0.0-192.168.255.255,United States,0,,0,,,0,,,,,,,,0,0,0,0,0,,PA-220,,,,,0,,0,,N/A,unknown,AppThreat-0-0,0x0,0,4294967295,", + "network.application": "ssl", + "network.community_id": [ + "1:f+00RNTWn2IGrM2JmEAnEPoRwDg=", + "1:vbknc+k7pE33+aNpIggpIzlC7MY=" + ], + "network.direction": "inbound", + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.209.101.70", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "28400", + "palo_alto.pan_os.network.nat.community_id": "1:vbknc+k7pE33+aNpIggpIzlC7MY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 45769, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", + "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "54.209.101.70", + "192.168.1.63", + "54.209.101.70" + ], + "server.ip": "54.209.101.70", + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.geo.country_iso_code": "192.168.0.0-192.168.255.255", + "source.ip": "192.168.15.224", + "source.port": 53178, + "tags": [ + "pan-os" + ], + "url.original": "segment-data.zqtk.net/" + } +] \ No newline at end of file diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log b/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log new file mode 100644 index 000000000000..c3e74310f06b --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log @@ -0,0 +1,100 @@ +Nov 30 16:09:08 PA-220 1,2018/11/30 16:09:07,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:07,192.168.15.207,184.51.253.152,192.168.1.63,184.51.253.152,new_outbound_from_trust,,,apple-maps,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:07,22751,1,55113,443,16418,443,0x400053,tcp,allow,7734,1758,5976,36,2018/11/30 15:59:04,586,computer-and-internet-info,0,32091112,0x0,192.168.0.0-192.168.255.255,United States,0,16,20,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:10 PA-220 1,2018/11/30 16:09:09,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:09,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:09,24223,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:08:55,0,any,0,32091113,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:10 PA-220 1,2018/11/30 16:09:09,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:09,192.168.15.207,17.253.3.202,192.168.1.63,17.253.3.202,new_outbound_from_trust,,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:09,24138,1,55114,80,51990,80,0x40001c,tcp,allow,1574,539,1035,11,2018/11/30 16:08:51,1,computer-and-internet-info,0,32091114,0x0,192.168.0.0-192.168.255.255,United States,0,6,5,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:16 PA-220 1,2018/11/30 16:09:15,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:15,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:15,24043,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:01,0,any,0,32091115,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:16 PA-220 1,2018/11/30 16:09:15,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:15,192.168.15.196,216.58.194.99,192.168.1.63,216.58.194.99,new_outbound_from_trust,,,quic,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:15,23003,1,46774,443,15252,443,0x400019,udp,allow,3627,2014,1613,8,2018/11/30 16:07:13,0,any,0,32091116,0x0,192.168.0.0-192.168.255.255,United States,0,5,3,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:16 PA-220 1,2018/11/30 16:09:15,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:15,192.168.15.224,209.234.224.22,192.168.1.63,209.234.224.22,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:15,23919,1,52408,443,40763,443,0x400053,tcp,allow,41753,20642,21111,113,2018/11/30 16:07:33,85,web-advertisements,0,32091117,0x0,192.168.0.0-192.168.255.255,United States,0,62,51,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:22 PA-220 1,2018/11/30 16:09:21,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:21,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:21,21394,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:07,0,any,0,32091118,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:22 PA-220 1,2018/11/30 16:09:21,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:21,192.168.15.224,172.217.2.238,192.168.1.63,172.217.2.238,new_outbound_from_trust,,,quic,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:21,23698,1,59190,443,52881,443,0x400019,udp,allow,7097,3365,3732,16,2018/11/30 16:07:04,15,any,0,32091119,0x0,192.168.0.0-192.168.255.255,United States,0,7,9,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:23 PA-220 1,2018/11/30 16:09:22,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:22,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:22,24179,1,49728,53,26654,53,0x400019,udp,allow,301,80,221,2,2018/11/30 16:08:50,0,any,0,32091120,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:24 PA-220 1,2018/11/30 16:09:23,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:23,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:23,23933,1,50500,53,2486,53,0x400019,udp,allow,298,77,221,2,2018/11/30 16:08:51,0,any,0,32091121,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,17.249.60.78,192.168.1.63,17.249.60.78,new_outbound_from_trust,,,apple-push-notifications,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,22662,1,55112,443,42021,443,0x400053,tcp,allow,9978,4509,5469,32,2018/11/30 15:58:59,593,computer-and-internet-info,0,32091122,0x0,192.168.0.0-192.168.255.255,United States,0,16,16,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,24161,1,57632,53,24377,53,0x400019,udp,allow,297,73,224,2,2018/11/30 16:08:52,0,any,0,32091123,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,24107,1,50271,53,48792,53,0x400019,udp,allow,186,69,117,2,2018/11/30 16:08:52,0,any,0,32091124,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,24063,1,54061,53,2987,53,0x400019,udp,allow,392,85,307,2,2018/11/30 16:08:52,0,any,0,32091125,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,24145,1,52701,53,6945,53,0x400019,udp,allow,440,75,365,2,2018/11/30 16:08:52,0,any,0,32091126,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:28 PA-220 1,2018/11/30 16:09:27,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:27,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:27,24245,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:13,0,any,0,32091127,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:28 PA-220 1,2018/11/30 16:09:27,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:27,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:27,24167,1,62503,53,42208,53,0x400019,udp,allow,258,97,161,2,2018/11/30 16:08:54,1,any,0,32091128,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:29 PA-220 1,2018/11/30 16:09:28,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:28,192.168.15.224,98.138.49.44,192.168.1.63,98.138.49.44,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:28,24212,1,52442,443,14660,443,0x40001c,tcp,allow,9891,2086,7805,27,2018/11/30 16:08:54,17,web-advertisements,0,32091129,0x0,192.168.0.0-192.168.255.255,United States,0,14,13,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:29 PA-220 1,2018/11/30 16:09:28,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:28,192.168.15.224,72.30.3.43,192.168.1.63,72.30.3.43,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:28,24149,1,52441,443,16483,443,0x40001c,tcp,allow,8460,2354,6106,24,2018/11/30 16:08:54,17,web-advertisements,0,32091130,0x0,192.168.0.0-192.168.255.255,United States,0,13,11,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:30 PA-220 1,2018/11/30 16:09:29,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:29,192.168.15.196,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:29,24185,2,0,0,0,0,0x500019,icmp,allow,392,196,196,4,2018/11/30 16:09:15,0,any,0,32091131,0x0,192.168.0.0-192.168.255.255,United States,0,2,2,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:30 PA-220 1,2018/11/30 16:09:29,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:29,192.168.15.224,172.217.9.142,192.168.1.63,172.217.9.142,new_outbound_from_trust,,,ocsp,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:29,23856,1,52355,80,5570,80,0x40001c,tcp,allow,5790,2545,3245,36,2018/11/30 16:07:16,116,computer-and-internet-info,0,32091132,0x0,192.168.0.0-192.168.255.255,United States,0,19,17,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:30 PA-220 1,2018/11/30 16:09:29,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:29,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:29,24173,1,50196,53,24430,53,0x400019,udp,allow,261,82,179,2,2018/11/30 16:08:57,0,any,0,32091133,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:31 PA-220 1,2018/11/30 16:09:30,012801096514,TRAFFIC,start,2049,2018/11/30 16:09:30,192.168.15.224,54.84.80.198,192.168.1.63,54.84.80.198,new_outbound_from_trust,,,traps-management-service,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:30,24257,1,52454,443,12122,443,0x400053,tcp,allow,6295,1758,4537,25,2018/11/30 16:09:13,0,computer-and-internet-info,0,32091134,0x0,192.168.0.0-192.168.255.255,United States,0,13,12,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:33 PA-220 1,2018/11/30 16:09:32,012801096514,TRAFFIC,drop,2049,2018/11/30 16:09:32,192.168.15.224,199.167.55.52,192.168.1.63,199.167.55.52,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:32,24090,1,52445,4282,49145,4282,0x400019,tcp,allow,624,624,0,8,2018/11/30 16:09:12,13,any,0,32091135,0x0,192.168.0.0-192.168.255.255,United States,0,8,0,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:34 PA-220 1,2018/11/30 16:09:33,012801096514,TRAFFIC,deny,2049,2018/11/30 16:09:33,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:33,24242,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:19,0,any,0,32091136,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:35 PA-220 1,2018/11/30 16:09:34,012801096514,TRAFFIC,,2049,2018/11/30 16:09:34,192.168.15.210,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:34,24190,1,35485,53,33110,53,0x400019,udp,allow,215,85,130,2,2018/11/30 16:09:02,0,any,0,32091137,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:38 PA-220 1,2018/11/30 16:09:37,012801096514,TRAFFIC,test,2049,2018/11/30 16:09:37,192.168.15.224,172.217.9.142,192.168.1.63,172.217.9.142,new_outbound_from_trust,,,quic,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:37,23892,1,62730,443,9299,443,0x400019,udp,allow,4867,2876,1991,12,2018/11/30 16:07:20,15,any,0,32091138,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:39 PA-220 1,2018/11/30 16:09:38,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:38,192.168.15.224,151.101.2.2,192.168.1.63,151.101.2.2,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:38,24360,1,52506,443,47194,443,0x40001c,tcp,allow,1623,1100,523,13,2018/11/30 16:09:21,0,business-and-economy,0,32091139,0x0,192.168.0.0-192.168.255.255,United States,0,8,5,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:39 PA-220 1,2018/11/30 16:09:38,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:38,192.168.15.224,216.58.194.66,192.168.1.63,216.58.194.66,new_outbound_from_trust,,,quic,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:38,23952,1,60596,443,62921,443,0x400019,udp,allow,4405,1977,2428,9,2018/11/30 16:07:36,0,any,0,32091140,0x0,192.168.0.0-192.168.255.255,United States,0,5,4,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:40 PA-220 1,2018/11/30 16:09:39,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:39,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:39,24328,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:25,0,any,0,32091141,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:40 PA-220 1,2018/11/30 16:09:39,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:39,192.168.15.210,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:39,24385,2,0,0,0,0,0x500019,icmp,allow,392,196,196,4,2018/11/30 16:09:25,0,any,0,32091142,0x0,192.168.0.0-192.168.255.255,United States,0,2,2,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:40 PA-220 1,2018/11/30 16:09:39,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:39,192.168.15.224,184.51.253.193,192.168.1.63,184.51.253.193,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:39,24172,1,52514,443,41958,443,0x40001c,tcp,allow,7231,2228,5003,22,2018/11/30 16:09:22,0,web-advertisements,0,32091143,0x0,192.168.0.0-192.168.255.255,United States,0,12,10,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:41 PA-220 1,2018/11/30 16:09:40,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:40,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:40,24131,1,55155,53,51374,53,0x400019,udp,allow,267,96,171,2,2018/11/30 16:09:08,0,any,0,32091144,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:41 PA-220 1,2018/11/30 16:09:40,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:40,192.168.15.224,199.167.55.52,192.168.1.63,199.167.55.52,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:40,24393,1,52445,4282,25566,4282,0x400019,tcp,allow,78,78,0,1,2018/11/30 16:09:33,0,any,0,32091145,0x0,192.168.0.0-192.168.255.255,United States,0,1,0,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:43 PA-220 1,2018/11/30 16:09:42,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:42,192.168.15.224,199.167.52.219,192.168.1.63,199.167.52.219,new_outbound_from_trust,,,tanium,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:42,24976,1,52516,17472,63757,17472,0x40005e,tcp,allow,3402,1086,2316,20,2018/11/30 16:09:25,0,any,0,32091146,0x0,192.168.0.0-192.168.255.255,United States,0,11,9,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:43 PA-220 1,2018/11/30 16:09:42,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:42,192.168.15.224,52.71.117.196,192.168.1.63,52.71.117.196,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:42,24348,1,52511,443,3803,443,0x400053,tcp,allow,16594,2628,13966,38,2018/11/30 16:09:21,4,computer-and-internet-info,0,32091147,0x0,192.168.0.0-192.168.255.255,United States,0,19,19,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24046,1,3018,53,34994,53,0x400019,udp,allow,323,79,244,2,2018/11/30 16:09:12,0,any,0,32091148,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24196,1,16569,53,38064,53,0x400019,udp,allow,300,95,205,2,2018/11/30 16:09:12,0,any,0,32091149,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.186.194.41,192.168.1.63,35.186.194.41,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24264,1,52479,443,42924,443,0x400053,tcp,allow,6598,4296,2302,44,2018/11/30 16:09:19,8,insufficient-content,0,32091150,0x0,192.168.0.0-192.168.255.255,United States,0,24,20,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.201.124.9,192.168.1.63,35.201.124.9,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24248,1,52478,443,58977,443,0x400053,tcp,allow,65588,58831,6757,104,2018/11/30 16:09:19,8,insufficient-content,0,32091151,0x0,192.168.0.0-192.168.255.255,Asia Pacific Region,0,63,41,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,100.24.131.237,192.168.1.63,100.24.131.237,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24268,1,52502,443,64732,443,0x400053,tcp,allow,13076,4069,9007,32,2018/11/30 16:09:21,6,business-and-economy,0,32091152,0x0,192.168.0.0-192.168.255.255,United States,0,17,15,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,184.51.252.247,192.168.1.63,184.51.252.247,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24175,1,52458,443,58292,443,0x40001c,tcp,allow,1761,1100,661,15,2018/11/30 16:09:14,13,computer-and-internet-info,0,32091153,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.190.88.148,192.168.1.63,35.190.88.148,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24312,1,52484,443,32209,443,0x400053,tcp,allow,14732,3596,11136,31,2018/11/30 16:09:19,8,computer-and-internet-info,0,32091154,0x0,192.168.0.0-192.168.255.255,United States,0,15,16,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.186.243.83,192.168.1.63,35.186.243.83,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24164,1,52482,443,38822,443,0x400053,tcp,allow,14732,3596,11136,31,2018/11/30 16:09:19,8,computer-and-internet-info,0,32091155,0x0,192.168.0.0-192.168.255.255,United States,0,15,16,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,untrust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24198,1,33769,53,16044,53,0x400019,udp,allow,266,84,182,2,2018/11/30 16:09:12,0,any,0,32091156,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,trust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24184,1,14106,53,56614,53,0x400019,udp,allow,164,74,90,2,2018/11/30 16:09:12,0,any,0,32091157,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,100.24.165.74,192.168.1.63,100.24.165.74,new_outbound_from_trust,,,ssl,vsys1,untrust,trust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24314,1,52503,443,53168,443,0x400053,tcp,allow,9400,2731,6669,30,2018/11/30 16:09:21,6,business-and-economy,0,32091158,0x0,192.168.0.0-192.168.255.255,United States,0,17,13,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,184.51.252.247,192.168.1.63,184.51.252.247,new_outbound_from_trust,,,ssl,vsys1,xtrust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24204,1,52459,443,28012,443,0x40001c,tcp,allow,1761,1100,661,15,2018/11/30 16:09:14,13,computer-and-internet-info,0,32091159,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.201.94.140,192.168.1.63,35.201.94.140,new_outbound_from_trust,,,ssl,vsys1,trust,xuntrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24234,1,52483,443,16050,443,0x400053,tcp,allow,14732,3596,11136,31,2018/11/30 16:09:19,8,computer-and-internet-info,0,32091160,0x0,192.168.0.0-192.168.255.255,Asia Pacific Region,0,15,16,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,,,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24390,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:31,0,any,0,32091161,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24093,1,38663,53,61722,53,0x400019,udp,allow,228,84,144,2,2018/11/30 16:09:13,0,any,0,32091162,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24117,1,50443,53,14247,53,0x400019,udp,allow,337,131,206,2,2018/11/30 16:09:13,0,any,0,32091163,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24142,1,54215,53,33580,53,0x400019,udp,allow,337,131,206,2,2018/11/30 16:09:13,0,any,0,32091164,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24195,1,35827,53,13498,53,0x400019,udp,allow,252,83,169,2,2018/11/30 16:09:13,0,any,0,32091165,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24124,1,60609,53,20365,53,0x400019,udp,allow,232,100,132,2,2018/11/30 16:09:13,0,any,0,32091166,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24153,1,3248,53,61464,53,0x400019,udp,allow,206,79,127,2,2018/11/30 16:09:13,0,any,0,32091167,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.196,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24122,1,49284,53,42877,53,0x400019,udp,allow,194,89,105,2,2018/11/30 16:09:13,0,any,0,32091168,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24171,1,57732,53,5918,53,0x400019,udp,allow,269,97,172,2,2018/11/30 16:09:13,0,any,0,32091169,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24069,1,49195,53,28944,53,0x400019,udp,allow,212,78,134,2,2018/11/30 16:09:13,0,any,0,32091170,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24282,1,17266,53,13415,53,0x400019,udp,allow,252,73,179,2,2018/11/30 16:09:13,0,any,0,32091171,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24218,1,48631,53,2489,53,0x400019,udp,allow,308,90,218,2,2018/11/30 16:09:13,0,any,0,32091172,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24200,1,58540,53,49328,53,0x400019,udp,allow,249,77,172,2,2018/11/30 16:09:13,0,any,0,32091173,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24224,1,42678,53,36036,53,0x400019,udp,allow,379,74,305,2,2018/11/30 16:09:13,0,any,0,32091174,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,66.28.0.45,192.168.1.63,66.28.0.45,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24240,1,16576,53,33744,53,0x400019,udp,allow,603,76,527,2,2018/11/30 16:09:14,0,any,0,32091175,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24183,1,39830,53,45809,53,0x400019,udp,allow,242,89,153,2,2018/11/30 16:09:14,0,any,0,32091176,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24211,1,6185,53,3675,53,0x400019,udp,allow,240,71,169,2,2018/11/30 16:09:14,0,any,0,32091177,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24253,1,8781,53,5787,53,0x400019,udp,allow,208,80,128,2,2018/11/30 16:09:14,0,any,0,32091178,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24221,1,16788,53,12342,53,0x400019,udp,allow,253,72,181,2,2018/11/30 16:09:14,0,any,0,32091179,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24310,1,45307,53,18729,53,0x400019,udp,allow,197,76,121,2,2018/11/30 16:09:14,0,any,0,32091180,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,23.52.174.25,192.168.1.63,23.52.174.25,new_outbound_from_trust,,,ocsp,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24326,1,52520,80,57858,80,0x400053,tcp,allow,1927,681,1246,11,2018/11/30 16:09:29,0,computer-and-internet-info,0,32091181,0x0,192.168.0.0-192.168.255.255,United States,0,6,5,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24201,1,8503,53,2722,53,0x400019,udp,allow,394,79,315,2,2018/11/30 16:09:13,1,any,0,32091182,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24130,1,6910,53,6674,53,0x400019,udp,allow,212,82,130,2,2018/11/30 16:09:14,0,any,0,32091183,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,54.230.5.228,192.168.1.63,54.230.5.228,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24237,1,52475,443,37427,443,0x40001c,tcp,allow,642,354,288,9,2018/11/30 16:09:17,12,any,0,32091184,0x0,192.168.0.0-192.168.255.255,United States,0,5,4,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24108,1,14342,53,22408,53,0x400019,udp,allow,225,76,149,2,2018/11/30 16:09:14,0,any,0,32091185,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:48 PA-220 1,2018/11/30 16:09:48,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:48,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:48,24247,1,48197,53,27899,53,0x400019,udp,allow,273,71,202,2,2018/11/30 16:09:15,0,any,0,32091186,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:48 PA-220 1,2018/11/30 16:09:48,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:48,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:48,24098,1,32296,53,52939,53,0x400019,udp,allow,270,75,195,2,2018/11/30 16:09:15,0,any,0,32091187,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:48 PA-220 1,2018/11/30 16:09:48,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:48,192.168.15.195,208.83.246.20,192.168.1.63,208.83.246.20,new_outbound_from_trust,,,ntp,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:48,24263,1,33870,123,42907,123,0x400053,udp,allow,180,90,90,2,2018/11/30 16:09:15,0,any,0,32091188,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.196,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24258,1,54659,53,19658,53,0x400019,udp,drop ICMP,340,148,192,4,2018/11/30 16:09:16,0,any,0,32091189,0x0,192.168.0.0-192.168.255.255,United States,0,2,2,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24155,1,57446,53,64352,53,0x400019,udp,reset client,291,83,208,2,2018/11/30 16:09:16,0,any,0,32091190,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24232,1,22655,53,60126,53,0x400019,udp,reset server,184,84,100,2,2018/11/30 16:09:16,0,any,0,32091191,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,35.185.88.112,192.168.1.63,35.185.88.112,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24330,1,52509,443,59771,443,0x40001a,tcp,reset both,9290,2053,7237,24,2018/11/30 16:09:21,10,business-and-economy,0,32091192,0x0,192.168.0.0-192.168.255.255,United States,0,13,11,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,23960,1,27192,53,35748,53,0x400019,udp,allow,202,93,109,2,2018/11/30 16:09:16,0,any,0,32091193,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24236,1,30221,53,63701,53,0x400019,udp,allow,200,84,116,2,2018/11/30 16:09:16,0,any,0,32091194,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24276,1,30570,53,57872,53,0x400019,udp,allow,160,64,96,2,2018/11/30 16:09:16,0,any,0,32091195,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,50.19.85.24,192.168.1.63,50.19.85.24,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24299,1,52497,443,37581,443,0x40001c,tcp,allow,1754,1100,654,15,2018/11/30 16:09:21,11,business-and-economy,0,32091196,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,50.19.85.24,192.168.1.63,50.19.85.24,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24229,1,52498,443,19226,443,0x40001c,tcp,allow,1754,1100,654,15,2018/11/30 16:09:21,11,business-and-economy,0,32091197,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,50.19.85.24,192.168.1.63,50.19.85.24,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24283,1,52496,443,61721,443,0x40001c,tcp,allow,1754,1100,654,15,2018/11/30 16:09:21,11,business-and-economy,0,32091198,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,104.254.150.9,192.168.1.63,104.254.150.9,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24369,1,52510,443,10098,443,0x40001a,tcp,allow,10511,2691,7820,22,2018/11/30 16:09:21,11,web-advertisements,0,32091199,0x0,192.168.0.0-192.168.255.255,United States,0,12,10,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,50.19.85.24,192.168.1.63,50.19.85.24,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24354,1,52495,443,4564,443,0x40001c,tcp,allow,1754,1100,654,15,2018/11/30 16:09:21,11,business-and-economy,0,32091200,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,52.0.218.108,192.168.1.63,52.0.218.108,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24254,1,52486,443,32104,443,0x40001c,tcp,allow,490,276,214,7,2018/11/30 16:09:20,12,any,0,32091201,0x0,192.168.0.0-192.168.255.255,United States,0,4,3,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,52.6.117.19,192.168.1.63,52.6.117.19,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24246,1,52489,443,14172,443,0x40001c,tcp,allow,490,276,214,7,2018/11/30 16:09:20,12,any,0,32091202,0x0,192.168.0.0-192.168.255.255,United States,0,4,3,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,34.238.96.22,192.168.1.63,34.238.96.22,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24343,1,52490,443,10286,443,0x40001c,tcp,allow,490,276,214,7,2018/11/30 16:09:20,12,any,0,32091203,0x0,192.168.0.0-192.168.255.255,United States,0,4,3,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,130.211.47.17,192.168.1.63,130.211.47.17,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24262,1,52493,443,30799,443,0x40001c,tcp,allow,556,276,280,8,2018/11/30 16:09:20,12,any,0,32091204,0x0,192.168.0.0-192.168.255.255,United States,0,4,4,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:51 PA-220 1,2018/11/30 16:09:51,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:51,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:51,24281,1,59320,53,13490,53,0x400019,udp,allow,269,97,172,2,2018/11/30 16:09:18,0,any,0,32091205,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24424,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:37,0,any,0,32091206,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24230,1,13076,53,53751,53,0x400019,udp,allow,172,78,94,2,2018/11/30 16:09:19,0,any,0,32091207,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24243,1,5511,53,21643,53,0x400019,udp,allow,242,72,170,2,2018/11/30 16:09:19,0,any,0,32091208,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24077,1,9799,53,22446,53,0x400019,udp,allow,172,78,94,2,2018/11/30 16:09:19,0,any,0,32091209,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24266,1,39169,53,22301,53,0x400019,udp,allow,172,78,94,2,2018/11/30 16:09:19,0,any,0,32091210,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 +Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24269,1,42476,53,58124,53,0x400019,udp,allow,238,72,166,2,2018/11/30 16:09:19,0,any,0,32091211,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0 diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log-expected.json new file mode 100644 index 000000000000..755e84659bfe --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log-expected.json @@ -0,0 +1,7364 @@ +[ + { + "@timestamp": "2018-11-30T16:09:07.000Z", + "client.bytes": 1758, + "client.ip": "192.168.15.207", + "client.packets": 20, + "client.port": 55113, + "destination.address": "184.51.253.152", + "destination.bytes": 1758, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "184.51.253.152", + "destination.packets": 16, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 586000000000, + "event.end": "2018-11-30T16:08:50.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T15:59:04.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 0, + "log.original": "Nov 30 16:09:08 PA-220 1,2018/11/30 16:09:07,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:07,192.168.15.207,184.51.253.152,192.168.1.63,184.51.253.152,new_outbound_from_trust,,,apple-maps,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:07,22751,1,55113,443,16418,443,0x400053,tcp,allow,7734,1758,5976,36,2018/11/30 15:59:04,586,computer-and-internet-info,0,32091112,0x0,192.168.0.0-192.168.255.255,United States,0,16,20,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "apple-maps", + "network.bytes": 7734, + "network.community_id": [ + "1:MhgXJlTEvCKgoyqMC+Xo7qMVGqc=", + "1:D1fZ8H3SfYS5p3yDzVdiwbnGJlU=" + ], + "network.direction": "outbound", + "network.packets": 36, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "184.51.253.152", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "22751", + "palo_alto.pan_os.network.nat.community_id": "1:D1fZ8H3SfYS5p3yDzVdiwbnGJlU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091112, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 16418, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.207", + "184.51.253.152", + "192.168.1.63", + "184.51.253.152" + ], + "server.bytes": 5976, + "server.ip": "184.51.253.152", + "server.packets": 16, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 5976, + "source.ip": "192.168.15.207", + "source.packets": 20, + "source.port": 55113, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:09.000Z", + "client.bytes": 588, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 588, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 6, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:08:55.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:55.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 503, + "log.original": "Nov 30 16:09:10 PA-220 1,2018/11/30 16:09:09,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:09,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:09,24223,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:08:55,0,any,0,32091113,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 1176, + "network.community_id": [ + "1:iNhLzwoKKarTKCq59Sts/hhZN7Q=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 12, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24223", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091113, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 588, + "server.ip": "8.8.8.8", + "server.packets": 6, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 588, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:09.000Z", + "client.bytes": 539, + "client.ip": "192.168.15.207", + "client.packets": 5, + "client.port": 55114, + "destination.address": "17.253.3.202", + "destination.bytes": 539, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "17.253.3.202", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2018-11-30T16:08:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:51.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 947, + "log.original": "Nov 30 16:09:10 PA-220 1,2018/11/30 16:09:09,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:09,192.168.15.207,17.253.3.202,192.168.1.63,17.253.3.202,new_outbound_from_trust,,,web-browsing,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:09,24138,1,55114,80,51990,80,0x40001c,tcp,allow,1574,539,1035,11,2018/11/30 16:08:51,1,computer-and-internet-info,0,32091114,0x0,192.168.0.0-192.168.255.255,United States,0,6,5,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "web-browsing", + "network.bytes": 1574, + "network.community_id": [ + "1:L9wP4JYo+V/38JhXYBMQf/hWYoQ=", + "1:VnGCPYRgvHZCFJBmPOwtCg7/sMY=" + ], + "network.direction": "outbound", + "network.packets": 11, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "17.253.3.202", + "palo_alto.pan_os.destination.nat.port": 80, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24138", + "palo_alto.pan_os.network.nat.community_id": "1:VnGCPYRgvHZCFJBmPOwtCg7/sMY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091114, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 51990, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.207", + "17.253.3.202", + "192.168.1.63", + "17.253.3.202" + ], + "server.bytes": 1035, + "server.ip": "17.253.3.202", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 1035, + "source.ip": "192.168.15.207", + "source.packets": 5, + "source.port": 55114, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:15.000Z", + "client.bytes": 588, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 588, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 6, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:01.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:01.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 1441, + "log.original": "Nov 30 16:09:16 PA-220 1,2018/11/30 16:09:15,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:15,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:15,24043,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:01,0,any,0,32091115,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 1176, + "network.community_id": [ + "1:iNhLzwoKKarTKCq59Sts/hhZN7Q=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 12, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24043", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091115, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 588, + "server.ip": "8.8.8.8", + "server.packets": 6, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 588, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:15.000Z", + "client.bytes": 2014, + "client.ip": "192.168.15.196", + "client.packets": 3, + "client.port": 46774, + "destination.address": "216.58.194.99", + "destination.bytes": 2014, + "destination.geo.city_name": "Mountain View", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.386, + "destination.geo.location.lon": -122.0838, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "216.58.194.99", + "destination.packets": 5, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:07:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:07:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 1885, + "log.original": "Nov 30 16:09:16 PA-220 1,2018/11/30 16:09:15,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:15,192.168.15.196,216.58.194.99,192.168.1.63,216.58.194.99,new_outbound_from_trust,,,quic,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:15,23003,1,46774,443,15252,443,0x400019,udp,allow,3627,2014,1613,8,2018/11/30 16:07:13,0,any,0,32091116,0x0,192.168.0.0-192.168.255.255,United States,0,5,3,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "quic", + "network.bytes": 3627, + "network.community_id": [ + "1:bfDHy9SG4Mhm/ohGXQNZR3yF5sI=", + "1:pvg9sIAzBs2eyqMclcdCIYEBO1Q=" + ], + "network.direction": "outbound", + "network.packets": 8, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "216.58.194.99", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23003", + "palo_alto.pan_os.network.nat.community_id": "1:pvg9sIAzBs2eyqMclcdCIYEBO1Q=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091116, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 15252, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.196", + "216.58.194.99", + "192.168.1.63", + "216.58.194.99" + ], + "server.bytes": 1613, + "server.ip": "216.58.194.99", + "server.packets": 5, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.196", + "source.bytes": 1613, + "source.ip": "192.168.15.196", + "source.packets": 3, + "source.port": 46774, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:15.000Z", + "client.bytes": 20642, + "client.ip": "192.168.15.224", + "client.packets": 51, + "client.port": 52408, + "destination.address": "209.234.224.22", + "destination.bytes": 20642, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "209.234.224.22", + "destination.packets": 62, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 85000000000, + "event.end": "2018-11-30T16:08:58.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:07:33.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 2353, + "log.original": "Nov 30 16:09:16 PA-220 1,2018/11/30 16:09:15,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:15,192.168.15.224,209.234.224.22,192.168.1.63,209.234.224.22,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:15,23919,1,52408,443,40763,443,0x400053,tcp,allow,41753,20642,21111,113,2018/11/30 16:07:33,85,web-advertisements,0,32091117,0x0,192.168.0.0-192.168.255.255,United States,0,62,51,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 41753, + "network.community_id": [ + "1:A+0qkq/2rxZS/+I/sm0SFOWOkwY=", + "1:u81/Ahz4HsL4LAVrUEiPkbXlX9A=" + ], + "network.direction": "outbound", + "network.packets": 113, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "209.234.224.22", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23919", + "palo_alto.pan_os.network.nat.community_id": "1:u81/Ahz4HsL4LAVrUEiPkbXlX9A=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091117, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 40763, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "web-advertisements", + "related.ip": [ + "192.168.15.224", + "209.234.224.22", + "192.168.1.63", + "209.234.224.22" + ], + "server.bytes": 21111, + "server.ip": "209.234.224.22", + "server.packets": 62, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 21111, + "source.ip": "192.168.15.224", + "source.packets": 51, + "source.port": 52408, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:21.000Z", + "client.bytes": 588, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 588, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 6, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:07.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:07.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 2844, + "log.original": "Nov 30 16:09:22 PA-220 1,2018/11/30 16:09:21,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:21,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:21,21394,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:07,0,any,0,32091118,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 1176, + "network.community_id": [ + "1:iNhLzwoKKarTKCq59Sts/hhZN7Q=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 12, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "21394", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091118, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 588, + "server.ip": "8.8.8.8", + "server.packets": 6, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 588, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:21.000Z", + "client.bytes": 3365, + "client.ip": "192.168.15.224", + "client.packets": 9, + "client.port": 59190, + "destination.address": "172.217.2.238", + "destination.bytes": 3365, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "172.217.2.238", + "destination.packets": 7, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 15000000000, + "event.end": "2018-11-30T16:07:19.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:07:04.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 3288, + "log.original": "Nov 30 16:09:22 PA-220 1,2018/11/30 16:09:21,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:21,192.168.15.224,172.217.2.238,192.168.1.63,172.217.2.238,new_outbound_from_trust,,,quic,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:21,23698,1,59190,443,52881,443,0x400019,udp,allow,7097,3365,3732,16,2018/11/30 16:07:04,15,any,0,32091119,0x0,192.168.0.0-192.168.255.255,United States,0,7,9,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "quic", + "network.bytes": 7097, + "network.community_id": [ + "1:q1tj6dPFkb+U8mUSdFp3CbUFXUk=", + "1:DoBKpBbAds/XQwbKPGjMrcuHTGo=" + ], + "network.direction": "outbound", + "network.packets": 16, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "172.217.2.238", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23698", + "palo_alto.pan_os.network.nat.community_id": "1:DoBKpBbAds/XQwbKPGjMrcuHTGo=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091119, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 52881, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "172.217.2.238", + "192.168.1.63", + "172.217.2.238" + ], + "server.bytes": 3732, + "server.ip": "172.217.2.238", + "server.packets": 7, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 3732, + "source.ip": "192.168.15.224", + "source.packets": 9, + "source.port": 59190, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:22.000Z", + "client.bytes": 80, + "client.ip": "192.168.15.207", + "client.packets": 1, + "client.port": 49728, + "destination.address": "8.8.8.8", + "destination.bytes": 80, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:08:50.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:50.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 3758, + "log.original": "Nov 30 16:09:23 PA-220 1,2018/11/30 16:09:22,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:22,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:22,24179,1,49728,53,26654,53,0x400019,udp,allow,301,80,221,2,2018/11/30 16:08:50,0,any,0,32091120,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 301, + "network.community_id": [ + "1:l1lEn2QIKjwJgww02PEndRveudE=", + "1:viuINkmqZ3Q7wH9NHmhVu6rZuOs=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24179", + "palo_alto.pan_os.network.nat.community_id": "1:viuINkmqZ3Q7wH9NHmhVu6rZuOs=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091120, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 26654, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.207", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 221, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 221, + "source.ip": "192.168.15.207", + "source.packets": 1, + "source.port": 49728, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:23.000Z", + "client.bytes": 77, + "client.ip": "192.168.15.207", + "client.packets": 1, + "client.port": 50500, + "destination.address": "8.8.8.8", + "destination.bytes": 77, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:08:51.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:51.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 4207, + "log.original": "Nov 30 16:09:24 PA-220 1,2018/11/30 16:09:23,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:23,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:23,23933,1,50500,53,2486,53,0x400019,udp,allow,298,77,221,2,2018/11/30 16:08:51,0,any,0,32091121,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 298, + "network.community_id": [ + "1:RK6Ut4Rb0DTrl9IRf27cop79UwI=", + "1:wR8JpmqlhC4f7BvxdzxRlKdkPiQ=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23933", + "palo_alto.pan_os.network.nat.community_id": "1:wR8JpmqlhC4f7BvxdzxRlKdkPiQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091121, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 2486, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.207", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 221, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 221, + "source.ip": "192.168.15.207", + "source.packets": 1, + "source.port": 50500, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:24.000Z", + "client.bytes": 4509, + "client.ip": "192.168.15.207", + "client.packets": 16, + "client.port": 55112, + "destination.address": "17.249.60.78", + "destination.bytes": 4509, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "17.249.60.78", + "destination.packets": 16, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 593000000000, + "event.end": "2018-11-30T16:08:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T15:58:59.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 4655, + "log.original": "Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,17.249.60.78,192.168.1.63,17.249.60.78,new_outbound_from_trust,,,apple-push-notifications,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,22662,1,55112,443,42021,443,0x400053,tcp,allow,9978,4509,5469,32,2018/11/30 15:58:59,593,computer-and-internet-info,0,32091122,0x0,192.168.0.0-192.168.255.255,United States,0,16,16,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "apple-push-notifications", + "network.bytes": 9978, + "network.community_id": [ + "1:89DsXq0JlAcm8a60Q9a+OELsT0Y=", + "1:JuPhgq+FyomxcGW/tt851C0l4Hg=" + ], + "network.direction": "outbound", + "network.packets": 32, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "17.249.60.78", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "22662", + "palo_alto.pan_os.network.nat.community_id": "1:JuPhgq+FyomxcGW/tt851C0l4Hg=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091122, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 42021, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.207", + "17.249.60.78", + "192.168.1.63", + "17.249.60.78" + ], + "server.bytes": 5469, + "server.ip": "17.249.60.78", + "server.packets": 16, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 5469, + "source.ip": "192.168.15.207", + "source.packets": 16, + "source.port": 55112, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:24.000Z", + "client.bytes": 73, + "client.ip": "192.168.15.207", + "client.packets": 1, + "client.port": 57632, + "destination.address": "8.8.8.8", + "destination.bytes": 73, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:08:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 5180, + "log.original": "Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,24161,1,57632,53,24377,53,0x400019,udp,allow,297,73,224,2,2018/11/30 16:08:52,0,any,0,32091123,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 297, + "network.community_id": [ + "1:5lGtGtzRH+NHOqMOFVuXwxg5nCo=", + "1:rsDXUIQYGBC2VYTxep2/bVIc3Xs=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24161", + "palo_alto.pan_os.network.nat.community_id": "1:rsDXUIQYGBC2VYTxep2/bVIc3Xs=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091123, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 24377, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.207", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 224, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 224, + "source.ip": "192.168.15.207", + "source.packets": 1, + "source.port": 57632, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:24.000Z", + "client.bytes": 69, + "client.ip": "192.168.15.207", + "client.packets": 1, + "client.port": 50271, + "destination.address": "8.8.8.8", + "destination.bytes": 69, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:08:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 5629, + "log.original": "Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,24107,1,50271,53,48792,53,0x400019,udp,allow,186,69,117,2,2018/11/30 16:08:52,0,any,0,32091124,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 186, + "network.community_id": [ + "1:WbAIgVVT23pzqAJkSDF68HGSPY4=", + "1:ewaPydF3S4wOU8oEi8ykj+ETSIY=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24107", + "palo_alto.pan_os.network.nat.community_id": "1:ewaPydF3S4wOU8oEi8ykj+ETSIY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091124, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 48792, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.207", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 117, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 117, + "source.ip": "192.168.15.207", + "source.packets": 1, + "source.port": 50271, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:24.000Z", + "client.bytes": 85, + "client.ip": "192.168.15.207", + "client.packets": 1, + "client.port": 54061, + "destination.address": "8.8.8.8", + "destination.bytes": 85, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:08:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 6078, + "log.original": "Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,24063,1,54061,53,2987,53,0x400019,udp,allow,392,85,307,2,2018/11/30 16:08:52,0,any,0,32091125,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 392, + "network.community_id": [ + "1:b+lWViOjpbOZConz3JzrSDR609Q=", + "1:+6FjOLCCWY+JDxSWKn7tYpAXksA=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24063", + "palo_alto.pan_os.network.nat.community_id": "1:+6FjOLCCWY+JDxSWKn7tYpAXksA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091125, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 2987, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.207", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 307, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 307, + "source.ip": "192.168.15.207", + "source.packets": 1, + "source.port": 54061, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:24.000Z", + "client.bytes": 75, + "client.ip": "192.168.15.207", + "client.packets": 1, + "client.port": 52701, + "destination.address": "8.8.8.8", + "destination.bytes": 75, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:08:52.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:52.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 6526, + "log.original": "Nov 30 16:09:25 PA-220 1,2018/11/30 16:09:24,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:24,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:24,24145,1,52701,53,6945,53,0x400019,udp,allow,440,75,365,2,2018/11/30 16:08:52,0,any,0,32091126,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 440, + "network.community_id": [ + "1:dnGaTG13rwIh66+Pj0GQSdJMhu8=", + "1:rR5F8eZHI1nwmznedxqG9e8vUQE=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24145", + "palo_alto.pan_os.network.nat.community_id": "1:rR5F8eZHI1nwmznedxqG9e8vUQE=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091126, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 6945, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.207", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 365, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 365, + "source.ip": "192.168.15.207", + "source.packets": 1, + "source.port": 52701, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:27.000Z", + "client.bytes": 588, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 588, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 6, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 6974, + "log.original": "Nov 30 16:09:28 PA-220 1,2018/11/30 16:09:27,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:27,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:27,24245,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:13,0,any,0,32091127,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 1176, + "network.community_id": [ + "1:iNhLzwoKKarTKCq59Sts/hhZN7Q=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 12, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24245", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091127, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 588, + "server.ip": "8.8.8.8", + "server.packets": 6, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 588, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:27.000Z", + "client.bytes": 97, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 62503, + "destination.address": "8.8.8.8", + "destination.bytes": 97, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2018-11-30T16:08:55.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 7418, + "log.original": "Nov 30 16:09:28 PA-220 1,2018/11/30 16:09:27,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:27,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:27,24167,1,62503,53,42208,53,0x400019,udp,allow,258,97,161,2,2018/11/30 16:08:54,1,any,0,32091128,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 258, + "network.community_id": [ + "1:Jof66SUOY3j4C+WrZwbgtKls1/Y=", + "1:81Mi4MwpmNYtUrc7CMJH0MPRelU=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24167", + "palo_alto.pan_os.network.nat.community_id": "1:81Mi4MwpmNYtUrc7CMJH0MPRelU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091128, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 42208, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 161, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 161, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 62503, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:28.000Z", + "client.bytes": 2086, + "client.ip": "192.168.15.224", + "client.packets": 13, + "client.port": 52442, + "destination.address": "98.138.49.44", + "destination.bytes": 2086, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "98.138.49.44", + "destination.packets": 14, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 17000000000, + "event.end": "2018-11-30T16:09:11.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 7867, + "log.original": "Nov 30 16:09:29 PA-220 1,2018/11/30 16:09:28,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:28,192.168.15.224,98.138.49.44,192.168.1.63,98.138.49.44,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:28,24212,1,52442,443,14660,443,0x40001c,tcp,allow,9891,2086,7805,27,2018/11/30 16:08:54,17,web-advertisements,0,32091129,0x0,192.168.0.0-192.168.255.255,United States,0,14,13,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 9891, + "network.community_id": [ + "1:08BinpWe/JWymiOV0oCsRR8Lo4Q=", + "1:FfbVY/+5Mds7zDjSs5/Yfw5bxNQ=" + ], + "network.direction": "outbound", + "network.packets": 27, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "98.138.49.44", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24212", + "palo_alto.pan_os.network.nat.community_id": "1:FfbVY/+5Mds7zDjSs5/Yfw5bxNQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091129, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 14660, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "web-advertisements", + "related.ip": [ + "192.168.15.224", + "98.138.49.44", + "192.168.1.63", + "98.138.49.44" + ], + "server.bytes": 7805, + "server.ip": "98.138.49.44", + "server.packets": 14, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 7805, + "source.ip": "192.168.15.224", + "source.packets": 13, + "source.port": 52442, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:28.000Z", + "client.bytes": 2354, + "client.ip": "192.168.15.224", + "client.packets": 11, + "client.port": 52441, + "destination.address": "72.30.3.43", + "destination.bytes": 2354, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "72.30.3.43", + "destination.packets": 13, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 17000000000, + "event.end": "2018-11-30T16:09:11.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:54.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 8350, + "log.original": "Nov 30 16:09:29 PA-220 1,2018/11/30 16:09:28,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:28,192.168.15.224,72.30.3.43,192.168.1.63,72.30.3.43,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:28,24149,1,52441,443,16483,443,0x40001c,tcp,allow,8460,2354,6106,24,2018/11/30 16:08:54,17,web-advertisements,0,32091130,0x0,192.168.0.0-192.168.255.255,United States,0,13,11,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 8460, + "network.community_id": [ + "1:2NNXjZpDcB9oYU1TRLRSU5v7hoQ=", + "1:TGvDRLypWuNWkuMsAxPzc5TSbAo=" + ], + "network.direction": "outbound", + "network.packets": 24, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "72.30.3.43", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24149", + "palo_alto.pan_os.network.nat.community_id": "1:TGvDRLypWuNWkuMsAxPzc5TSbAo=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091130, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 16483, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "web-advertisements", + "related.ip": [ + "192.168.15.224", + "72.30.3.43", + "192.168.1.63", + "72.30.3.43" + ], + "server.bytes": 6106, + "server.ip": "72.30.3.43", + "server.packets": 13, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 6106, + "source.ip": "192.168.15.224", + "source.packets": 11, + "source.port": 52441, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:29.000Z", + "client.bytes": 196, + "client.ip": "192.168.15.196", + "client.packets": 2, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 196, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 2, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:15.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:15.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 8829, + "log.original": "Nov 30 16:09:30 PA-220 1,2018/11/30 16:09:29,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:29,192.168.15.196,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:29,24185,2,0,0,0,0,0x500019,icmp,allow,392,196,196,4,2018/11/30 16:09:15,0,any,0,32091131,0x0,192.168.0.0-192.168.255.255,United States,0,2,2,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 392, + "network.community_id": [ + "1:/l9vT9UwjkUeC6vNW93wy71+TBk=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 4, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24185", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091131, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.196", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 196, + "server.ip": "8.8.8.8", + "server.packets": 2, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.196", + "source.bytes": 196, + "source.ip": "192.168.15.196", + "source.packets": 2, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:29.000Z", + "client.bytes": 2545, + "client.ip": "192.168.15.224", + "client.packets": 17, + "client.port": 52355, + "destination.address": "172.217.9.142", + "destination.bytes": 2545, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "172.217.9.142", + "destination.packets": 19, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 116000000000, + "event.end": "2018-11-30T16:09:12.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:07:16.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 9271, + "log.original": "Nov 30 16:09:30 PA-220 1,2018/11/30 16:09:29,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:29,192.168.15.224,172.217.9.142,192.168.1.63,172.217.9.142,new_outbound_from_trust,,,ocsp,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:29,23856,1,52355,80,5570,80,0x40001c,tcp,allow,5790,2545,3245,36,2018/11/30 16:07:16,116,computer-and-internet-info,0,32091132,0x0,192.168.0.0-192.168.255.255,United States,0,19,17,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ocsp", + "network.bytes": 5790, + "network.community_id": [ + "1:JJQ4CQTTE3x7lV+Npo80V7dd6ts=", + "1:NNgF+9vrbBFNpCI3JhUT4YWepd4=" + ], + "network.direction": "outbound", + "network.packets": 36, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "172.217.9.142", + "palo_alto.pan_os.destination.nat.port": 80, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23856", + "palo_alto.pan_os.network.nat.community_id": "1:NNgF+9vrbBFNpCI3JhUT4YWepd4=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091132, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 5570, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "172.217.9.142", + "192.168.1.63", + "172.217.9.142" + ], + "server.bytes": 3245, + "server.ip": "172.217.9.142", + "server.packets": 19, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 3245, + "source.ip": "192.168.15.224", + "source.packets": 17, + "source.port": 52355, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:29.000Z", + "client.bytes": 82, + "client.ip": "192.168.15.207", + "client.packets": 1, + "client.port": 50196, + "destination.address": "8.8.8.8", + "destination.bytes": 82, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:08:57.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:08:57.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 9763, + "log.original": "Nov 30 16:09:30 PA-220 1,2018/11/30 16:09:29,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:29,192.168.15.207,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:29,24173,1,50196,53,24430,53,0x400019,udp,allow,261,82,179,2,2018/11/30 16:08:57,0,any,0,32091133,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 261, + "network.community_id": [ + "1:URR/wC9NPuHbnjGQ1Y7LffVYlTc=", + "1:9T+RKr8xDB21pvAf/Fihyq72sLY=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24173", + "palo_alto.pan_os.network.nat.community_id": "1:9T+RKr8xDB21pvAf/Fihyq72sLY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091133, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 24430, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.207", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 179, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.207", + "source.bytes": 179, + "source.ip": "192.168.15.207", + "source.packets": 1, + "source.port": 50196, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:30.000Z", + "client.bytes": 1758, + "client.ip": "192.168.15.224", + "client.packets": 12, + "client.port": 52454, + "destination.address": "54.84.80.198", + "destination.bytes": 1758, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "54.84.80.198", + "destination.packets": 13, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_started", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 10212, + "log.original": "Nov 30 16:09:31 PA-220 1,2018/11/30 16:09:30,012801096514,TRAFFIC,start,2049,2018/11/30 16:09:30,192.168.15.224,54.84.80.198,192.168.1.63,54.84.80.198,new_outbound_from_trust,,,traps-management-service,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:30,24257,1,52454,443,12122,443,0x400053,tcp,allow,6295,1758,4537,25,2018/11/30 16:09:13,0,computer-and-internet-info,0,32091134,0x0,192.168.0.0-192.168.255.255,United States,0,13,12,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "traps-management-service", + "network.bytes": 6295, + "network.community_id": [ + "1:OnS/uikvrbdse63UYQtmHKrEk7k=", + "1:k69UBIONLgCiGo9UhMOEY0pQnZ4=" + ], + "network.direction": "outbound", + "network.packets": 25, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.84.80.198", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24257", + "palo_alto.pan_os.network.nat.community_id": "1:k69UBIONLgCiGo9UhMOEY0pQnZ4=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091134, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 12122, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "54.84.80.198", + "192.168.1.63", + "54.84.80.198" + ], + "server.bytes": 4537, + "server.ip": "54.84.80.198", + "server.packets": 13, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 4537, + "source.ip": "192.168.15.224", + "source.packets": 12, + "source.port": 52454, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:32.000Z", + "client.bytes": 624, + "client.ip": "192.168.15.224", + "client.packets": 0, + "client.port": 52445, + "destination.address": "199.167.55.52", + "destination.bytes": 624, + "destination.geo.city_name": "Santa Clara", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.3961, + "destination.geo.location.lon": -121.9617, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "199.167.55.52", + "destination.packets": 8, + "destination.port": 4282, + "ecs.version": "1.0.0", + "event.action": "flow_dropped", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 13000000000, + "event.end": "2018-11-30T16:09:25.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:12.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 10725, + "log.original": "Nov 30 16:09:33 PA-220 1,2018/11/30 16:09:32,012801096514,TRAFFIC,drop,2049,2018/11/30 16:09:32,192.168.15.224,199.167.55.52,192.168.1.63,199.167.55.52,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:32,24090,1,52445,4282,49145,4282,0x400019,tcp,allow,624,624,0,8,2018/11/30 16:09:12,13,any,0,32091135,0x0,192.168.0.0-192.168.255.255,United States,0,8,0,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "incomplete", + "network.bytes": 624, + "network.community_id": [ + "1:wFD93203ukPDpbZjVJE5SAMYrw4=", + "1:07q7McJtir76GhJwAJffz+C0sNo=" + ], + "network.direction": "outbound", + "network.packets": 8, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "199.167.55.52", + "palo_alto.pan_os.destination.nat.port": 4282, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24090", + "palo_alto.pan_os.network.nat.community_id": "1:07q7McJtir76GhJwAJffz+C0sNo=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091135, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 49145, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "199.167.55.52", + "192.168.1.63", + "199.167.55.52" + ], + "server.bytes": 0, + "server.ip": "199.167.55.52", + "server.packets": 8, + "server.port": 4282, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 0, + "source.ip": "192.168.15.224", + "source.packets": 0, + "source.port": 52445, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:33.000Z", + "client.bytes": 588, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 588, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 6, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_denied", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:19.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 11198, + "log.original": "Nov 30 16:09:34 PA-220 1,2018/11/30 16:09:33,012801096514,TRAFFIC,deny,2049,2018/11/30 16:09:33,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:33,24242,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:19,0,any,0,32091136,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 1176, + "network.community_id": [ + "1:iNhLzwoKKarTKCq59Sts/hhZN7Q=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 12, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24242", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091136, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 588, + "server.ip": "8.8.8.8", + "server.packets": 6, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 588, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:34.000Z", + "client.bytes": 85, + "client.ip": "192.168.15.210", + "client.packets": 1, + "client.port": 35485, + "destination.address": "8.8.8.8", + "destination.bytes": 85, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:02.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:02.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 11643, + "log.original": "Nov 30 16:09:35 PA-220 1,2018/11/30 16:09:34,012801096514,TRAFFIC,,2049,2018/11/30 16:09:34,192.168.15.210,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:34,24190,1,35485,53,33110,53,0x400019,udp,allow,215,85,130,2,2018/11/30 16:09:02,0,any,0,32091137,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 215, + "network.community_id": [ + "1:XjmNQR0k4Z9rGS6dXH+3mvmrqzA=", + "1:JM1EdN05nKTy8Sq9WGpY15fCNJk=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24190", + "palo_alto.pan_os.network.nat.community_id": "1:JM1EdN05nKTy8Sq9WGpY15fCNJk=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091137, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 33110, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.210", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 130, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.210", + "source.bytes": 130, + "source.ip": "192.168.15.210", + "source.packets": 1, + "source.port": 35485, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:37.000Z", + "client.bytes": 2876, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 62730, + "destination.address": "172.217.9.142", + "destination.bytes": 2876, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "172.217.9.142", + "destination.packets": 6, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 15000000000, + "event.end": "2018-11-30T16:07:35.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:07:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 12089, + "log.original": "Nov 30 16:09:38 PA-220 1,2018/11/30 16:09:37,012801096514,TRAFFIC,test,2049,2018/11/30 16:09:37,192.168.15.224,172.217.9.142,192.168.1.63,172.217.9.142,new_outbound_from_trust,,,quic,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:37,23892,1,62730,443,9299,443,0x400019,udp,allow,4867,2876,1991,12,2018/11/30 16:07:20,15,any,0,32091138,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "quic", + "network.bytes": 4867, + "network.community_id": [ + "1:lVJii2BraOSOIissazAe7/enqkQ=", + "1:3vS12CJ5QBY6RbGXOUPYKL9E0+U=" + ], + "network.direction": "outbound", + "network.packets": 12, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "172.217.9.142", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23892", + "palo_alto.pan_os.network.nat.community_id": "1:3vS12CJ5QBY6RbGXOUPYKL9E0+U=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091138, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 9299, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "172.217.9.142", + "192.168.1.63", + "172.217.9.142" + ], + "server.bytes": 1991, + "server.ip": "172.217.9.142", + "server.packets": 6, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 1991, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 62730, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:38.000Z", + "client.bytes": 1100, + "client.ip": "192.168.15.224", + "client.packets": 5, + "client.port": 52506, + "destination.address": "151.101.2.2", + "destination.bytes": 1100, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "151.101.2.2", + "destination.packets": 8, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:21.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 12559, + "log.original": "Nov 30 16:09:39 PA-220 1,2018/11/30 16:09:38,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:38,192.168.15.224,151.101.2.2,192.168.1.63,151.101.2.2,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:38,24360,1,52506,443,47194,443,0x40001c,tcp,allow,1623,1100,523,13,2018/11/30 16:09:21,0,business-and-economy,0,32091139,0x0,192.168.0.0-192.168.255.255,United States,0,8,5,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 1623, + "network.community_id": [ + "1:Te0H9rrEbN0bNEjgdC1n6hD8kQU=", + "1:l6nFWeOSs/2aQaVCfYhfQ09l0ko=" + ], + "network.direction": "outbound", + "network.packets": 13, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "151.101.2.2", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24360", + "palo_alto.pan_os.network.nat.community_id": "1:l6nFWeOSs/2aQaVCfYhfQ09l0ko=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091139, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 47194, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "151.101.2.2", + "192.168.1.63", + "151.101.2.2" + ], + "server.bytes": 523, + "server.ip": "151.101.2.2", + "server.packets": 8, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 523, + "source.ip": "192.168.15.224", + "source.packets": 5, + "source.port": 52506, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:38.000Z", + "client.bytes": 1977, + "client.ip": "192.168.15.224", + "client.packets": 4, + "client.port": 60596, + "destination.address": "216.58.194.66", + "destination.bytes": 1977, + "destination.geo.city_name": "Mountain View", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.386, + "destination.geo.location.lon": -122.0838, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "216.58.194.66", + "destination.packets": 5, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:07:36.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:07:36.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 13050, + "log.original": "Nov 30 16:09:39 PA-220 1,2018/11/30 16:09:38,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:38,192.168.15.224,216.58.194.66,192.168.1.63,216.58.194.66,new_outbound_from_trust,,,quic,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:38,23952,1,60596,443,62921,443,0x400019,udp,allow,4405,1977,2428,9,2018/11/30 16:07:36,0,any,0,32091140,0x0,192.168.0.0-192.168.255.255,United States,0,5,4,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "quic", + "network.bytes": 4405, + "network.community_id": [ + "1:5umxbSgQhlPOZM9gbu1iBMqzRr8=", + "1:hVpNmZPedeB/gYRm9U4/gS+LNkQ=" + ], + "network.direction": "outbound", + "network.packets": 9, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "216.58.194.66", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23952", + "palo_alto.pan_os.network.nat.community_id": "1:hVpNmZPedeB/gYRm9U4/gS+LNkQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091140, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 62921, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "216.58.194.66", + "192.168.1.63", + "216.58.194.66" + ], + "server.bytes": 2428, + "server.ip": "216.58.194.66", + "server.packets": 5, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 2428, + "source.ip": "192.168.15.224", + "source.packets": 4, + "source.port": 60596, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:39.000Z", + "client.bytes": 588, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 588, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 6, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:25.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:25.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 13518, + "log.original": "Nov 30 16:09:40 PA-220 1,2018/11/30 16:09:39,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:39,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:39,24328,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:25,0,any,0,32091141,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 1176, + "network.community_id": [ + "1:iNhLzwoKKarTKCq59Sts/hhZN7Q=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 12, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24328", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091141, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 588, + "server.ip": "8.8.8.8", + "server.packets": 6, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 588, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:39.000Z", + "client.bytes": 196, + "client.ip": "192.168.15.210", + "client.packets": 2, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 196, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 2, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:25.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:25.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 13962, + "log.original": "Nov 30 16:09:40 PA-220 1,2018/11/30 16:09:39,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:39,192.168.15.210,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:39,24385,2,0,0,0,0,0x500019,icmp,allow,392,196,196,4,2018/11/30 16:09:25,0,any,0,32091142,0x0,192.168.0.0-192.168.255.255,United States,0,2,2,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 392, + "network.community_id": [ + "1:7LdGPOlsucPADJQxcTlIy8FSIxU=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 4, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24385", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091142, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.210", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 196, + "server.ip": "8.8.8.8", + "server.packets": 2, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.210", + "source.bytes": 196, + "source.ip": "192.168.15.210", + "source.packets": 2, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:39.000Z", + "client.bytes": 2228, + "client.ip": "192.168.15.224", + "client.packets": 10, + "client.port": 52514, + "destination.address": "184.51.253.193", + "destination.bytes": 2228, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "184.51.253.193", + "destination.packets": 12, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:22.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:22.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 14404, + "log.original": "Nov 30 16:09:40 PA-220 1,2018/11/30 16:09:39,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:39,192.168.15.224,184.51.253.193,192.168.1.63,184.51.253.193,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:39,24172,1,52514,443,41958,443,0x40001c,tcp,allow,7231,2228,5003,22,2018/11/30 16:09:22,0,web-advertisements,0,32091143,0x0,192.168.0.0-192.168.255.255,United States,0,12,10,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 7231, + "network.community_id": [ + "1:zaX+BV1nxniPCPzIGKhVpm2i7CE=", + "1:zBrhHOnlJT7YZV7WXiPAQBEhScI=" + ], + "network.direction": "outbound", + "network.packets": 22, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "184.51.253.193", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24172", + "palo_alto.pan_os.network.nat.community_id": "1:zBrhHOnlJT7YZV7WXiPAQBEhScI=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091143, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 41958, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "web-advertisements", + "related.ip": [ + "192.168.15.224", + "184.51.253.193", + "192.168.1.63", + "184.51.253.193" + ], + "server.bytes": 5003, + "server.ip": "184.51.253.193", + "server.packets": 12, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 5003, + "source.ip": "192.168.15.224", + "source.packets": 10, + "source.port": 52514, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:40.000Z", + "client.bytes": 96, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 55155, + "destination.address": "8.8.8.8", + "destination.bytes": 96, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:08.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:08.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 14890, + "log.original": "Nov 30 16:09:41 PA-220 1,2018/11/30 16:09:40,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:40,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:40,24131,1,55155,53,51374,53,0x400019,udp,allow,267,96,171,2,2018/11/30 16:09:08,0,any,0,32091144,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 267, + "network.community_id": [ + "1:BengLCKQRlHSjje1eFQLdxgTKJc=", + "1:QjiWUuclXv+JzWhbuYDyyP+YyTk=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24131", + "palo_alto.pan_os.network.nat.community_id": "1:QjiWUuclXv+JzWhbuYDyyP+YyTk=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091144, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 51374, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 171, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 171, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 55155, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:40.000Z", + "client.bytes": 78, + "client.ip": "192.168.15.224", + "client.packets": 0, + "client.port": 52445, + "destination.address": "199.167.55.52", + "destination.bytes": 78, + "destination.geo.city_name": "Santa Clara", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.3961, + "destination.geo.location.lon": -121.9617, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "199.167.55.52", + "destination.packets": 1, + "destination.port": 4282, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:33.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:33.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 15339, + "log.original": "Nov 30 16:09:41 PA-220 1,2018/11/30 16:09:40,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:40,192.168.15.224,199.167.55.52,192.168.1.63,199.167.55.52,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:40,24393,1,52445,4282,25566,4282,0x400019,tcp,allow,78,78,0,1,2018/11/30 16:09:33,0,any,0,32091145,0x0,192.168.0.0-192.168.255.255,United States,0,1,0,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "incomplete", + "network.bytes": 78, + "network.community_id": [ + "1:wFD93203ukPDpbZjVJE5SAMYrw4=", + "1:WSYAeVnYXY4WmfLFYEEo/atQJE8=" + ], + "network.direction": "outbound", + "network.packets": 1, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "199.167.55.52", + "palo_alto.pan_os.destination.nat.port": 4282, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24393", + "palo_alto.pan_os.network.nat.community_id": "1:WSYAeVnYXY4WmfLFYEEo/atQJE8=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091145, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 25566, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "199.167.55.52", + "192.168.1.63", + "199.167.55.52" + ], + "server.bytes": 0, + "server.ip": "199.167.55.52", + "server.packets": 1, + "server.port": 4282, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 0, + "source.ip": "192.168.15.224", + "source.packets": 0, + "source.port": 52445, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:42.000Z", + "client.bytes": 1086, + "client.ip": "192.168.15.224", + "client.packets": 9, + "client.port": 52516, + "destination.address": "199.167.52.219", + "destination.bytes": 1086, + "destination.geo.city_name": "Santa Clara", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.3961, + "destination.geo.location.lon": -121.9617, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "199.167.52.219", + "destination.packets": 11, + "destination.port": 17472, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:25.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:25.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 15808, + "log.original": "Nov 30 16:09:43 PA-220 1,2018/11/30 16:09:42,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:42,192.168.15.224,199.167.52.219,192.168.1.63,199.167.52.219,new_outbound_from_trust,,,tanium,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:42,24976,1,52516,17472,63757,17472,0x40005e,tcp,allow,3402,1086,2316,20,2018/11/30 16:09:25,0,any,0,32091146,0x0,192.168.0.0-192.168.255.255,United States,0,11,9,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "tanium", + "network.bytes": 3402, + "network.community_id": [ + "1:9oIDq1tuilAK1JGhtfp35vZpz4w=", + "1:XrQuj5ypAzAqGAy0lpIvWQVVZ2E=" + ], + "network.direction": "outbound", + "network.packets": 20, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "199.167.52.219", + "palo_alto.pan_os.destination.nat.port": 17472, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24976", + "palo_alto.pan_os.network.nat.community_id": "1:XrQuj5ypAzAqGAy0lpIvWQVVZ2E=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091146, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 63757, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "199.167.52.219", + "192.168.1.63", + "199.167.52.219" + ], + "server.bytes": 2316, + "server.ip": "199.167.52.219", + "server.packets": 11, + "server.port": 17472, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 2316, + "source.ip": "192.168.15.224", + "source.packets": 9, + "source.port": 52516, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:42.000Z", + "client.bytes": 2628, + "client.ip": "192.168.15.224", + "client.packets": 19, + "client.port": 52511, + "destination.address": "52.71.117.196", + "destination.bytes": 2628, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.71.117.196", + "destination.packets": 19, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 4000000000, + "event.end": "2018-11-30T16:09:25.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 16297, + "log.original": "Nov 30 16:09:43 PA-220 1,2018/11/30 16:09:42,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:42,192.168.15.224,52.71.117.196,192.168.1.63,52.71.117.196,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:42,24348,1,52511,443,3803,443,0x400053,tcp,allow,16594,2628,13966,38,2018/11/30 16:09:21,4,computer-and-internet-info,0,32091147,0x0,192.168.0.0-192.168.255.255,United States,0,19,19,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 16594, + "network.community_id": [ + "1:lrruE+4dZreV0/+v9V1CpxRnfsE=", + "1:EG9O/WtvoWuYwaB1MXJTgr43kac=" + ], + "network.direction": "outbound", + "network.packets": 38, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.71.117.196", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24348", + "palo_alto.pan_os.network.nat.community_id": "1:EG9O/WtvoWuYwaB1MXJTgr43kac=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091147, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 3803, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "52.71.117.196", + "192.168.1.63", + "52.71.117.196" + ], + "server.bytes": 13966, + "server.ip": "52.71.117.196", + "server.packets": 19, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 13966, + "source.ip": "192.168.15.224", + "source.packets": 19, + "source.port": 52511, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 79, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 3018, + "destination.address": "8.8.8.8", + "destination.bytes": 79, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:12.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:12.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 16802, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24046,1,3018,53,34994,53,0x400019,udp,allow,323,79,244,2,2018/11/30 16:09:12,0,any,0,32091148,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 323, + "network.community_id": [ + "1:b/0kdGUcINh0ryiR0w0QTg0t0jQ=", + "1:eI0W7/EQJgRBimA1ZM4XVOSKMqo=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24046", + "palo_alto.pan_os.network.nat.community_id": "1:eI0W7/EQJgRBimA1ZM4XVOSKMqo=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091148, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 34994, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 244, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 244, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 3018, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 95, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 16569, + "destination.address": "8.8.8.8", + "destination.bytes": 95, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:12.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:12.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 17250, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24196,1,16569,53,38064,53,0x400019,udp,allow,300,95,205,2,2018/11/30 16:09:12,0,any,0,32091149,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 300, + "network.community_id": [ + "1:SsNvr7qdck7W52PZqREypGPIglo=", + "1:uSrPYHIl4eJpdC+J0IAMuGStuNc=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24196", + "palo_alto.pan_os.network.nat.community_id": "1:uSrPYHIl4eJpdC+J0IAMuGStuNc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091149, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 38064, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 205, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 205, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 16569, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 4296, + "client.ip": "192.168.15.224", + "client.packets": 20, + "client.port": 52479, + "destination.address": "35.186.194.41", + "destination.bytes": 4296, + "destination.geo.city_name": "Mountain View", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.419200000000004, + "destination.geo.location.lon": -122.0574, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "35.186.194.41", + "destination.packets": 24, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 8000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 17699, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.186.194.41,192.168.1.63,35.186.194.41,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24264,1,52479,443,42924,443,0x400053,tcp,allow,6598,4296,2302,44,2018/11/30 16:09:19,8,insufficient-content,0,32091150,0x0,192.168.0.0-192.168.255.255,United States,0,24,20,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 6598, + "network.community_id": [ + "1:oy06sQtSbOzvWgK/dr7N5HKE5Ng=", + "1:djhBHAw6H+Q9Bcz6i7V+GTrjtzA=" + ], + "network.direction": "outbound", + "network.packets": 44, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "35.186.194.41", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24264", + "palo_alto.pan_os.network.nat.community_id": "1:djhBHAw6H+Q9Bcz6i7V+GTrjtzA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091150, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 42924, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "insufficient-content", + "related.ip": [ + "192.168.15.224", + "35.186.194.41", + "192.168.1.63", + "35.186.194.41" + ], + "server.bytes": 2302, + "server.ip": "35.186.194.41", + "server.packets": 24, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 2302, + "source.ip": "192.168.15.224", + "source.packets": 20, + "source.port": 52479, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 58831, + "client.ip": "192.168.15.224", + "client.packets": 41, + "client.port": 52478, + "destination.address": "35.201.124.9", + "destination.bytes": 58831, + "destination.geo.continent_name": "Asia", + "destination.geo.location.lat": 35.0, + "destination.geo.location.lon": 105.0, + "destination.ip": "35.201.124.9", + "destination.packets": 63, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 8000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 18185, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.201.124.9,192.168.1.63,35.201.124.9,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24248,1,52478,443,58977,443,0x400053,tcp,allow,65588,58831,6757,104,2018/11/30 16:09:19,8,insufficient-content,0,32091151,0x0,192.168.0.0-192.168.255.255,Asia Pacific Region,0,63,41,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 65588, + "network.community_id": [ + "1:DBvAD0JZYsb+pmUJkhTQYOcLJls=", + "1:hIY5A8O11VWtEfpYG2l5voTvbVQ=" + ], + "network.direction": "outbound", + "network.packets": 104, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "35.201.124.9", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24248", + "palo_alto.pan_os.network.nat.community_id": "1:hIY5A8O11VWtEfpYG2l5voTvbVQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091151, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 58977, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "insufficient-content", + "related.ip": [ + "192.168.15.224", + "35.201.124.9", + "192.168.1.63", + "35.201.124.9" + ], + "server.bytes": 6757, + "server.ip": "35.201.124.9", + "server.packets": 63, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 6757, + "source.ip": "192.168.15.224", + "source.packets": 41, + "source.port": 52478, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 4069, + "client.ip": "192.168.15.224", + "client.packets": 15, + "client.port": 52502, + "destination.address": "100.24.131.237", + "destination.bytes": 4069, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "100.24.131.237", + "destination.packets": 17, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 6000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 18678, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,100.24.131.237,192.168.1.63,100.24.131.237,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24268,1,52502,443,64732,443,0x400053,tcp,allow,13076,4069,9007,32,2018/11/30 16:09:21,6,business-and-economy,0,32091152,0x0,192.168.0.0-192.168.255.255,United States,0,17,15,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 13076, + "network.community_id": [ + "1:3G8yDLybfwtFo10J4I/c5Ayd4Qk=", + "1:sXYelUOdA/EfjcKKE8M5kPe+M+c=" + ], + "network.direction": "outbound", + "network.packets": 32, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "100.24.131.237", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24268", + "palo_alto.pan_os.network.nat.community_id": "1:sXYelUOdA/EfjcKKE8M5kPe+M+c=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091152, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 64732, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "100.24.131.237", + "192.168.1.63", + "100.24.131.237" + ], + "server.bytes": 9007, + "server.ip": "100.24.131.237", + "server.packets": 17, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 9007, + "source.ip": "192.168.15.224", + "source.packets": 15, + "source.port": 52502, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 1100, + "client.ip": "192.168.15.224", + "client.packets": 7, + "client.port": 52458, + "destination.address": "184.51.252.247", + "destination.bytes": 1100, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "184.51.252.247", + "destination.packets": 8, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 13000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 19179, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,184.51.252.247,192.168.1.63,184.51.252.247,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24175,1,52458,443,58292,443,0x40001c,tcp,allow,1761,1100,661,15,2018/11/30 16:09:14,13,computer-and-internet-info,0,32091153,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 1761, + "network.community_id": [ + "1:ZTCXYP/obCmlK+BT3BISstdxpCk=", + "1:D6pPzYoIWTOXxVzuweKvZYK6FVE=" + ], + "network.direction": "outbound", + "network.packets": 15, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "184.51.252.247", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24175", + "palo_alto.pan_os.network.nat.community_id": "1:D6pPzYoIWTOXxVzuweKvZYK6FVE=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091153, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 58292, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "184.51.252.247", + "192.168.1.63", + "184.51.252.247" + ], + "server.bytes": 661, + "server.ip": "184.51.252.247", + "server.packets": 8, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 661, + "source.ip": "192.168.15.224", + "source.packets": 7, + "source.port": 52458, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 3596, + "client.ip": "192.168.15.224", + "client.packets": 16, + "client.port": 52484, + "destination.address": "35.190.88.148", + "destination.bytes": 3596, + "destination.geo.city_name": "Mountain View", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.419200000000004, + "destination.geo.location.lon": -122.0574, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "35.190.88.148", + "destination.packets": 15, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 8000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 19683, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.190.88.148,192.168.1.63,35.190.88.148,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24312,1,52484,443,32209,443,0x400053,tcp,allow,14732,3596,11136,31,2018/11/30 16:09:19,8,computer-and-internet-info,0,32091154,0x0,192.168.0.0-192.168.255.255,United States,0,15,16,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 14732, + "network.community_id": [ + "1:DEAqTvDzZjanGG1P2CcnR3CKUfc=", + "1:VFQjrA+iaNcIu6vFJNU6ls7+4Is=" + ], + "network.direction": "outbound", + "network.packets": 31, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "35.190.88.148", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24312", + "palo_alto.pan_os.network.nat.community_id": "1:VFQjrA+iaNcIu6vFJNU6ls7+4Is=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091154, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 32209, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "35.190.88.148", + "192.168.1.63", + "35.190.88.148" + ], + "server.bytes": 11136, + "server.ip": "35.190.88.148", + "server.packets": 15, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 11136, + "source.ip": "192.168.15.224", + "source.packets": 16, + "source.port": 52484, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 3596, + "client.ip": "192.168.15.224", + "client.packets": 16, + "client.port": 52482, + "destination.address": "35.186.243.83", + "destination.bytes": 3596, + "destination.geo.city_name": "Mountain View", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.419200000000004, + "destination.geo.location.lon": -122.0574, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "35.186.243.83", + "destination.packets": 15, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 8000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 20177, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.186.243.83,192.168.1.63,35.186.243.83,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24164,1,52482,443,38822,443,0x400053,tcp,allow,14732,3596,11136,31,2018/11/30 16:09:19,8,computer-and-internet-info,0,32091155,0x0,192.168.0.0-192.168.255.255,United States,0,15,16,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 14732, + "network.community_id": [ + "1:t/ErTuEXtgYIkRnq4+UdhVKcFnA=", + "1:Xx31zYZNYc/mjf2GOihkp6JogmA=" + ], + "network.direction": "outbound", + "network.packets": 31, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "35.186.243.83", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24164", + "palo_alto.pan_os.network.nat.community_id": "1:Xx31zYZNYc/mjf2GOihkp6JogmA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091155, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 38822, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "35.186.243.83", + "192.168.1.63", + "35.186.243.83" + ], + "server.bytes": 11136, + "server.ip": "35.186.243.83", + "server.packets": 15, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 11136, + "source.ip": "192.168.15.224", + "source.packets": 16, + "source.port": 52482, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 84, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 33769, + "destination.address": "8.8.8.8", + "destination.bytes": 84, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:12.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:12.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 20671, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,untrust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24198,1,33769,53,16044,53,0x400019,udp,allow,266,84,182,2,2018/11/30 16:09:12,0,any,0,32091156,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 266, + "network.community_id": [ + "1:Y7iOj20be5Di4rx5iGHLO9k0YoU=", + "1:445AeHI1LAvb+ii4arRZeLAO4zM=" + ], + "network.direction": "external", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24198", + "palo_alto.pan_os.network.nat.community_id": "1:445AeHI1LAvb+ii4arRZeLAO4zM=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091156, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 16044, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 182, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 182, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 33769, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 74, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 14106, + "destination.address": "8.8.8.8", + "destination.bytes": 74, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:12.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:12.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 21122, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,trust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24184,1,14106,53,56614,53,0x400019,udp,allow,164,74,90,2,2018/11/30 16:09:12,0,any,0,32091157,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 164, + "network.community_id": [ + "1:8HlDMcJ2vfYtzQNW4/YDX7avDu8=", + "1:+5KwsEYW+tFecEENSBwHbKTvUv8=" + ], + "network.direction": "internal", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "24184", + "palo_alto.pan_os.network.nat.community_id": "1:+5KwsEYW+tFecEENSBwHbKTvUv8=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091157, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 56614, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 90, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 90, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 14106, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 2731, + "client.ip": "192.168.15.224", + "client.packets": 13, + "client.port": 52503, + "destination.address": "100.24.165.74", + "destination.bytes": 2731, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "100.24.165.74", + "destination.packets": 17, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 6000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 21568, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,100.24.165.74,192.168.1.63,100.24.165.74,new_outbound_from_trust,,,ssl,vsys1,untrust,trust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24314,1,52503,443,53168,443,0x400053,tcp,allow,9400,2731,6669,30,2018/11/30 16:09:21,6,business-and-economy,0,32091158,0x0,192.168.0.0-192.168.255.255,United States,0,17,13,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 9400, + "network.community_id": [ + "1:dDqHJ1Y91GSM0iyiXXbBnOasVJM=", + "1:DRqq/mx90TOYq1a5yLf562kwIvc=" + ], + "network.direction": "inbound", + "network.packets": 30, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "100.24.165.74", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "trust", + "palo_alto.pan_os.flow_id": "24314", + "palo_alto.pan_os.network.nat.community_id": "1:DRqq/mx90TOYq1a5yLf562kwIvc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091158, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 53168, + "palo_alto.pan_os.source.zone": "untrust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "100.24.165.74", + "192.168.1.63", + "100.24.165.74" + ], + "server.bytes": 6669, + "server.ip": "100.24.165.74", + "server.packets": 17, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 6669, + "source.ip": "192.168.15.224", + "source.packets": 13, + "source.port": 52503, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 1100, + "client.ip": "192.168.15.224", + "client.packets": 7, + "client.port": 52459, + "destination.address": "184.51.252.247", + "destination.bytes": 1100, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "184.51.252.247", + "destination.packets": 8, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 13000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 22066, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,184.51.252.247,192.168.1.63,184.51.252.247,new_outbound_from_trust,,,ssl,vsys1,xtrust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24204,1,52459,443,28012,443,0x40001c,tcp,allow,1761,1100,661,15,2018/11/30 16:09:14,13,computer-and-internet-info,0,32091159,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 1761, + "network.community_id": [ + "1:LeVVxJ/qJ69xMnerDRfh9DhS1wg=", + "1:vx03vuDn4sh2/e89Lm3RoSpVIVM=" + ], + "network.direction": "unknown", + "network.packets": 15, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "184.51.252.247", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24204", + "palo_alto.pan_os.network.nat.community_id": "1:vx03vuDn4sh2/e89Lm3RoSpVIVM=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091159, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 28012, + "palo_alto.pan_os.source.zone": "xtrust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "184.51.252.247", + "192.168.1.63", + "184.51.252.247" + ], + "server.bytes": 661, + "server.ip": "184.51.252.247", + "server.packets": 8, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 661, + "source.ip": "192.168.15.224", + "source.packets": 7, + "source.port": 52459, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:45.000Z", + "client.bytes": 3596, + "client.ip": "192.168.15.224", + "client.packets": 16, + "client.port": 52483, + "destination.address": "35.201.94.140", + "destination.bytes": 3596, + "destination.geo.continent_name": "Asia", + "destination.geo.location.lat": 35.0, + "destination.geo.location.lon": 105.0, + "destination.ip": "35.201.94.140", + "destination.packets": 15, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 8000000000, + "event.end": "2018-11-30T16:09:27.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 22571, + "log.original": "Nov 30 16:09:45 PA-220 1,2018/11/30 16:09:45,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:45,192.168.15.224,35.201.94.140,192.168.1.63,35.201.94.140,new_outbound_from_trust,,,ssl,vsys1,trust,xuntrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:45,24234,1,52483,443,16050,443,0x400053,tcp,allow,14732,3596,11136,31,2018/11/30 16:09:19,8,computer-and-internet-info,0,32091160,0x0,192.168.0.0-192.168.255.255,Asia Pacific Region,0,15,16,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 14732, + "network.community_id": [ + "1:b6jBmvbfVzb1LGTW2RD80kK1rMs=", + "1:u1uvQ3wfJoaG/nNiBhvQMHQSVlU=" + ], + "network.direction": "unknown", + "network.packets": 31, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "35.201.94.140", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "xuntrust", + "palo_alto.pan_os.flow_id": "24234", + "palo_alto.pan_os.network.nat.community_id": "1:u1uvQ3wfJoaG/nNiBhvQMHQSVlU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091160, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 16050, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "35.201.94.140", + "192.168.1.63", + "35.201.94.140" + ], + "server.bytes": 11136, + "server.ip": "35.201.94.140", + "server.packets": 15, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 11136, + "source.ip": "192.168.15.224", + "source.packets": 16, + "source.port": 52483, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 588, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 588, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 6, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:31.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:31.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 23072, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,,,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24390,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:31,0,any,0,32091161,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 1176, + "network.community_id": [ + "1:iNhLzwoKKarTKCq59Sts/hhZN7Q=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "unknown", + "network.packets": 12, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.flow_id": "24390", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091161, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 588, + "server.ip": "8.8.8.8", + "server.packets": 6, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 588, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 84, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 38663, + "destination.address": "8.8.8.8", + "destination.bytes": 84, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 23504, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24093,1,38663,53,61722,53,0x400019,udp,allow,228,84,144,2,2018/11/30 16:09:13,0,any,0,32091162,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 228, + "network.community_id": [ + "1:jK1/samUe1w5J1uVlmH7SIXX1YE=", + "1:lz0ZCL4R4wwyqmvefpkiJk7yR18=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24093", + "palo_alto.pan_os.network.nat.community_id": "1:lz0ZCL4R4wwyqmvefpkiJk7yR18=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091162, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 61722, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 144, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 144, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 38663, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 131, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 50443, + "destination.address": "8.8.8.8", + "destination.bytes": 131, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 23953, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24117,1,50443,53,14247,53,0x400019,udp,allow,337,131,206,2,2018/11/30 16:09:13,0,any,0,32091163,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 337, + "network.community_id": [ + "1:pe+tF7SEY/Km9LRsrGI4UWHmV8E=", + "1:DkOVz0BGrlh9OPZZ8+58eugW7gU=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24117", + "palo_alto.pan_os.network.nat.community_id": "1:DkOVz0BGrlh9OPZZ8+58eugW7gU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091163, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 14247, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 206, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 206, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 50443, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 131, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 54215, + "destination.address": "8.8.8.8", + "destination.bytes": 131, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 24403, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24142,1,54215,53,33580,53,0x400019,udp,allow,337,131,206,2,2018/11/30 16:09:13,0,any,0,32091164,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 337, + "network.community_id": [ + "1:qHh6xeCGBZ5pLwaBsFDRVbP5MZU=", + "1:twx1eOqehbazvI0g0nkTeVynrY0=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24142", + "palo_alto.pan_os.network.nat.community_id": "1:twx1eOqehbazvI0g0nkTeVynrY0=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091164, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 33580, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 206, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 206, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 54215, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 83, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 35827, + "destination.address": "8.8.8.8", + "destination.bytes": 83, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 24853, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24195,1,35827,53,13498,53,0x400019,udp,allow,252,83,169,2,2018/11/30 16:09:13,0,any,0,32091165,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 252, + "network.community_id": [ + "1:7yZMN4i1Gxii2+FmEtBbvDk3lvA=", + "1:hcgjXpi+ne3QnFDBLeskkVg4V+M=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24195", + "palo_alto.pan_os.network.nat.community_id": "1:hcgjXpi+ne3QnFDBLeskkVg4V+M=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091165, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 13498, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 169, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 169, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 35827, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 100, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 60609, + "destination.address": "8.8.8.8", + "destination.bytes": 100, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 25302, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24124,1,60609,53,20365,53,0x400019,udp,allow,232,100,132,2,2018/11/30 16:09:13,0,any,0,32091166,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 232, + "network.community_id": [ + "1:0vV/bWp15XA8ntbAvsV9+ktbx6E=", + "1:C91XK45Q10iqwwp4XYM+Wg1Ua8A=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24124", + "palo_alto.pan_os.network.nat.community_id": "1:C91XK45Q10iqwwp4XYM+Wg1Ua8A=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091166, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 20365, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 132, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 132, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 60609, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 79, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 3248, + "destination.address": "8.8.8.8", + "destination.bytes": 79, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 25752, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24153,1,3248,53,61464,53,0x400019,udp,allow,206,79,127,2,2018/11/30 16:09:13,0,any,0,32091167,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 206, + "network.community_id": [ + "1:v2Rn2HMvdhM3B2CXYva9UePt+Og=", + "1:hsTAFtOdeb7+Ofe152B+9h69mbE=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24153", + "palo_alto.pan_os.network.nat.community_id": "1:hsTAFtOdeb7+Ofe152B+9h69mbE=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091167, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 61464, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 127, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 127, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 3248, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 89, + "client.ip": "192.168.15.196", + "client.packets": 1, + "client.port": 49284, + "destination.address": "8.8.8.8", + "destination.bytes": 89, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 26200, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.196,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24122,1,49284,53,42877,53,0x400019,udp,allow,194,89,105,2,2018/11/30 16:09:13,0,any,0,32091168,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 194, + "network.community_id": [ + "1:tO559KwdaAXfBh7HmZSLp9/JUJQ=", + "1:htOXUg3QOGd0fpgLjYzQlvRMzUQ=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24122", + "palo_alto.pan_os.network.nat.community_id": "1:htOXUg3QOGd0fpgLjYzQlvRMzUQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091168, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 42877, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.196", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 105, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.196", + "source.bytes": 105, + "source.ip": "192.168.15.196", + "source.packets": 1, + "source.port": 49284, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 97, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 57732, + "destination.address": "8.8.8.8", + "destination.bytes": 97, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 26649, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24171,1,57732,53,5918,53,0x400019,udp,allow,269,97,172,2,2018/11/30 16:09:13,0,any,0,32091169,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 269, + "network.community_id": [ + "1:aMEfJV/f54B1+0RNtWjw49JfNFU=", + "1:gHWCOTtilTTqOn7fOKh7zVq45Xw=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24171", + "palo_alto.pan_os.network.nat.community_id": "1:gHWCOTtilTTqOn7fOKh7zVq45Xw=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091169, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 5918, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 172, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 172, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 57732, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 78, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 49195, + "destination.address": "8.8.8.8", + "destination.bytes": 78, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 27097, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24069,1,49195,53,28944,53,0x400019,udp,allow,212,78,134,2,2018/11/30 16:09:13,0,any,0,32091170,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 212, + "network.community_id": [ + "1:WgGQfntwYS3voQPhGfI/qhx0SVk=", + "1:OGDvpe1+4KQfCsxk0I61jm0+DIc=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24069", + "palo_alto.pan_os.network.nat.community_id": "1:OGDvpe1+4KQfCsxk0I61jm0+DIc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091170, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 28944, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 134, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 134, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 49195, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 73, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 17266, + "destination.address": "8.8.8.8", + "destination.bytes": 73, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 27546, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24282,1,17266,53,13415,53,0x400019,udp,allow,252,73,179,2,2018/11/30 16:09:13,0,any,0,32091171,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 252, + "network.community_id": [ + "1:RM5edUgZPywM/hIejzFVba+A4co=", + "1:po/vy4RoD5WeFPgCZnduQkE47yY=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24282", + "palo_alto.pan_os.network.nat.community_id": "1:po/vy4RoD5WeFPgCZnduQkE47yY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091171, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 13415, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 179, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 179, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 17266, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 90, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 48631, + "destination.address": "8.8.8.8", + "destination.bytes": 90, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 27995, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24218,1,48631,53,2489,53,0x400019,udp,allow,308,90,218,2,2018/11/30 16:09:13,0,any,0,32091172,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 308, + "network.community_id": [ + "1:jJo7FJWI3gHbC96nTsyT17hVP98=", + "1:wIxYOe++IxscmxBcRwrPGEIlZF4=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24218", + "palo_alto.pan_os.network.nat.community_id": "1:wIxYOe++IxscmxBcRwrPGEIlZF4=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091172, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 2489, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 218, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 218, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 48631, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 77, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 58540, + "destination.address": "8.8.8.8", + "destination.bytes": 77, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 28443, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24200,1,58540,53,49328,53,0x400019,udp,allow,249,77,172,2,2018/11/30 16:09:13,0,any,0,32091173,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 249, + "network.community_id": [ + "1:eWhg/7DfJGJNfW90sKt5WEYnI9g=", + "1:xN7R3QI47jVAQhgJrOAvdsu+oes=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24200", + "palo_alto.pan_os.network.nat.community_id": "1:xN7R3QI47jVAQhgJrOAvdsu+oes=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091173, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 49328, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 172, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 172, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 58540, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:46.000Z", + "client.bytes": 74, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 42678, + "destination.address": "8.8.8.8", + "destination.bytes": 74, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:13.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 28892, + "log.original": "Nov 30 16:09:46 PA-220 1,2018/11/30 16:09:46,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:46,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:46,24224,1,42678,53,36036,53,0x400019,udp,allow,379,74,305,2,2018/11/30 16:09:13,0,any,0,32091174,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 379, + "network.community_id": [ + "1:dhAcAsMUxJrHfinQA5Q7eglS7T0=", + "1:BxuDgAhR5Rh55XOXYnYF+6GKhps=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24224", + "palo_alto.pan_os.network.nat.community_id": "1:BxuDgAhR5Rh55XOXYnYF+6GKhps=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091174, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 36036, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 305, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 305, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 42678, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 76, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 16576, + "destination.address": "66.28.0.45", + "destination.bytes": 76, + "destination.geo.city_name": "Upper Marlboro", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 38.8922, + "destination.geo.location.lon": -76.7681, + "destination.geo.region_iso_code": "US-MD", + "destination.geo.region_name": "Maryland", + "destination.ip": "66.28.0.45", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 29341, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,66.28.0.45,192.168.1.63,66.28.0.45,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24240,1,16576,53,33744,53,0x400019,udp,allow,603,76,527,2,2018/11/30 16:09:14,0,any,0,32091175,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 603, + "network.community_id": [ + "1:4i/owhGS2IpySKH+SyV4sXRj0+A=", + "1:Yv+Yq/7HK9SajeKHOV50RYQWjRU=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "66.28.0.45", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24240", + "palo_alto.pan_os.network.nat.community_id": "1:Yv+Yq/7HK9SajeKHOV50RYQWjRU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091175, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 33744, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "66.28.0.45", + "192.168.1.63", + "66.28.0.45" + ], + "server.bytes": 527, + "server.ip": "66.28.0.45", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 527, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 16576, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 89, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 39830, + "destination.address": "8.8.8.8", + "destination.bytes": 89, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 29796, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24183,1,39830,53,45809,53,0x400019,udp,allow,242,89,153,2,2018/11/30 16:09:14,0,any,0,32091176,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 242, + "network.community_id": [ + "1:KZzZcwEN4cbaTck1z2Wa/3P3YjU=", + "1:MxVcaRP5Y1xyEiYiNsmO1lVcN+A=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24183", + "palo_alto.pan_os.network.nat.community_id": "1:MxVcaRP5Y1xyEiYiNsmO1lVcN+A=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091176, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 45809, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 153, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 153, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 39830, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 71, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 6185, + "destination.address": "8.8.8.8", + "destination.bytes": 71, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 30245, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24211,1,6185,53,3675,53,0x400019,udp,allow,240,71,169,2,2018/11/30 16:09:14,0,any,0,32091177,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 240, + "network.community_id": [ + "1:LJ6ZkdUI9SYHDvi3B2Yn/9ILMbM=", + "1:p8DU1xLXG63f/3s/r6ZKJcQo9u8=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24211", + "palo_alto.pan_os.network.nat.community_id": "1:p8DU1xLXG63f/3s/r6ZKJcQo9u8=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091177, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 3675, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 169, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 169, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 6185, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 80, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 8781, + "destination.address": "8.8.8.8", + "destination.bytes": 80, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 30692, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24253,1,8781,53,5787,53,0x400019,udp,allow,208,80,128,2,2018/11/30 16:09:14,0,any,0,32091178,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 208, + "network.community_id": [ + "1:8CDWB7X3kkKjoV2bprSLSQY1py4=", + "1:bU3nBIz+M3cDoPKg8azcJgVx+8Q=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24253", + "palo_alto.pan_os.network.nat.community_id": "1:bU3nBIz+M3cDoPKg8azcJgVx+8Q=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091178, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 5787, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 128, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 128, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 8781, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 72, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 16788, + "destination.address": "8.8.8.8", + "destination.bytes": 72, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 31139, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24221,1,16788,53,12342,53,0x400019,udp,allow,253,72,181,2,2018/11/30 16:09:14,0,any,0,32091179,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 253, + "network.community_id": [ + "1:ScmRIn+bxqoJafQfJfEaH/CdCjE=", + "1:vnb4ttnFy2i39tg89p3jkGs6eDg=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24221", + "palo_alto.pan_os.network.nat.community_id": "1:vnb4ttnFy2i39tg89p3jkGs6eDg=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091179, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 12342, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 181, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 181, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 16788, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 76, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 45307, + "destination.address": "8.8.8.8", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 31588, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24310,1,45307,53,18729,53,0x400019,udp,allow,197,76,121,2,2018/11/30 16:09:14,0,any,0,32091180,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 197, + "network.community_id": [ + "1:eupsSNkv67+oInX/FQ2hHpUMyR8=", + "1:71/qcXOmOV3sXCqZ1T6JVPlE9y8=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24310", + "palo_alto.pan_os.network.nat.community_id": "1:71/qcXOmOV3sXCqZ1T6JVPlE9y8=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091180, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 18729, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 121, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 121, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 45307, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 681, + "client.ip": "192.168.15.224", + "client.packets": 5, + "client.port": 52520, + "destination.address": "23.52.174.25", + "destination.bytes": 681, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "23.52.174.25", + "destination.packets": 6, + "destination.port": 80, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:29.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:29.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 32037, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,23.52.174.25,192.168.1.63,23.52.174.25,new_outbound_from_trust,,,ocsp,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24326,1,52520,80,57858,80,0x400053,tcp,allow,1927,681,1246,11,2018/11/30 16:09:29,0,computer-and-internet-info,0,32091181,0x0,192.168.0.0-192.168.255.255,United States,0,6,5,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ocsp", + "network.bytes": 1927, + "network.community_id": [ + "1://eZmJioBenLsE0zEL0rhbQ7JT8=", + "1:5ECmBtgiSUvWFJAA318pVeeu5Pw=" + ], + "network.direction": "outbound", + "network.packets": 11, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "23.52.174.25", + "palo_alto.pan_os.destination.nat.port": 80, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24326", + "palo_alto.pan_os.network.nat.community_id": "1:5ECmBtgiSUvWFJAA318pVeeu5Pw=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091181, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 57858, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "computer-and-internet-info", + "related.ip": [ + "192.168.15.224", + "23.52.174.25", + "192.168.1.63", + "23.52.174.25" + ], + "server.bytes": 1246, + "server.ip": "23.52.174.25", + "server.packets": 6, + "server.port": 80, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 1246, + "source.ip": "192.168.15.224", + "source.packets": 5, + "source.port": 52520, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 79, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 8503, + "destination.address": "8.8.8.8", + "destination.bytes": 79, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 1000000000, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:13.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 32523, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24201,1,8503,53,2722,53,0x400019,udp,allow,394,79,315,2,2018/11/30 16:09:13,1,any,0,32091182,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 394, + "network.community_id": [ + "1:5CL0nRdjk2Nab0PzB6vfyC1FbtI=", + "1:hxrz+dYE5XEf60JMlFz6JKWD6Ek=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24201", + "palo_alto.pan_os.network.nat.community_id": "1:hxrz+dYE5XEf60JMlFz6JKWD6Ek=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091182, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 2722, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 315, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 315, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 8503, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 82, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 6910, + "destination.address": "8.8.8.8", + "destination.bytes": 82, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 32970, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24130,1,6910,53,6674,53,0x400019,udp,allow,212,82,130,2,2018/11/30 16:09:14,0,any,0,32091183,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 212, + "network.community_id": [ + "1:3cIrQ2yt0QUupDVmbBJXH54+2pA=", + "1:8cb9oPS9OJnzqGAkowgmRpiqmJU=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24130", + "palo_alto.pan_os.network.nat.community_id": "1:8cb9oPS9OJnzqGAkowgmRpiqmJU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091183, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 6674, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 130, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 130, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 6910, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 354, + "client.ip": "192.168.15.224", + "client.packets": 4, + "client.port": 52475, + "destination.address": "54.230.5.228", + "destination.bytes": 354, + "destination.geo.city_name": "Seattle", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 47.542, + "destination.geo.location.lon": -122.3123, + "destination.geo.region_iso_code": "US-WA", + "destination.geo.region_name": "Washington", + "destination.ip": "54.230.5.228", + "destination.packets": 5, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 12000000000, + "event.end": "2018-11-30T16:09:29.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:17.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 33417, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,54.230.5.228,192.168.1.63,54.230.5.228,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24237,1,52475,443,37427,443,0x40001c,tcp,allow,642,354,288,9,2018/11/30 16:09:17,12,any,0,32091184,0x0,192.168.0.0-192.168.255.255,United States,0,5,4,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "incomplete", + "network.bytes": 642, + "network.community_id": [ + "1:ArbNq6iF9i1NLk5zDU1qThAZf4g=", + "1:Qc2oBV7ermdHPwGTWFOi4D1TcLg=" + ], + "network.direction": "outbound", + "network.packets": 9, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "54.230.5.228", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24237", + "palo_alto.pan_os.network.nat.community_id": "1:Qc2oBV7ermdHPwGTWFOi4D1TcLg=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091184, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 37427, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "54.230.5.228", + "192.168.1.63", + "54.230.5.228" + ], + "server.bytes": 288, + "server.ip": "54.230.5.228", + "server.packets": 5, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 288, + "source.ip": "192.168.15.224", + "source.packets": 4, + "source.port": 52475, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:47.000Z", + "client.bytes": 76, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 14342, + "destination.address": "8.8.8.8", + "destination.bytes": 76, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:14.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:14.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 33886, + "log.original": "Nov 30 16:09:47 PA-220 1,2018/11/30 16:09:47,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:47,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:47,24108,1,14342,53,22408,53,0x400019,udp,allow,225,76,149,2,2018/11/30 16:09:14,0,any,0,32091185,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 225, + "network.community_id": [ + "1:uTxp5xDc9k43Sc1xNxNrsxzfM/I=", + "1:5IHTDvzRd4yPLPdpI4ErHcRK4/w=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24108", + "palo_alto.pan_os.network.nat.community_id": "1:5IHTDvzRd4yPLPdpI4ErHcRK4/w=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091185, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 22408, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 149, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 149, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 14342, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:48.000Z", + "client.bytes": 71, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 48197, + "destination.address": "8.8.8.8", + "destination.bytes": 71, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:15.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:15.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 34335, + "log.original": "Nov 30 16:09:48 PA-220 1,2018/11/30 16:09:48,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:48,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:48,24247,1,48197,53,27899,53,0x400019,udp,allow,273,71,202,2,2018/11/30 16:09:15,0,any,0,32091186,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 273, + "network.community_id": [ + "1:hwpLJFJeocCuki/uuS7DMUwYAcc=", + "1:0s4n+/itsIbV3mUc8OnOxmZ6exs=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24247", + "palo_alto.pan_os.network.nat.community_id": "1:0s4n+/itsIbV3mUc8OnOxmZ6exs=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091186, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 27899, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 202, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 202, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 48197, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:48.000Z", + "client.bytes": 75, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 32296, + "destination.address": "8.8.8.8", + "destination.bytes": 75, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:15.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:15.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 34784, + "log.original": "Nov 30 16:09:48 PA-220 1,2018/11/30 16:09:48,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:48,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:48,24098,1,32296,53,52939,53,0x400019,udp,allow,270,75,195,2,2018/11/30 16:09:15,0,any,0,32091187,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 270, + "network.community_id": [ + "1:PL/uhiXbtv9YRtGDNEfmkWyMpEw=", + "1:+GsjKlESn/QeXwrAsS8c8EaMzi0=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24098", + "palo_alto.pan_os.network.nat.community_id": "1:+GsjKlESn/QeXwrAsS8c8EaMzi0=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091187, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 52939, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 195, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 195, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 32296, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:48.000Z", + "client.bytes": 90, + "client.ip": "192.168.15.195", + "client.packets": 1, + "client.port": 33870, + "destination.address": "208.83.246.20", + "destination.bytes": 90, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "208.83.246.20", + "destination.packets": 1, + "destination.port": 123, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:15.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:15.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 35233, + "log.original": "Nov 30 16:09:48 PA-220 1,2018/11/30 16:09:48,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:48,192.168.15.195,208.83.246.20,192.168.1.63,208.83.246.20,new_outbound_from_trust,,,ntp,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:48,24263,1,33870,123,42907,123,0x400053,udp,allow,180,90,90,2,2018/11/30 16:09:15,0,any,0,32091188,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ntp", + "network.bytes": 180, + "network.community_id": [ + "1:zSTxlbsV3qi7ri6QQifUc6oMz/o=", + "1:OSARbLstqz9D5CGo0NQuv0a9g20=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "208.83.246.20", + "palo_alto.pan_os.destination.nat.port": 123, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24263", + "palo_alto.pan_os.network.nat.community_id": "1:OSARbLstqz9D5CGo0NQuv0a9g20=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091188, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 42907, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.195", + "208.83.246.20", + "192.168.1.63", + "208.83.246.20" + ], + "server.bytes": 90, + "server.ip": "208.83.246.20", + "server.packets": 1, + "server.port": 123, + "service.type": "palo_alto", + "source.address": "192.168.15.195", + "source.bytes": 90, + "source.ip": "192.168.15.195", + "source.packets": 1, + "source.port": 33870, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:49.000Z", + "client.bytes": 148, + "client.ip": "192.168.15.196", + "client.packets": 2, + "client.port": 54659, + "destination.address": "8.8.8.8", + "destination.bytes": 148, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 2, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:16.000Z", + "event.module": "palo_alto", + "event.outcome": "drop-icmp", + "event.start": "2018-11-30T16:09:16.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 35695, + "log.original": "Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.196,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24258,1,54659,53,19658,53,0x400019,udp,drop ICMP,340,148,192,4,2018/11/30 16:09:16,0,any,0,32091189,0x0,192.168.0.0-192.168.255.255,United States,0,2,2,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 340, + "network.community_id": [ + "1:E2LqiKHR3ZQXGMA0QsH84jNNC/0=", + "1:Cc+ekkpKaB3f2BPdSyd/esY/QVI=" + ], + "network.direction": "outbound", + "network.packets": 4, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24258", + "palo_alto.pan_os.network.nat.community_id": "1:Cc+ekkpKaB3f2BPdSyd/esY/QVI=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091189, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 19658, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.196", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 192, + "server.ip": "8.8.8.8", + "server.packets": 2, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.196", + "source.bytes": 192, + "source.ip": "192.168.15.196", + "source.packets": 2, + "source.port": 54659, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:49.000Z", + "client.bytes": 83, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 57446, + "destination.address": "8.8.8.8", + "destination.bytes": 83, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:16.000Z", + "event.module": "palo_alto", + "event.outcome": "reset-client", + "event.start": "2018-11-30T16:09:16.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 36149, + "log.original": "Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24155,1,57446,53,64352,53,0x400019,udp,reset client,291,83,208,2,2018/11/30 16:09:16,0,any,0,32091190,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 291, + "network.community_id": [ + "1:wZXxVANJq0JID3j0Sh2o/qnIa7A=", + "1:uPFYX4KL/wjyCp4kt+08v7myT3w=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24155", + "palo_alto.pan_os.network.nat.community_id": "1:uPFYX4KL/wjyCp4kt+08v7myT3w=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091190, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 64352, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 208, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 208, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 57446, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:49.000Z", + "client.bytes": 84, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 22655, + "destination.address": "8.8.8.8", + "destination.bytes": 84, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:16.000Z", + "event.module": "palo_alto", + "event.outcome": "reset-server", + "event.start": "2018-11-30T16:09:16.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 36605, + "log.original": "Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24232,1,22655,53,60126,53,0x400019,udp,reset server,184,84,100,2,2018/11/30 16:09:16,0,any,0,32091191,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 184, + "network.community_id": [ + "1:GzSDvCcBuprowvf40RNRaGTOn+A=", + "1:f3vxOCmoOo/FOLV6VRqKjZ7eUVE=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24232", + "palo_alto.pan_os.network.nat.community_id": "1:f3vxOCmoOo/FOLV6VRqKjZ7eUVE=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091191, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 60126, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 100, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 100, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 22655, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:49.000Z", + "client.bytes": 2053, + "client.ip": "192.168.15.224", + "client.packets": 11, + "client.port": 52509, + "destination.address": "35.185.88.112", + "destination.bytes": 2053, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 38.6582, + "destination.geo.location.lon": -77.2497, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "35.185.88.112", + "destination.packets": 13, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 10000000000, + "event.end": "2018-11-30T16:09:31.000Z", + "event.module": "palo_alto", + "event.outcome": "reset-both", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 37061, + "log.original": "Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,35.185.88.112,192.168.1.63,35.185.88.112,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24330,1,52509,443,59771,443,0x40001a,tcp,reset both,9290,2053,7237,24,2018/11/30 16:09:21,10,business-and-economy,0,32091192,0x0,192.168.0.0-192.168.255.255,United States,0,13,11,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 9290, + "network.community_id": [ + "1:WVDXvoZNkWqELBhlp2DzAjKS6V4=", + "1:/rmnQ6QBbJzgkfNBrkCgvu5UHiU=" + ], + "network.direction": "outbound", + "network.packets": 24, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "35.185.88.112", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24330", + "palo_alto.pan_os.network.nat.community_id": "1:/rmnQ6QBbJzgkfNBrkCgvu5UHiU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091192, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 59771, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "35.185.88.112", + "192.168.1.63", + "35.185.88.112" + ], + "server.bytes": 7237, + "server.ip": "35.185.88.112", + "server.packets": 13, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 7237, + "source.ip": "192.168.15.224", + "source.packets": 11, + "source.port": 52509, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:49.000Z", + "client.bytes": 93, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 27192, + "destination.address": "8.8.8.8", + "destination.bytes": 93, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:16.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:16.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 37565, + "log.original": "Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,23960,1,27192,53,35748,53,0x400019,udp,allow,202,93,109,2,2018/11/30 16:09:16,0,any,0,32091193,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 202, + "network.community_id": [ + "1:SaW9SLCHEmuQYbHgbCLPVZmIrWo=", + "1:9Ub1pskil4C0tLo85OJa61g1D0Q=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "23960", + "palo_alto.pan_os.network.nat.community_id": "1:9Ub1pskil4C0tLo85OJa61g1D0Q=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091193, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 35748, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 109, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 109, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 27192, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:49.000Z", + "client.bytes": 84, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 30221, + "destination.address": "8.8.8.8", + "destination.bytes": 84, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:16.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:16.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 38014, + "log.original": "Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24236,1,30221,53,63701,53,0x400019,udp,allow,200,84,116,2,2018/11/30 16:09:16,0,any,0,32091194,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 200, + "network.community_id": [ + "1:UKGEn5x2xKPJhb0aLNUd3IM2xP0=", + "1:rh7nCIUBzUAekx4F+OTwBbpRh+E=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24236", + "palo_alto.pan_os.network.nat.community_id": "1:rh7nCIUBzUAekx4F+OTwBbpRh+E=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091194, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 63701, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 116, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 116, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 30221, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:49.000Z", + "client.bytes": 64, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 30570, + "destination.address": "8.8.8.8", + "destination.bytes": 64, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:16.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:16.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 38463, + "log.original": "Nov 30 16:09:49 PA-220 1,2018/11/30 16:09:49,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:49,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:49,24276,1,30570,53,57872,53,0x400019,udp,allow,160,64,96,2,2018/11/30 16:09:16,0,any,0,32091195,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 160, + "network.community_id": [ + "1:7WDGZhY7X3GTZLGCIDWzxK5juF4=", + "1:eIIc+AXkJtZLyfNqUAVZLumaYVQ=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24276", + "palo_alto.pan_os.network.nat.community_id": "1:eIIc+AXkJtZLyfNqUAVZLumaYVQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091195, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 57872, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 96, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 96, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 30570, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 1100, + "client.ip": "192.168.15.224", + "client.packets": 7, + "client.port": 52497, + "destination.address": "50.19.85.24", + "destination.bytes": 1100, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "50.19.85.24", + "destination.packets": 8, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 11000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 38911, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,50.19.85.24,192.168.1.63,50.19.85.24,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24299,1,52497,443,37581,443,0x40001c,tcp,allow,1754,1100,654,15,2018/11/30 16:09:21,11,business-and-economy,0,32091196,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 1754, + "network.community_id": [ + "1:wOhR5YstpLgnt5WE19sGYKCmyZU=", + "1:Mn7w9ScywW3qjDMNsO8QsGj6BY0=" + ], + "network.direction": "outbound", + "network.packets": 15, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "50.19.85.24", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24299", + "palo_alto.pan_os.network.nat.community_id": "1:Mn7w9ScywW3qjDMNsO8QsGj6BY0=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091196, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 37581, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "50.19.85.24", + "192.168.1.63", + "50.19.85.24" + ], + "server.bytes": 654, + "server.ip": "50.19.85.24", + "server.packets": 8, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 654, + "source.ip": "192.168.15.224", + "source.packets": 7, + "source.port": 52497, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 1100, + "client.ip": "192.168.15.224", + "client.packets": 7, + "client.port": 52498, + "destination.address": "50.19.85.24", + "destination.bytes": 1100, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "50.19.85.24", + "destination.packets": 8, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 11000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 39403, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,50.19.85.24,192.168.1.63,50.19.85.24,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24229,1,52498,443,19226,443,0x40001c,tcp,allow,1754,1100,654,15,2018/11/30 16:09:21,11,business-and-economy,0,32091197,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 1754, + "network.community_id": [ + "1:6h8eY2s13iXP9cVx+C3Odlnn4+A=", + "1:8oAG19bm5FROhazDy0CcTH+Cfqc=" + ], + "network.direction": "outbound", + "network.packets": 15, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "50.19.85.24", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24229", + "palo_alto.pan_os.network.nat.community_id": "1:8oAG19bm5FROhazDy0CcTH+Cfqc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091197, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 19226, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "50.19.85.24", + "192.168.1.63", + "50.19.85.24" + ], + "server.bytes": 654, + "server.ip": "50.19.85.24", + "server.packets": 8, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 654, + "source.ip": "192.168.15.224", + "source.packets": 7, + "source.port": 52498, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 1100, + "client.ip": "192.168.15.224", + "client.packets": 7, + "client.port": 52496, + "destination.address": "50.19.85.24", + "destination.bytes": 1100, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "50.19.85.24", + "destination.packets": 8, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 11000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 39895, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,50.19.85.24,192.168.1.63,50.19.85.24,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24283,1,52496,443,61721,443,0x40001c,tcp,allow,1754,1100,654,15,2018/11/30 16:09:21,11,business-and-economy,0,32091198,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 1754, + "network.community_id": [ + "1:/ZL4TDk4BgzLIyz/Xp1oJ9ew5cE=", + "1:ZhVElLU1QcpGayhElc2L/+Rp+xw=" + ], + "network.direction": "outbound", + "network.packets": 15, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "50.19.85.24", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24283", + "palo_alto.pan_os.network.nat.community_id": "1:ZhVElLU1QcpGayhElc2L/+Rp+xw=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091198, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 61721, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "50.19.85.24", + "192.168.1.63", + "50.19.85.24" + ], + "server.bytes": 654, + "server.ip": "50.19.85.24", + "server.packets": 8, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 654, + "source.ip": "192.168.15.224", + "source.packets": 7, + "source.port": 52496, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 2691, + "client.ip": "192.168.15.224", + "client.packets": 10, + "client.port": 52510, + "destination.address": "104.254.150.9", + "destination.bytes": 2691, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "104.254.150.9", + "destination.packets": 12, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 11000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 40387, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,104.254.150.9,192.168.1.63,104.254.150.9,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24369,1,52510,443,10098,443,0x40001a,tcp,allow,10511,2691,7820,22,2018/11/30 16:09:21,11,web-advertisements,0,32091199,0x0,192.168.0.0-192.168.255.255,United States,0,12,10,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 10511, + "network.community_id": [ + "1:xYiSF9gJFyCzwbXQPyFt8YU2J78=", + "1:aHhDlT3Bx285CJRrBykpRsei1a0=" + ], + "network.direction": "outbound", + "network.packets": 22, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "104.254.150.9", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24369", + "palo_alto.pan_os.network.nat.community_id": "1:aHhDlT3Bx285CJRrBykpRsei1a0=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091199, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 10098, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "web-advertisements", + "related.ip": [ + "192.168.15.224", + "104.254.150.9", + "192.168.1.63", + "104.254.150.9" + ], + "server.bytes": 7820, + "server.ip": "104.254.150.9", + "server.packets": 12, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 7820, + "source.ip": "192.168.15.224", + "source.packets": 10, + "source.port": 52510, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 1100, + "client.ip": "192.168.15.224", + "client.packets": 7, + "client.port": 52495, + "destination.address": "50.19.85.24", + "destination.bytes": 1100, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "50.19.85.24", + "destination.packets": 8, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 11000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:21.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 40885, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,50.19.85.24,192.168.1.63,50.19.85.24,new_outbound_from_trust,,,ssl,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24354,1,52495,443,4564,443,0x40001c,tcp,allow,1754,1100,654,15,2018/11/30 16:09:21,11,business-and-economy,0,32091200,0x0,192.168.0.0-192.168.255.255,United States,0,8,7,tcp-rst-from-client,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ssl", + "network.bytes": 1754, + "network.community_id": [ + "1:QTH4ra5ZOxMb5v4tYy8DkqQsSus=", + "1:RLfRarGPGl+PnGhB8fb+S+uTX1o=" + ], + "network.direction": "outbound", + "network.packets": 15, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "50.19.85.24", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24354", + "palo_alto.pan_os.network.nat.community_id": "1:RLfRarGPGl+PnGhB8fb+S+uTX1o=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091200, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 4564, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "business-and-economy", + "related.ip": [ + "192.168.15.224", + "50.19.85.24", + "192.168.1.63", + "50.19.85.24" + ], + "server.bytes": 654, + "server.ip": "50.19.85.24", + "server.packets": 8, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 654, + "source.ip": "192.168.15.224", + "source.packets": 7, + "source.port": 52495, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 276, + "client.ip": "192.168.15.224", + "client.packets": 3, + "client.port": 52486, + "destination.address": "52.0.218.108", + "destination.bytes": 276, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.0.218.108", + "destination.packets": 4, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 12000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 41376, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,52.0.218.108,192.168.1.63,52.0.218.108,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24254,1,52486,443,32104,443,0x40001c,tcp,allow,490,276,214,7,2018/11/30 16:09:20,12,any,0,32091201,0x0,192.168.0.0-192.168.255.255,United States,0,4,3,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "incomplete", + "network.bytes": 490, + "network.community_id": [ + "1:pRGS72RJ+/RdCMjmtcrBxdR6i9w=", + "1:/0iCZCsnpk+5MR4Tc26unyr/T4Q=" + ], + "network.direction": "outbound", + "network.packets": 7, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.0.218.108", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24254", + "palo_alto.pan_os.network.nat.community_id": "1:/0iCZCsnpk+5MR4Tc26unyr/T4Q=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091201, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 32104, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "52.0.218.108", + "192.168.1.63", + "52.0.218.108" + ], + "server.bytes": 214, + "server.ip": "52.0.218.108", + "server.packets": 4, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 214, + "source.ip": "192.168.15.224", + "source.packets": 3, + "source.port": 52486, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 276, + "client.ip": "192.168.15.224", + "client.packets": 3, + "client.port": 52489, + "destination.address": "52.6.117.19", + "destination.bytes": 276, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "52.6.117.19", + "destination.packets": 4, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 12000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 41845, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,52.6.117.19,192.168.1.63,52.6.117.19,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24246,1,52489,443,14172,443,0x40001c,tcp,allow,490,276,214,7,2018/11/30 16:09:20,12,any,0,32091202,0x0,192.168.0.0-192.168.255.255,United States,0,4,3,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "incomplete", + "network.bytes": 490, + "network.community_id": [ + "1:zaENYnP2VlZewYNuHhpqTvNAf4Y=", + "1:486dmnLzuTH8P7j6jI6JsUtW2VU=" + ], + "network.direction": "outbound", + "network.packets": 7, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "52.6.117.19", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24246", + "palo_alto.pan_os.network.nat.community_id": "1:486dmnLzuTH8P7j6jI6JsUtW2VU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091202, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 14172, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "52.6.117.19", + "192.168.1.63", + "52.6.117.19" + ], + "server.bytes": 214, + "server.ip": "52.6.117.19", + "server.packets": 4, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 214, + "source.ip": "192.168.15.224", + "source.packets": 3, + "source.port": 52489, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 276, + "client.ip": "192.168.15.224", + "client.packets": 3, + "client.port": 52490, + "destination.address": "34.238.96.22", + "destination.bytes": 276, + "destination.geo.city_name": "Ashburn", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 39.0481, + "destination.geo.location.lon": -77.4728, + "destination.geo.region_iso_code": "US-VA", + "destination.geo.region_name": "Virginia", + "destination.ip": "34.238.96.22", + "destination.packets": 4, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 12000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 42312, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,34.238.96.22,192.168.1.63,34.238.96.22,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24343,1,52490,443,10286,443,0x40001c,tcp,allow,490,276,214,7,2018/11/30 16:09:20,12,any,0,32091203,0x0,192.168.0.0-192.168.255.255,United States,0,4,3,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "incomplete", + "network.bytes": 490, + "network.community_id": [ + "1:FdupsUbF1ju1djczW9JAKlxKNC4=", + "1:6LTK93w8ZdfxzSfZXzebKR6jWxo=" + ], + "network.direction": "outbound", + "network.packets": 7, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "34.238.96.22", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24343", + "palo_alto.pan_os.network.nat.community_id": "1:6LTK93w8ZdfxzSfZXzebKR6jWxo=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091203, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 10286, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "34.238.96.22", + "192.168.1.63", + "34.238.96.22" + ], + "server.bytes": 214, + "server.ip": "34.238.96.22", + "server.packets": 4, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 214, + "source.ip": "192.168.15.224", + "source.packets": 3, + "source.port": 52490, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:50.000Z", + "client.bytes": 276, + "client.ip": "192.168.15.224", + "client.packets": 4, + "client.port": 52493, + "destination.address": "130.211.47.17", + "destination.bytes": 276, + "destination.geo.city_name": "Mountain View", + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.419200000000004, + "destination.geo.location.lon": -122.0574, + "destination.geo.region_iso_code": "US-CA", + "destination.geo.region_name": "California", + "destination.ip": "130.211.47.17", + "destination.packets": 4, + "destination.port": 443, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 12000000000, + "event.end": "2018-11-30T16:09:32.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:20.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 42781, + "log.original": "Nov 30 16:09:50 PA-220 1,2018/11/30 16:09:50,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:50,192.168.15.224,130.211.47.17,192.168.1.63,130.211.47.17,new_outbound_from_trust,,,incomplete,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:50,24262,1,52493,443,30799,443,0x40001c,tcp,allow,556,276,280,8,2018/11/30 16:09:20,12,any,0,32091204,0x0,192.168.0.0-192.168.255.255,United States,0,4,4,tcp-fin,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "incomplete", + "network.bytes": 556, + "network.community_id": [ + "1:fHitWYVd9RNFs7M5hQrqw/dmY8Y=", + "1:roV5JFl0FdQHIRUkgeZm+ZeyeCQ=" + ], + "network.direction": "outbound", + "network.packets": 8, + "network.transport": "tcp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "130.211.47.17", + "palo_alto.pan_os.destination.nat.port": 443, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24262", + "palo_alto.pan_os.network.nat.community_id": "1:roV5JFl0FdQHIRUkgeZm+ZeyeCQ=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091204, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 30799, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "130.211.47.17", + "192.168.1.63", + "130.211.47.17" + ], + "server.bytes": 280, + "server.ip": "130.211.47.17", + "server.packets": 4, + "server.port": 443, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 280, + "source.ip": "192.168.15.224", + "source.packets": 4, + "source.port": 52493, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:51.000Z", + "client.bytes": 97, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 59320, + "destination.address": "8.8.8.8", + "destination.bytes": 97, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:18.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:18.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 43252, + "log.original": "Nov 30 16:09:51 PA-220 1,2018/11/30 16:09:51,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:51,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:51,24281,1,59320,53,13490,53,0x400019,udp,allow,269,97,172,2,2018/11/30 16:09:18,0,any,0,32091205,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 269, + "network.community_id": [ + "1:n/IZF37E/7cErtK4po3ewuEQScY=", + "1:5G+JVi/ClM/MfHhUL//vH/GmuaA=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24281", + "palo_alto.pan_os.network.nat.community_id": "1:5G+JVi/ClM/MfHhUL//vH/GmuaA=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091205, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 13490, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 172, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 172, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 59320, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:52.000Z", + "client.bytes": 588, + "client.ip": "192.168.15.224", + "client.packets": 6, + "client.port": 0, + "destination.address": "8.8.8.8", + "destination.bytes": 588, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 6, + "destination.port": 0, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:37.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:37.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 43701, + "log.original": "Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,ping,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24424,6,0,0,0,0,0x500019,icmp,allow,1176,588,588,12,2018/11/30 16:09:37,0,any,0,32091206,0x0,192.168.0.0-192.168.255.255,United States,0,6,6,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "ping", + "network.bytes": 1176, + "network.community_id": [ + "1:iNhLzwoKKarTKCq59Sts/hhZN7Q=", + "1:QVXHpdoObbzEeqP6DGULYxqYgAY=" + ], + "network.direction": "outbound", + "network.packets": 12, + "network.transport": "icmp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 0, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24424", + "palo_alto.pan_os.network.nat.community_id": "1:QVXHpdoObbzEeqP6DGULYxqYgAY=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091206, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 0, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 588, + "server.ip": "8.8.8.8", + "server.packets": 6, + "server.port": 0, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 588, + "source.ip": "192.168.15.224", + "source.packets": 6, + "source.port": 0, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:52.000Z", + "client.bytes": 78, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 13076, + "destination.address": "8.8.8.8", + "destination.bytes": 78, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:19.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 44145, + "log.original": "Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24230,1,13076,53,53751,53,0x400019,udp,allow,172,78,94,2,2018/11/30 16:09:19,0,any,0,32091207,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 172, + "network.community_id": [ + "1:jKueIOIhkRRjHQyRO93QyuKEiP8=", + "1:mdksC4jGw6MN7g3nGdquiqQ95vU=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24230", + "palo_alto.pan_os.network.nat.community_id": "1:mdksC4jGw6MN7g3nGdquiqQ95vU=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091207, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 53751, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 94, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 94, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 13076, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:52.000Z", + "client.bytes": 72, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 5511, + "destination.address": "8.8.8.8", + "destination.bytes": 72, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:19.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 44593, + "log.original": "Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24243,1,5511,53,21643,53,0x400019,udp,allow,242,72,170,2,2018/11/30 16:09:19,0,any,0,32091208,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 242, + "network.community_id": [ + "1:mci4o+GZJDLvZr11UdJH9bepPqU=", + "1:+zC2Y+UE7UqApr01oqb755Xyuf4=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24243", + "palo_alto.pan_os.network.nat.community_id": "1:+zC2Y+UE7UqApr01oqb755Xyuf4=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091208, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 21643, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 170, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 170, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 5511, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:52.000Z", + "client.bytes": 78, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 9799, + "destination.address": "8.8.8.8", + "destination.bytes": 78, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:19.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 45041, + "log.original": "Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24077,1,9799,53,22446,53,0x400019,udp,allow,172,78,94,2,2018/11/30 16:09:19,0,any,0,32091209,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 172, + "network.community_id": [ + "1:Px8uRfOgVDuaWj/VKxjTwyAzHAM=", + "1:xawqUBgLyfe1E61ObEXv4nbO590=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24077", + "palo_alto.pan_os.network.nat.community_id": "1:xawqUBgLyfe1E61ObEXv4nbO590=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091209, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 22446, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 94, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 94, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 9799, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:52.000Z", + "client.bytes": 78, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 39169, + "destination.address": "8.8.8.8", + "destination.bytes": 78, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:19.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 45488, + "log.original": "Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24266,1,39169,53,22301,53,0x400019,udp,allow,172,78,94,2,2018/11/30 16:09:19,0,any,0,32091210,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 172, + "network.community_id": [ + "1:6tSek5GUc9k56LSY4NgTMd0igd8=", + "1:PDWWOeDVqKGZ/hwjVVdCDdF6qB4=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24266", + "palo_alto.pan_os.network.nat.community_id": "1:PDWWOeDVqKGZ/hwjVVdCDdF6qB4=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091210, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 22301, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 94, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 94, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 39169, + "tags": [ + "pan-os" + ] + }, + { + "@timestamp": "2018-11-30T16:09:52.000Z", + "client.bytes": 72, + "client.ip": "192.168.15.224", + "client.packets": 1, + "client.port": 42476, + "destination.address": "8.8.8.8", + "destination.bytes": 72, + "destination.geo.continent_name": "North America", + "destination.geo.country_iso_code": "US", + "destination.geo.location.lat": 37.751, + "destination.geo.location.lon": -97.822, + "destination.ip": "8.8.8.8", + "destination.packets": 1, + "destination.port": 53, + "ecs.version": "1.0.0", + "event.action": "flow_terminated", + "event.category": "network_traffic", + "event.dataset": "palo_alto.pan_os", + "event.duration": 0, + "event.end": "2018-11-30T16:09:19.000Z", + "event.module": "palo_alto", + "event.outcome": "allow", + "event.start": "2018-11-30T16:09:19.000Z", + "fileset.name": "pan_os", + "input.type": "log", + "labels.nat_translated": true, + "log.offset": 45936, + "log.original": "Nov 30 16:09:52 PA-220 1,2018/11/30 16:09:52,012801096514,TRAFFIC,end,2049,2018/11/30 16:09:52,192.168.15.224,8.8.8.8,192.168.1.63,8.8.8.8,new_outbound_from_trust,,,dns,vsys1,trust,untrust,ethernet1/2,ethernet1/1,send_to_mac,2018/11/30 16:09:52,24269,1,42476,53,58124,53,0x400019,udp,allow,238,72,166,2,2018/11/30 16:09:19,0,any,0,32091211,0x0,192.168.0.0-192.168.255.255,United States,0,1,1,aged-out,0,0,0,0,,PA-220,from-policy,,,0,,0,,N/A,0,0,0,0", + "network.application": "dns", + "network.bytes": 238, + "network.community_id": [ + "1:xl0u/+SYGciPtyPuv813G1aTEdI=", + "1:yNIHAg1M08IChho9000mtg7zUOc=" + ], + "network.direction": "outbound", + "network.packets": 2, + "network.transport": "udp", + "observer.hostname": "PA-220", + "observer.serial_number": "012801096514", + "palo_alto.pan_os.destination.interface": "ethernet1/1", + "palo_alto.pan_os.destination.nat.ip": "8.8.8.8", + "palo_alto.pan_os.destination.nat.port": 53, + "palo_alto.pan_os.destination.zone": "untrust", + "palo_alto.pan_os.flow_id": "24269", + "palo_alto.pan_os.network.nat.community_id": "1:yNIHAg1M08IChho9000mtg7zUOc=", + "palo_alto.pan_os.ruleset": "new_outbound_from_trust", + "palo_alto.pan_os.sequence_number": 32091211, + "palo_alto.pan_os.source.interface": "ethernet1/2", + "palo_alto.pan_os.source.nat.ip": "192.168.1.63", + "palo_alto.pan_os.source.nat.port": 58124, + "palo_alto.pan_os.source.zone": "trust", + "palo_alto.pan_os.url.category": "any", + "related.ip": [ + "192.168.15.224", + "8.8.8.8", + "192.168.1.63", + "8.8.8.8" + ], + "server.bytes": 166, + "server.ip": "8.8.8.8", + "server.packets": 1, + "server.port": 53, + "service.type": "palo_alto", + "source.address": "192.168.15.224", + "source.bytes": 166, + "source.ip": "192.168.15.224", + "source.packets": 1, + "source.port": 42476, + "tags": [ + "pan-os" + ] + } +] \ No newline at end of file From d5b6a2baf4fb1634cb9ea0d980af7db7809ffd37 Mon Sep 17 00:00:00 2001 From: Silvia Mitter Date: Sat, 11 May 2019 11:40:57 +0200 Subject: [PATCH 41/59] [cmd setup] Add and deprecate setup cmds for index handling (#12132) Deprecate `setup --template` and `setup --ilm` in favour of newly introduced `setup --index-management` command. Fix bug in template and write alias creation order to ensure creating properly managed indices. implements #12095 Co-authored-by: steffen.siering@elastic.co --- CHANGELOG-developer.next.asciidoc | 3 +- libbeat/cmd/instance/beat.go | 51 ++-- libbeat/cmd/setup.go | 29 ++- libbeat/idxmgmt/componenttype_string.go | 41 +++ libbeat/idxmgmt/idxmgmt.go | 6 +- libbeat/idxmgmt/std.go | 160 ++++++++---- .../idxmgmt/{idxmgmt_test.go => std_test.go} | 186 ++++++++++---- libbeat/tests/system/idxmgmt.py | 17 +- .../system/test_cmd_setup_index_management.py | 236 ++++++++++++++++++ libbeat/tests/system/test_ilm.py | 58 ++++- libbeat/tests/system/test_template.py | 75 ++++-- 11 files changed, 689 insertions(+), 173 deletions(-) create mode 100644 libbeat/idxmgmt/componenttype_string.go rename libbeat/idxmgmt/{idxmgmt_test.go => std_test.go} (69%) create mode 100644 libbeat/tests/system/test_cmd_setup_index_management.py diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index d4bbd0d5eaea..f8a465a02e26 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -38,4 +38,5 @@ The list below covers the major changes between 7.0.0-rc2 and master only. - Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777], {pull}12065[12065], {pull}12067[12067] - Update urllib3 version to 1.24.2 {pull}11930[11930] - Add libbeat/common/cleanup package. {pull}12134[12134] -- Only Load minimal template if no fields are provided. {pull}12103[12103] \ No newline at end of file +- Only Load minimal template if no fields are provided. {pull}12103[12103] +- Deprecate setup cmds for `template` and `ilm-policy`. Add new setup cmd for `index-management`. {pull}12132[12132] \ No newline at end of file diff --git a/libbeat/cmd/instance/beat.go b/libbeat/cmd/instance/beat.go index 78ea2ab62faa..77436a6cfc9e 100644 --- a/libbeat/cmd/instance/beat.go +++ b/libbeat/cmd/instance/beat.go @@ -447,11 +447,14 @@ func (b *Beat) TestConfig(settings Settings, bt beat.Creator) error { //SetupSettings holds settings necessary for beat setup type SetupSettings struct { - Template bool Dashboard bool MachineLearning bool Pipeline bool - ILMPolicy bool + IndexManagement bool + //Deprecated: use IndexManagementKey instead + Template bool + //Deprecated: use IndexManagementKey instead + ILMPolicy bool } // Setup registers ES index template, kibana dashboards, ml jobs and pipelines. @@ -471,37 +474,31 @@ func (b *Beat) Setup(settings Settings, bt beat.Creator, setup SetupSettings) er return err } - if setup.Template || setup.ILMPolicy { + if setup.IndexManagement || setup.Template || setup.ILMPolicy { outCfg := b.Config.Output - if outCfg.Name() != "elasticsearch" { return fmt.Errorf("Index management requested but the Elasticsearch output is not configured/enabled") } + esClient, err := elasticsearch.NewConnectedClient(outCfg.Config()) + if err != nil { + return err + } - esConfig := outCfg.Config() - if b.IdxSupporter.Enabled() { - esClient, err := elasticsearch.NewConnectedClient(esConfig) - if err != nil { - return err - } - - // prepare index by loading templates, lifecycle policies and write aliases - - m := b.IdxSupporter.Manager(idxmgmt.NewESClientHandler(esClient), idxmgmt.BeatsAssets(b.Fields)) - var tmplLoadMode, ilmLoadMode = idxmgmt.LoadModeUnset, idxmgmt.LoadModeUnset - if setup.Template { - tmplLoadMode = idxmgmt.LoadModeOverwrite - } - if setup.ILMPolicy { - ilmLoadMode = idxmgmt.LoadModeOverwrite - } - - err = m.Setup(tmplLoadMode, ilmLoadMode) - if err != nil { - return err - } + var loadTemplate, loadILM = idxmgmt.LoadModeUnset, idxmgmt.LoadModeUnset + if setup.IndexManagement || setup.Template { + loadTemplate = idxmgmt.LoadModeOverwrite + } + if setup.IndexManagement || setup.ILMPolicy { + loadILM = idxmgmt.LoadModeOverwrite + } + m := b.IdxSupporter.Manager(idxmgmt.NewESClientHandler(esClient), idxmgmt.BeatsAssets(b.Fields)) + if ok, warn := m.VerifySetup(loadTemplate, loadILM); !ok { + fmt.Println(warn) + } + if err = m.Setup(loadTemplate, loadILM); err != nil { + return err } - fmt.Println("Index setup complete.") + fmt.Println("Index setup finished.") } if setup.Dashboard { diff --git a/libbeat/cmd/setup.go b/libbeat/cmd/setup.go index eeed4389e8f1..f3ed31b7afbe 100644 --- a/libbeat/cmd/setup.go +++ b/libbeat/cmd/setup.go @@ -28,15 +28,23 @@ import ( ) const ( - //TemplateKey used for defining template in setup cmd - TemplateKey = "template" //DashboardKey used for registering dashboards in setup cmd DashboardKey = "dashboards" //MachineLearningKey used for registering ml jobs in setup cmd MachineLearningKey = "machine-learning" //PipelineKey used for registering pipelines in setup cmd PipelineKey = "pipelines" - //ILMPolicyKey used for registering ilm in setup cmd + //IndexManagementKey used for loading all components related to ES index management in setup cmd + IndexManagementKey = "index-management" + + //TemplateKey used for loading template in setup cmd + // + //Deprecated: use IndexManagementKey instead + TemplateKey = "template" + + //ILMPolicyKey used for loading ilm in setup cmd + // + //Deprecated: use IndexManagementKey instead ILMPolicyKey = "ilm-policy" ) @@ -60,10 +68,11 @@ func genSetupCmd(settings instance.Settings, beatCreator beat.Creator) *cobra.Co } var registeredFlags = map[string]bool{ - TemplateKey: false, DashboardKey: false, MachineLearningKey: false, PipelineKey: false, + IndexManagementKey: false, + TemplateKey: false, ILMPolicyKey: false, } var setupAll = true @@ -89,16 +98,18 @@ func genSetupCmd(settings instance.Settings, beatCreator beat.Creator) *cobra.Co for k, v := range registeredFlags { if setupAll || v { switch k { - case TemplateKey: - s.Template = true case DashboardKey: s.Dashboard = true case MachineLearningKey: s.MachineLearning = true case PipelineKey: s.Pipeline = true + case IndexManagementKey: + s.IndexManagement = true case ILMPolicyKey: s.ILMPolicy = true + case TemplateKey: + s.Template = true } } } @@ -109,11 +120,15 @@ func genSetupCmd(settings instance.Settings, beatCreator beat.Creator) *cobra.Co }, } - setup.Flags().Bool(TemplateKey, false, "Setup index template") setup.Flags().Bool(DashboardKey, false, "Setup dashboards") setup.Flags().Bool(MachineLearningKey, false, "Setup machine learning job configurations") setup.Flags().Bool(PipelineKey, false, "Setup Ingest pipelines") + setup.Flags().Bool(IndexManagementKey, false, + "Setup all components related to Elasticsearch index management, including template, ilm policy and rollover alias") + setup.Flags().Bool(TemplateKey, false, "Setup index template") + setup.Flags().MarkDeprecated(TemplateKey, fmt.Sprintf("please use --%s instead", IndexManagementKey)) setup.Flags().Bool(ILMPolicyKey, false, "Setup ILM policy") + setup.Flags().MarkDeprecated(ILMPolicyKey, fmt.Sprintf("please use --%s instead", IndexManagementKey)) return &setup } diff --git a/libbeat/idxmgmt/componenttype_string.go b/libbeat/idxmgmt/componenttype_string.go new file mode 100644 index 000000000000..5718922aac9f --- /dev/null +++ b/libbeat/idxmgmt/componenttype_string.go @@ -0,0 +1,41 @@ +// 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 -linecomment -type componentType"; DO NOT EDIT. + +package idxmgmt + +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[componentTemplate-0] + _ = x[componentILM-1] +} + +const _componentType_name = "templateilm" + +var _componentType_index = [...]uint8{0, 8, 11} + +func (i componentType) String() string { + if i >= componentType(len(_componentType_index)-1) { + return "componentType(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _componentType_name[_componentType_index[i]:_componentType_index[i+1]] +} diff --git a/libbeat/idxmgmt/idxmgmt.go b/libbeat/idxmgmt/idxmgmt.go index 6ec75b033efb..6837af03d13d 100644 --- a/libbeat/idxmgmt/idxmgmt.go +++ b/libbeat/idxmgmt/idxmgmt.go @@ -39,8 +39,7 @@ type SupportFactory func(*logp.Logger, beat.Info, *common.Config) (Supporter, er // A manager instantiated via Supporter is responsible for instantiating/configuring // the index throughout the Elastic Stack. type Supporter interface { - // Enalbed checks if index management is configured to configure templates, - // ILM, or aliases. + // Enabled checks if index management is configured to setup templates or ILM Enabled() bool // BuildSelector create an index selector. @@ -62,6 +61,9 @@ type Asseter interface { // Manager is used to initialize indices, ILM policies, and aliases within the // Elastic Stack. type Manager interface { + VerifySetup(template, ilm LoadMode) (bool, string) + // When supporting index lifecycle management, ensure templates and policies + // are created before write aliases, to ensure templates are applied to the indices. Setup(template, ilm LoadMode) error } diff --git a/libbeat/idxmgmt/std.go b/libbeat/idxmgmt/std.go index ea655bb71a8f..13d1a201fcf4 100644 --- a/libbeat/idxmgmt/std.go +++ b/libbeat/idxmgmt/std.go @@ -62,6 +62,33 @@ type ilmIndexSelector struct { st *indexState } +type componentType uint8 + +//go:generate stringer -linecomment -type componentType +const ( + componentTemplate componentType = iota //template + componentILM //ilm +) + +type feature struct { + component componentType + enabled, overwrite, load bool +} + +func newFeature(c componentType, enabled, overwrite bool, mode LoadMode) feature { + if mode == LoadModeUnset && !enabled { + mode = LoadModeDisabled + } + if mode >= LoadModeOverwrite { + overwrite = true + } + if mode == LoadModeForce { + enabled = true + } + load := mode.Enabled() && enabled + return feature{component: c, enabled: enabled, overwrite: overwrite, load: load} +} + func newIndexSupport( log *logp.Logger, info beat.Info, @@ -74,7 +101,7 @@ func newIndexSupport( ilmFactory = ilm.DefaultSupport } - ilm, err := ilmFactory(log, info, ilmConfig) + ilmSupporter, err := ilmFactory(log, info, ilmConfig) if err != nil { return nil, err } @@ -86,7 +113,7 @@ func newIndexSupport( return &indexSupport{ log: log, - ilm: ilm, + ilm: ilmSupporter, info: info, templateCfg: tmplCfg, migration: migration, @@ -95,17 +122,26 @@ func newIndexSupport( } func (s *indexSupport) Enabled() bool { - return s.templateCfg.Enabled || (s.ilm.Mode() != ilm.ModeDisabled) + return s.enabled(componentTemplate) || s.enabled(componentILM) +} + +func (s *indexSupport) enabled(c componentType) bool { + switch c { + case componentTemplate: + return s.templateCfg.Enabled + case componentILM: + return s.ilm.Mode() != ilm.ModeDisabled + } + return false } func (s *indexSupport) Manager( clientHandler ClientHandler, assets Asseter, ) Manager { - ilm := s.ilm.Manager(clientHandler) return &indexManager{ support: s, - ilm: ilm, + ilm: s.ilm.Manager(clientHandler), clientHandler: clientHandler, assets: assets, } @@ -177,71 +213,73 @@ func (s *indexSupport) BuildSelector(cfg *common.Config) (outputs.IndexSelector, }, nil } +func (m *indexManager) VerifySetup(loadTemplate, loadILM LoadMode) (bool, string) { + ilmComponent := newFeature(componentILM, m.support.enabled(componentILM), false, loadILM) + + templateComponent := newFeature(componentTemplate, m.support.enabled(componentTemplate), + m.support.templateCfg.Overwrite, loadTemplate) + + if ilmComponent.load && !templateComponent.load { + return false, "Loading ILM policy and write alias without loading template " + + "is not recommended. Check your configuration." + } + + if templateComponent.load && !ilmComponent.load && ilmComponent.enabled { + return false, "Loading template with ILM settings whithout loading ILM " + + "policy and alias can lead to issues and is not recommended. " + + "Check your configuration." + } + + var warn string + if !ilmComponent.load { + warn += "ILM policy and write alias loading not enabled. " + } + if !templateComponent.load { + warn += "Template loading not enabled." + } + return warn == "", warn +} + +// func (m *indexManager) Setup(loadTemplate, loadILM LoadMode) error { - var err error log := m.support.log - withILM := m.support.st.withILM.Load() - if !withILM { - withILM, err = m.ilm.Enabled() - if err != nil { - return err - } + withILM, err := m.setupWithILM() + if err != nil { + return err } - if loadILM == LoadModeUnset { - if withILM { - loadILM = LoadModeEnabled - log.Info("Auto ILM enable success.") - } else { - loadILM = LoadModeDisabled - } + if withILM && loadILM.Enabled() { + log.Info("Auto ILM enable success.") } - if loadILM == LoadModeForce || withILM && loadILM.Enabled() { - // mark ILM as enabled in indexState if withILM is true - m.support.st.withILM.CAS(false, true) + ilmComponent := newFeature(componentILM, withILM, false, loadILM) + templateComponent := newFeature(componentTemplate, m.support.enabled(componentTemplate), + m.support.templateCfg.Overwrite, loadTemplate) + if ilmComponent.load { // install ilm policy - policyCreated, err := m.ilm.EnsurePolicy(loadILM >= LoadModeOverwrite) + policyCreated, err := m.ilm.EnsurePolicy(ilmComponent.overwrite) if err != nil { return err } log.Info("ILM policy successfully loaded.") // The template should be updated if a new policy is created. - if policyCreated && loadTemplate.Enabled() { - loadTemplate = LoadModeOverwrite - } - - // create alias - if err := m.ilm.EnsureAlias(); err != nil { - if ilm.ErrReason(err) != ilm.ErrAliasAlreadyExists { - return err - } - log.Info("Write alias exists already") - } else { - log.Info("Write alias successfully generated.") + if policyCreated && templateComponent.enabled { + templateComponent.overwrite = true } } - // create and install template - if loadTemplate == LoadModeForce || m.support.templateCfg.Enabled && loadTemplate.Enabled() { + if templateComponent.load { tmplCfg := m.support.templateCfg + tmplCfg.Overwrite, tmplCfg.Enabled = templateComponent.overwrite, templateComponent.enabled - if withILM { - ilm := m.support.ilm - tmplCfg, err = applyILMSettings(log, tmplCfg, ilm.Policy(), ilm.Alias()) + if ilmComponent.enabled { + tmplCfg, err = applyILMSettings(log, tmplCfg, m.support.ilm.Policy(), m.support.ilm.Alias()) if err != nil { return err } } - - if loadTemplate == LoadModeForce { - tmplCfg.Enabled = true - } - if loadTemplate >= LoadModeOverwrite { - tmplCfg.Overwrite = true - } fields := m.assets.Fields(m.support.info.Beat) err = m.clientHandler.Load(tmplCfg, m.support.info, fields, m.support.migration) if err != nil { @@ -251,9 +289,37 @@ func (m *indexManager) Setup(loadTemplate, loadILM LoadMode) error { log.Info("Loaded index template.") } + if ilmComponent.load { + // ensure alias is created after the template is created + if err := m.ilm.EnsureAlias(); err != nil { + if ilm.ErrReason(err) != ilm.ErrAliasAlreadyExists { + return err + } + log.Info("Write alias exists already") + } else { + log.Info("Write alias successfully generated.") + } + } + return nil } +func (m *indexManager) setupWithILM() (bool, error) { + var err error + withILM := m.support.st.withILM.Load() + if !withILM { + withILM, err = m.ilm.Enabled() + if err != nil { + return false, err + } + if withILM { + // mark ILM as enabled in indexState + m.support.st.withILM.CAS(false, true) + } + } + return withILM, nil +} + func (s *ilmIndexSelector) Select(evt *beat.Event) (string, error) { if idx := getEventCustomIndex(evt); idx != "" { return idx, nil diff --git a/libbeat/idxmgmt/idxmgmt_test.go b/libbeat/idxmgmt/std_test.go similarity index 69% rename from libbeat/idxmgmt/idxmgmt_test.go rename to libbeat/idxmgmt/std_test.go index 01705dfa7a12..9a0b58c266cb 100644 --- a/libbeat/idxmgmt/idxmgmt_test.go +++ b/libbeat/idxmgmt/std_test.go @@ -32,14 +32,32 @@ import ( "github.com/elastic/beats/libbeat/template" ) +type mockClientHandler struct { + alias, policy string + expectsPolicy bool + + tmplCfg *template.TemplateConfig + tmplForce bool + + operations []mockCreateOp +} + +type mockCreateOp uint8 + +const ( + mockCreatePolicy mockCreateOp = iota + mockCreateTemplate + mockCreateAlias +) + func TestDefaultSupport_Enabled(t *testing.T) { cases := map[string]struct { ilmCalls []onCall cfg map[string]interface{} - want bool + enabled bool }{ "templates and ilm disabled": { - want: false, + enabled: false, ilmCalls: []onCall{ onMode().Return(ilm.ModeDisabled), }, @@ -48,7 +66,7 @@ func TestDefaultSupport_Enabled(t *testing.T) { }, }, "templates only": { - want: true, + enabled: true, ilmCalls: []onCall{ onMode().Return(ilm.ModeDisabled), }, @@ -57,7 +75,7 @@ func TestDefaultSupport_Enabled(t *testing.T) { }, }, "ilm only": { - want: true, + enabled: true, ilmCalls: []onCall{ onMode().Return(ilm.ModeEnabled), }, @@ -66,7 +84,7 @@ func TestDefaultSupport_Enabled(t *testing.T) { }, }, "ilm tentatively": { - want: true, + enabled: true, ilmCalls: []onCall{ onMode().Return(ilm.ModeAuto), }, @@ -81,7 +99,7 @@ func TestDefaultSupport_Enabled(t *testing.T) { factory := MakeDefaultSupport(makeMockILMSupport(test.ilmCalls...)) im, err := factory(nil, info, common.MustNewConfigFrom(test.cfg)) require.NoError(t, err) - assert.Equal(t, test.want, im.Enabled()) + assert.Equal(t, test.enabled, im.Enabled()) }) } } @@ -197,7 +215,61 @@ func TestDefaultSupport_BuildSelector(t *testing.T) { } } -func TestDefaultSupport_TemplateHandling(t *testing.T) { +func TestIndexManager_VerifySetup(t *testing.T) { + for name, setup := range map[string]struct { + tmpl, ilm bool + loadTmpl, loadILM LoadMode + ok bool + warn string + }{ + "load template with ilm without loading ilm": { + ilm: true, tmpl: true, loadILM: LoadModeDisabled, + warn: "whithout loading ILM policy and alias", + }, + "load ilm without template": { + ilm: true, loadILM: LoadModeUnset, + warn: "without loading template is not recommended", + }, + "template disabled but loading enabled": { + loadTmpl: LoadModeEnabled, + warn: "loading not enabled", + }, + "ilm disabled but loading enabled": { + loadILM: LoadModeEnabled, tmpl: true, + warn: "loading not enabled", + }, + "ilm enabled but loading disabled": { + ilm: true, loadILM: LoadModeDisabled, + warn: "loading not enabled", + }, + "template enabled but loading disabled": { + tmpl: true, loadTmpl: LoadModeDisabled, + warn: "loading not enabled", + }, + "everything enabled": { + tmpl: true, loadTmpl: LoadModeUnset, ilm: true, loadILM: LoadModeUnset, + ok: true, + }, + } { + t.Run(name, func(t *testing.T) { + cfg, err := common.NewConfigFrom(common.MapStr{ + "setup.ilm.enabled": setup.ilm, + "setup.template.enabled": setup.tmpl, + }) + require.NoError(t, err) + support, err := MakeDefaultSupport(ilm.StdSupport)(nil, beat.Info{}, cfg) + require.NoError(t, err) + clientHandler := newMockClientHandler() + manager := support.Manager(clientHandler, nil) + ok, warn := manager.VerifySetup(setup.loadTmpl, setup.loadILM) + assert.Equal(t, setup.ok, ok) + assert.Contains(t, warn, setup.warn) + clientHandler.assertInvariants(t) + }) + } +} + +func TestIndexManager_Setup(t *testing.T) { cloneCfg := func(c template.TemplateConfig) template.TemplateConfig { if c.AppendFields != nil { tmp := make(mapping.Fields, len(c.AppendFields)) @@ -235,7 +307,7 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { tmplCfg *template.TemplateConfig alias, policy string }{ - "template default, ilm default": { + "template default ilm default": { tmplCfg: cfgWith(template.DefaultConfig(), map[string]interface{}{ "overwrite": "true", "name": "test-9.9.9", @@ -246,7 +318,7 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { alias: "test-9.9.9", policy: "test-9.9.9", }, - "template default, ilm default with alias and policy changed": { + "template default ilm default with alias and policy changed": { cfg: common.MapStr{ "setup.ilm.rollover_alias": "mocktest", "setup.ilm.policy_name": "policy-keep", @@ -261,14 +333,14 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { alias: "mocktest", policy: "policy-keep", }, - "template default, ilm disabled": { + "template default ilm disabled": { cfg: common.MapStr{ "setup.ilm.enabled": false, }, loadTemplate: LoadModeEnabled, tmplCfg: &defaultCfg, }, - "template default loadMode Overwrite, ilm disabled": { + "template default loadMode Overwrite ilm disabled": { cfg: common.MapStr{ "setup.ilm.enabled": false, }, @@ -277,7 +349,7 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { "overwrite": "true", }), }, - "template default loadMode Force, ilm disabled": { + "template default loadMode Force ilm disabled": { cfg: common.MapStr{ "setup.ilm.enabled": false, }, @@ -286,27 +358,27 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { "overwrite": "true", }), }, - "template loadMode disabled, ilm disabled": { + "template loadMode disabled ilm disabled": { cfg: common.MapStr{ "setup.ilm.enabled": false, }, loadTemplate: LoadModeDisabled, }, - "template disabled, ilm default": { + "template disabled ilm default": { cfg: common.MapStr{ "setup.template.enabled": false, }, alias: "test-9.9.9", policy: "test-9.9.9", }, - "template disabled, ilm disabled, loadMode Overwrite": { + "template disabled ilm disabled, loadMode Overwrite": { cfg: common.MapStr{ "setup.template.enabled": false, "setup.ilm.enabled": false, }, loadILM: LoadModeOverwrite, }, - "template disabled, ilm disabled, loadMode Force": { + "template disabled ilm disabled loadMode Force": { cfg: common.MapStr{ "setup.template.enabled": false, "setup.ilm.enabled": false, @@ -315,13 +387,13 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { alias: "test-9.9.9", policy: "test-9.9.9", }, - "template loadmode disabled, ilm loadMode enabled": { + "template loadmode disabled ilm loadMode enabled": { loadTemplate: LoadModeDisabled, loadILM: LoadModeEnabled, alias: "test-9.9.9", policy: "test-9.9.9", }, - "template default, ilm loadMode disabled": { + "template default ilm loadMode disabled": { loadILM: LoadModeDisabled, tmplCfg: cfgWith(template.DefaultConfig(), map[string]interface{}{ "name": "test-9.9.9", @@ -330,7 +402,7 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { "settings.index.lifecycle.rollover_alias": "test-9.9.9", }), }, - "template loadmode disabled, ilm loadmode disabled": { + "template loadmode disabled ilm loadmode disabled": { loadTemplate: LoadModeDisabled, loadILM: LoadModeDisabled, }, @@ -345,69 +417,77 @@ func TestDefaultSupport_TemplateHandling(t *testing.T) { clientHandler := newMockClientHandler() manager := im.Manager(clientHandler, BeatsAssets([]byte("testbeat fields"))) err = manager.Setup(test.loadTemplate, test.loadILM) + clientHandler.assertInvariants(t) if test.err { assert.Error(t, err) } else { require.NoError(t, err) if test.tmplCfg == nil { - assert.Nil(t, clientHandler.tl.tmplCfg) + assert.Nil(t, clientHandler.tmplCfg) + } else { - assert.Equal(t, test.tmplCfg, clientHandler.tl.tmplCfg) + assert.Equal(t, test.tmplCfg, clientHandler.tmplCfg) } - assert.Equal(t, test.alias, clientHandler.il.alias) - assert.Equal(t, test.policy, clientHandler.il.policy) + assert.Equal(t, test.alias, clientHandler.alias) + assert.Equal(t, test.policy, clientHandler.policy) } }) } } -func newMockClientHandler() *mockClientHandler { - tl := mockTemplateLoader{} - il := mockILMClientHandler{} - return &mockClientHandler{&il, &tl, &tl, &il} +func (op mockCreateOp) String() string { + names := []string{"create-policy", "create-template", "create-alias"} + if int(op) > len(names) { + return "unknown" + } + return names[op] } -type mockClientHandler struct { - ilm.ClientHandler - template.Loader - - tl *mockTemplateLoader - il *mockILMClientHandler +func newMockClientHandler() *mockClientHandler { + return &mockClientHandler{} } -type mockTemplateLoader struct { - tmplCfg *template.TemplateConfig - force bool +func (h *mockClientHandler) Load(config template.TemplateConfig, _ beat.Info, fields []byte, migration bool) error { + h.recordOp(mockCreateTemplate) + h.tmplForce = config.Overwrite + h.tmplCfg = &config + return nil } -func (l *mockTemplateLoader) Load(config template.TemplateConfig, _ beat.Info, fields []byte, migration bool) error { - l.force = config.Overwrite - l.tmplCfg = &config - return nil +func (h *mockClientHandler) CheckILMEnabled(m ilm.Mode) (bool, error) { + return m == ilm.ModeEnabled || m == ilm.ModeAuto, nil } -type mockILMClientHandler struct { - alias, policy string +func (h *mockClientHandler) HasAlias(name string) (bool, error) { + return h.alias == name, nil } -func (ch *mockILMClientHandler) CheckILMEnabled(m ilm.Mode) (bool, error) { - return m == ilm.ModeEnabled || m == ilm.ModeAuto, nil +func (h *mockClientHandler) CreateAlias(alias ilm.Alias) error { + h.recordOp(mockCreateAlias) + h.alias = alias.Name + return nil } -func (ch *mockILMClientHandler) HasAlias(name string) (bool, error) { - return ch.alias == name, nil +func (h *mockClientHandler) HasILMPolicy(name string) (bool, error) { + return h.policy == name, nil } -func (ch *mockILMClientHandler) CreateAlias(alias ilm.Alias) error { - ch.alias = alias.Name +func (h *mockClientHandler) CreateILMPolicy(policy ilm.Policy) error { + h.recordOp(mockCreatePolicy) + h.policy = policy.Name return nil } -func (ch *mockILMClientHandler) HasILMPolicy(name string) (bool, error) { - return ch.policy == name, nil +func (h *mockClientHandler) recordOp(op mockCreateOp) { + h.operations = append(h.operations, op) } -func (ch *mockILMClientHandler) CreateILMPolicy(policy ilm.Policy) error { - ch.policy = policy.Name - return nil +func (h *mockClientHandler) assertInvariants(t *testing.T) { + for i, op := range h.operations { + for _, older := range h.operations[:i] { + if older > op { + t.Errorf("Operation: '%v' has been executed before '%v'", older, op) + } + } + } } diff --git a/libbeat/tests/system/idxmgmt.py b/libbeat/tests/system/idxmgmt.py index caaa7d7d974f..836a6d117976 100644 --- a/libbeat/tests/system/idxmgmt.py +++ b/libbeat/tests/system/idxmgmt.py @@ -7,17 +7,20 @@ class IdxMgmt(object): def __init__(self, client, index): self._client = client - if index == "": - index == "mockbeat" - self._index = index + self._index = index if index != '' and index != '*' else 'mockbeat' def needs_init(self, s): return s == '' or s == '*' - def delete(self, index="", template="", policy=""): - self.delete_index_and_alias(index=index) - self.delete_template(template=template) - self.delete_policy(policy=policy) + def delete(self, indices=[]): + indices = list(filter(lambda x: x != '', indices)) + if not indices: + indices == [self._index] + for i in indices: + self.delete_index_and_alias(i) + self.delete_template(template=i) + for i in indices: + self.delete_policy(policy=i) def delete_index_and_alias(self, index=""): if self.needs_init(index): diff --git a/libbeat/tests/system/test_cmd_setup_index_management.py b/libbeat/tests/system/test_cmd_setup_index_management.py new file mode 100644 index 000000000000..8eab7ff3e0b2 --- /dev/null +++ b/libbeat/tests/system/test_cmd_setup_index_management.py @@ -0,0 +1,236 @@ +from base import BaseTest +from idxmgmt import IdxMgmt +import os +from nose.plugins.attrib import attr +import unittest +import logging +from nose.tools import raises +from elasticsearch import RequestError + +INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) + + +class TestCommandSetupIndexManagement(BaseTest): + """ + Test beat command `setup` related to ILM policy + """ + + def setUp(self): + super(TestCommandSetupIndexManagement, self).setUp() + + self.cmd = "--index-management" + # auto-derived default settings, if nothing else is set + self.index_name = self.alias_name = self.policy_name = self.beat_name + "-9.9.9" + + self.custom_alias = self.beat_name + "_foo" + self.custom_policy = self.beat_name + "_bar" + self.custom_template = self.beat_name + "_foobar" + + self.es = self.es_client() + self.idxmgmt = IdxMgmt(self.es, self.index_name) + self.idxmgmt.delete(indices=[self.custom_alias, self.index_name, self.custom_policy]) + + logging.getLogger("urllib3").setLevel(logging.WARNING) + logging.getLogger("elasticsearch").setLevel(logging.ERROR) + + def tearDown(self): + self.idxmgmt.delete(indices=[self.custom_alias, self.index_name, self.custom_policy]) + + def render_config(self, **kwargs): + self.render_config_template( + elasticsearch={"hosts": self.get_elasticsearch_url()}, + es_template_name=self.index_name, + **kwargs + ) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_default(self): + """ + Test setup --index-management with default config + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd]) + + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_index_template_index_pattern(self.index_name, [self.index_name + "-*"]) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name) + self.idxmgmt.assert_alias_created(self.alias_name) + self.idxmgmt.assert_policy_created(self.policy_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + @raises(RequestError) + def test_setup_default(self): + """ + Test setup --index-management with default config + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd]) + + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_index_template_index_pattern(self.index_name, [self.index_name + "-*"]) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name) + self.idxmgmt.assert_alias_created(self.alias_name) + self.idxmgmt.assert_policy_created(self.policy_name) + # try deleting policy needs to raise an error as it is in use + self.idxmgmt.delete_policy(self.policy_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_template_disabled(self): + """ + Test setup --index-management when ilm disabled + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd, + "-E", "setup.template.enabled=false"]) + + assert exit_code == 0 + self.idxmgmt.assert_index_template_not_loaded(self.index_name) + self.idxmgmt.assert_alias_created(self.index_name) + self.idxmgmt.assert_policy_created(self.index_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_ilm_disabled(self): + """ + Test setup --index-management when ilm disabled + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd, + "-E", "setup.ilm.enabled=false"]) + + assert exit_code == 0 + self.idxmgmt.assert_index_template_loaded(self.index_name) + self.idxmgmt.assert_alias_not_created(self.alias_name) + self.idxmgmt.assert_policy_not_created(self.policy_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_policy_name(self): + """ + Test setup --index-management when policy_name is configured + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd, + "-E", "setup.ilm.policy_name=" + self.custom_policy]) + + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.custom_policy, self.alias_name) + self.idxmgmt.assert_policy_created(self.custom_policy) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_rollover_alias(self): + """ + Test setup --index-management when ilm.rollover_alias is configured + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd, + "-E", "setup.ilm.rollover_alias=" + self.custom_alias]) + + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.custom_alias, self.policy_name, self.custom_alias) + self.idxmgmt.assert_index_template_index_pattern(self.custom_alias, [self.custom_alias + "-*"]) + self.idxmgmt.assert_docs_written_to_alias(self.custom_alias) + self.idxmgmt.assert_alias_created(self.custom_alias) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_template_name_and_pattern(self): + """ + Test setup --index-management ignores template.name and template.pattern when ilm is enabled + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd, + "-E", "setup.template.name=" + self.custom_template, + "-E", "setup.template.pattern=" + self.custom_template + "*"]) + + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_index_template_index_pattern(self.alias_name, [self.alias_name + "-*"]) + self.idxmgmt.assert_docs_written_to_alias(self.alias_name) + self.idxmgmt.assert_alias_created(self.alias_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_template_name_and_pattern_on_ilm_disabled(self): + """ + Test setup --index-management respects template.name and template.pattern when ilm is disabled + """ + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd, + "-E", "setup.ilm.enabled=false", + "-E", "setup.template.name=" + self.custom_template, + "-E", "setup.template.pattern=" + self.custom_template + "*"]) + + assert exit_code == 0 + self.idxmgmt.assert_index_template_loaded(self.custom_template) + self.idxmgmt.assert_index_template_index_pattern(self.custom_template, [self.custom_template + "*"]) + self.idxmgmt.assert_alias_not_created(self.alias_name) + self.idxmgmt.assert_policy_not_created(self.policy_name) + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_template_with_opts(self): + """ + Test setup --index-management with config options + """ + self.render_config() + + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd, + "-E", "setup.ilm.enabled=false", + "-E", "setup.template.settings.index.number_of_shards=2"]) + + assert exit_code == 0 + self.idxmgmt.assert_index_template_loaded(self.index_name) + + # check that settings are overwritten + resp = self.es.transport.perform_request('GET', '/_template/' + self.index_name) + assert self.index_name in resp + index = resp[self.index_name]["settings"]["index"] + assert index["number_of_shards"] == "2", index["number_of_shards"] + + @unittest.skipUnless(INTEGRATION_TESTS, "integration test") + @attr('integration') + def test_setup_overwrite_template_on_ilm_policy_created(self): + """ + Test setup --index-management overwrites template when new ilm policy is created + """ + + # ensure template with ilm rollover_alias name is created, but ilm policy not yet + self.render_config() + exit_code = self.run_beat(logging_args=["-v", "-d", "*"], + extra_args=["setup", self.cmd, + "-E", "setup.ilm.enabled=false", + "-E", "setup.template.name=" + self.custom_alias, + "-E", "setup.template.pattern=" + self.custom_alias + "*"]) + assert exit_code == 0 + self.idxmgmt.assert_index_template_loaded(self.custom_alias) + self.idxmgmt.assert_policy_not_created(self.index_name) + + # ensure ilm policy is created, triggering overwriting existing template + exit_code = self.run_beat(extra_args=["setup", self.cmd, + "-E", "setup.template.overwrite=false", + "-E", "setup.template.settings.index.number_of_shards=2", + "-E", "setup.ilm.rollover_alias=" + self.custom_alias]) + assert exit_code == 0 + self.idxmgmt.assert_ilm_template_loaded(self.custom_alias, self.index_name, self.custom_alias) + self.idxmgmt.assert_policy_created(self.index_name) + # check that template was overwritten + resp = self.es.transport.perform_request('GET', '/_template/' + self.custom_alias) + assert self.custom_alias in resp + index = resp[self.custom_alias]["settings"]["index"] + assert index["number_of_shards"] == "2", index["number_of_shards"] diff --git a/libbeat/tests/system/test_ilm.py b/libbeat/tests/system/test_ilm.py index 2dcc11edd6f4..9195954600aa 100644 --- a/libbeat/tests/system/test_ilm.py +++ b/libbeat/tests/system/test_ilm.py @@ -6,6 +6,7 @@ import shutil import datetime import logging +import json INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) @@ -20,14 +21,10 @@ def setUp(self): self.custom_policy = self.beat_name + "_bar" self.es = self.es_client() self.idxmgmt = IdxMgmt(self.es, self.index_name) - self.idxmgmt.delete(index=self.custom_alias) - self.idxmgmt.delete(index=self.custom_policy) - self.idxmgmt.delete(index=self.index_name) + self.idxmgmt.delete(indices=[self.custom_alias, self.index_name, self.custom_policy]) def tearDown(self): - self.idxmgmt.delete(index=self.custom_alias) - self.idxmgmt.delete(index=self.custom_policy) - self.idxmgmt.delete(index=self.index_name) + self.idxmgmt.delete(indices=[self.custom_alias, self.index_name, self.custom_policy]) def render_config(self, **kwargs): self.render_config_template( @@ -168,17 +165,13 @@ def setUp(self): self.custom_policy = self.beat_name + "_bar" self.es = self.es_client() self.idxmgmt = IdxMgmt(self.es, self.index_name) - self.idxmgmt.delete(index=self.custom_alias) - self.idxmgmt.delete(index=self.custom_policy) - self.idxmgmt.delete(index=self.index_name) + self.idxmgmt.delete(indices=[self.custom_alias, self.index_name, self.custom_policy]) logging.getLogger("urllib3").setLevel(logging.WARNING) logging.getLogger("elasticsearch").setLevel(logging.ERROR) def tearDown(self): - self.idxmgmt.delete(index=self.custom_alias) - self.idxmgmt.delete(index=self.custom_policy) - self.idxmgmt.delete(index=self.index_name) + self.idxmgmt.delete(indices=[self.custom_alias, self.index_name, self.custom_policy]) def render_config(self, **kwargs): self.render_config_template( @@ -217,6 +210,7 @@ def test_setup_ilm_default(self): assert exit_code == 0 self.idxmgmt.assert_ilm_template_loaded(self.alias_name, self.policy_name, self.alias_name) + self.idxmgmt.assert_index_template_index_pattern(self.alias_name, [self.alias_name + "-*"]) self.idxmgmt.assert_docs_written_to_alias(self.alias_name) self.idxmgmt.assert_alias_created(self.alias_name) self.idxmgmt.assert_policy_created(self.policy_name) @@ -321,7 +315,6 @@ def test_load_disabled(self): def test_changed_policy_name(self): """ Test ilm-policy export when policy name is changed - """ policy_name = "foo" @@ -331,3 +324,42 @@ def test_changed_policy_name(self): assert exit_code == 0 self.assert_log_contains_policy() self.assert_log_contains_write_alias() + + def test_export_to_file_absolute_path(self): + """ + Test export ilm policy to file with absolute file path + """ + base_path = os.path.abspath(os.path.join(self.beat_path, os.path.dirname(__file__), "export")) + exit_code = self.run_beat( + extra_args=["export", self.cmd, "--dir=" + base_path], + config=self.config) + + assert exit_code == 0 + + file = os.path.join(base_path, "policy", self.policy_name + '.json') + with open(file) as f: + policy = json.load(f) + assert policy["policy"]["phases"]["hot"]["actions"]["rollover"]["max_size"] == "50gb", policy + assert policy["policy"]["phases"]["hot"]["actions"]["rollover"]["max_age"] == "30d", policy + + os.remove(file) + + def test_export_to_file_relative_path(self): + """ + Test export ilm policy to file with relative file path + """ + path = os.path.join(os.path.dirname(__file__), "export") + exit_code = self.run_beat( + extra_args=["export", self.cmd, "--dir=" + path], + config=self.config) + + assert exit_code == 0 + + base_path = os.path.abspath(os.path.join(self.beat_path, os.path.dirname(__file__), "export")) + file = os.path.join(base_path, "policy", self.policy_name + '.json') + with open(file) as f: + policy = json.load(f) + assert policy["policy"]["phases"]["hot"]["actions"]["rollover"]["max_size"] == "50gb", policy + assert policy["policy"]["phases"]["hot"]["actions"]["rollover"]["max_age"] == "30d", policy + + os.remove(file) diff --git a/libbeat/tests/system/test_template.py b/libbeat/tests/system/test_template.py index 962f5aed4197..084993b88502 100644 --- a/libbeat/tests/system/test_template.py +++ b/libbeat/tests/system/test_template.py @@ -5,6 +5,7 @@ import unittest import shutil import logging +import json INTEGRATION_TESTS = os.environ.get('INTEGRATION_TESTS', False) @@ -88,17 +89,18 @@ def test_json_template(self): Test loading of json based template """ + template_name = "bla" + es = self.es_client() self.copy_files(["template.json"]) - path = os.path.join(self.working_dir, "template.json") - print path + self.render_config_template( elasticsearch={"hosts": self.get_host()}, template_overwrite="true", template_json_enabled="true", template_json_path=path, - template_json_name="bla", + template_json_name=template_name, ) proc = self.start_beat() @@ -107,8 +109,7 @@ def test_json_template(self): self.wait_until(lambda: self.log_contains("template with name 'bla' loaded")) proc.check_kill_and_wait() - es = self.es_client() - result = es.transport.perform_request('GET', '/_template/bla') + result = es.transport.perform_request('GET', '/_template/' + template_name) assert len(result) == 1 def get_host(self): @@ -127,10 +128,10 @@ def setUp(self): self.es = self.es_client() self.idxmgmt = IdxMgmt(self.es, self.index_name) - self.idxmgmt.delete(index=self.index_name) + self.idxmgmt.delete(indices=[self.index_name]) def tearDown(self): - self.idxmgmt.delete(index=self.index_name) + self.idxmgmt.delete(indices=[self.index_name]) def render_config(self, **kwargs): self.render_config_template( @@ -185,14 +186,12 @@ def setUp(self): self.es = self.es_client() self.idxmgmt = IdxMgmt(self.es, self.index_name) - self.idxmgmt.delete(index=self.custom_alias) - self.idxmgmt.delete(index=self.index_name) + self.idxmgmt.delete(indices=[self.custom_alias, self.index_name]) logging.getLogger("urllib3").setLevel(logging.WARNING) logging.getLogger("elasticsearch").setLevel(logging.ERROR) def tearDown(self): - self.idxmgmt.delete(index=self.custom_alias) - self.idxmgmt.delete(index=self.index_name) + self.idxmgmt.delete(indices=[self.custom_alias, self.index_name]) def render_config(self, **kwargs): self.render_config_template( @@ -335,9 +334,8 @@ def setUp(self): shutil.copy(os.path.join(self.beat_path, "fields.yml"), self.output) self.template_name = self.beat_name + "-9.9.9" - def assert_log_contains_template(self, template, index_pattern): + def assert_log_contains_template(self, index_pattern): assert self.log_contains('Loaded index template') - assert self.log_contains(template) assert self.log_contains(index_pattern) def test_default(self): @@ -351,7 +349,7 @@ def test_default(self): config=self.config) assert exit_code == 0 - self.assert_log_contains_template(self.template_name, self.template_name + "-*") + self.assert_log_contains_template(self.template_name + "-*") def test_changed_index_pattern(self): """ @@ -367,7 +365,7 @@ def test_changed_index_pattern(self): config=self.config) assert exit_code == 0 - self.assert_log_contains_template(self.template_name, alias_name + "-*") + self.assert_log_contains_template(alias_name + "-*") def test_load_disabled(self): """ @@ -380,4 +378,49 @@ def test_load_disabled(self): config=self.config) assert exit_code == 0 - self.assert_log_contains_template(self.template_name, self.template_name + "-*") + self.assert_log_contains_template(self.template_name + "-*") + + def test_export_to_file_absolute_path(self): + """ + Test export template to file with absolute file path + """ + self.render_config_template(self.beat_name, self.output, + fields=self.output) + + base_path = os.path.abspath(os.path.join(self.beat_path, os.path.dirname(__file__), "export")) + exit_code = self.run_beat( + extra_args=["export", "template", "--dir=" + base_path], + config=self.config) + + assert exit_code == 0 + + file = os.path.join(base_path, "template", self.template_name + '.json') + with open(file) as f: + template = json.load(f) + assert 'index_patterns' in template + assert template['index_patterns'] == [self.template_name + '-*'], template + + os.remove(file) + + def test_export_to_file_relative_path(self): + """ + Test export template to file with relative file path + """ + self.render_config_template(self.beat_name, self.output, + fields=self.output) + + path = os.path.join(os.path.dirname(__file__), "export") + exit_code = self.run_beat( + extra_args=["export", "template", "--dir=" + path], + config=self.config) + + assert exit_code == 0 + + base_path = os.path.abspath(os.path.join(self.beat_path, os.path.dirname(__file__), "export")) + file = os.path.join(base_path, "template", self.template_name + '.json') + with open(file) as f: + template = json.load(f) + assert 'index_patterns' in template + assert template['index_patterns'] == [self.template_name + '-*'], template + + os.remove(file) From 6f87f3c7fe9ea6036cdaa9ea105ebe6f5b56e3bc Mon Sep 17 00:00:00 2001 From: mm Date: Mon, 13 May 2019 10:51:07 +0300 Subject: [PATCH 42/59] Zdd zfs beat (#12136) Querying ZFS Storage and Pool Status --- libbeat/docs/communitybeats.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/libbeat/docs/communitybeats.asciidoc b/libbeat/docs/communitybeats.asciidoc index 764947a786a4..f53858d586fe 100644 --- a/libbeat/docs/communitybeats.asciidoc +++ b/libbeat/docs/communitybeats.asciidoc @@ -116,3 +116,4 @@ https://github.com/phenomenes/varnishstatbeat[varnishstatbeat]:: Reads stats dat https://gitlab.com/msvechla/vaultbeat[vaultbeat]:: Collects performance metrics and statistics from Hashicorp's Vault. https://github.com/eskibars/wmibeat[wmibeat]:: Uses WMI to grab your favorite, configurable Windows metrics. https://github.com/IBM/yarnbeat[yarnbeat]:: Polls YARN and MapReduce APIs for cluster and application metrics. +https://github.com/maireanu/zfsbeat[zfsbeat]:: Querying ZFS Storage and Pool Status From d9668d356af2d25416453a4a78cb6f02cb11bd24 Mon Sep 17 00:00:00 2001 From: Alex K <8418476+fearful-symmetry@users.noreply.github.com> Date: Mon, 13 May 2019 07:02:34 -0500 Subject: [PATCH 43/59] [metricbeat] Expand metricbeat dev guide for testing (#12105) * update dev guide to add examples and expand testing --- docs/devguide/metricset-details.asciidoc | 89 +++++++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/docs/devguide/metricset-details.asciidoc b/docs/devguide/metricset-details.asciidoc index e3358ec7afb8..32e92f05b3e8 100644 --- a/docs/devguide/metricset-details.asciidoc +++ b/docs/devguide/metricset-details.asciidoc @@ -155,8 +155,9 @@ You can simply run the command `make python-env` and then `. build/python-env/b You should use a combination of the three test types to test your metricsets because each method has advantages and disadvantages. To get started with your own tests, it's best to look at the existing tests. You'll find the unit and integration tests -in the `_test.go` files under existing modules and metricsets. The system -tests are under `tests/systems`. +in the `_test.go` files under existing modules and metricsets. +Integration tests usually take the form of `TestFetch` and `TestData`. +The system tests are under `tests/systems`. [float] @@ -204,6 +205,87 @@ waitFor ${REDIS_HOST} ${REDIS_PORT} Redis The environment expects your service to be available as soon as it receives a response from the given address and port. +[float] +===== Adding the standard metricset integration tests + +There are normally two integration tests that are part of every metricset: `TestFetch` and `TestData`. +Both tests will start up a new instance of your metricset and fetch an event. In order to start a metricset, you need to create a configuration object: + +[source,go] +---- +func getConfig() map[string]interface{} { + return map[string]interface{}{ + "module": "{module}", + "metricsets": []string{"{metricset}"}, + "hosts": []string{GetEnvHost() + ":" + GetEnvPort()}, <1> + } +} + +func GetEnvHost() string { <2> + host := os.Getenv("{module}_HOST") + if len(host) == 0 { + host = "127.0.0.1" + } + return host +} + +func GetEnvPort() string { <2> + port := os.Getenv("{module}_PORT") + + if len(port) == 0 { + port = "1234" + } + return port +} + +---- +<1> Add any additional config options your metricset needs here. +<2> The endpoint used by the metricset needs to be configurable for manual and automated testing. +Environment variables should be defined in the module under `_meta/env` and included in the `docker-compose.yml` file. + +The `TestFetch` integration test will return a single event from your metricset, which you can use to test the validity of the data. +`TestData` will (re)generate the `_meta/data.json` file that documents the data reported by the metricset. + +[source,go] +---- +import ( + "os" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/elastic/beats/libbeat/tests/compose" + mbtest "github.com/elastic/beats/metricbeat/mb/testing" +) + +func TestFetch(t *testing.T) { + compose.EnsureUp(t, "{module}") <1> + + f := mbtest.NewReportingMetricSetV2Error(t, getConfig()) + + events, errs := mbtest.ReportingFetchV2Error(f) + if len(errs) > 0 { + t.Fatalf("Expected 0 errord, had %d. %v\n", len(errs), errs) + } + + assert.NotEmpty(t, events) <2> + +} + +func TestData(t *testing.T) { + + f := mbtest.NewReportingMetricSetV2Error(t, getConfig()) + + err := mbtest.WriteEventsReporterV2Error(f, t, "") <3> + if !assert.NoError(t, err) { + t.FailNow() + } +} +---- +<1> Use this to start the docker service associated with your metricset. +<2> Add any further validity checks to verify the metricset is working. +<3> `WriteEventsReporterV2Error` will take the first valid event from the metricset and write it to `_meta/data.json` + [float] ===== Running the Tests @@ -211,6 +293,9 @@ To run all the tests, run `make testsuite`. To only run unit tests, run `make unit-tests` or for integration tests `make integration-tests-environment`. Be aware that a running Docker environment is needed for integration and system tests. +To run `TestData` and generate the `data.json` file, run +`go test -tags=integration -data -run TestData` in the directory where your test is located. + Sometimes you may want to run a single integration test, for example, to test a module such as the `apache` module. To do this, you can: From 3003cfbf47b864925b30684b2a89c205ec49e7f3 Mon Sep 17 00:00:00 2001 From: Silvia Mitter Date: Tue, 14 May 2019 19:49:27 +0200 Subject: [PATCH 44/59] Bugfix set template.order to 1 by default. (#12160) To ensure default order is not changed to 0, set it to 1 in default config. --- CHANGELOG-developer.next.asciidoc | 2 +- libbeat/template/config.go | 1 + libbeat/template/load_test.go | 7 ++++--- libbeat/template/template_test.go | 8 +++++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index f8a465a02e26..24f8c38455b9 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -35,7 +35,7 @@ The list below covers the major changes between 7.0.0-rc2 and master only. by `make` and `mage`. Example: `export PYTHON_EXE=python2.7`. {pull}11212[11212] - Prometheus helper for metricbeat contains now `Namespace` field for `prometheus.MetricsMappings` {pull}11424[11424] - Update Jinja2 version to 2.10.1. {pull}11817[11817] -- Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777], {pull}12065[12065], {pull}12067[12067] +- Reduce idxmgmt.Supporter interface and rework export commands to reuse logic. {pull}11777[11777],{pull}12065[12065],{pull}12067[12067],{pull}12160[12160] - Update urllib3 version to 1.24.2 {pull}11930[11930] - Add libbeat/common/cleanup package. {pull}12134[12134] - Only Load minimal template if no fields are provided. {pull}12103[12103] diff --git a/libbeat/template/config.go b/libbeat/template/config.go index a982dbc45cb7..6d6d8426df9e 100644 --- a/libbeat/template/config.go +++ b/libbeat/template/config.go @@ -47,5 +47,6 @@ func DefaultConfig() TemplateConfig { return TemplateConfig{ Enabled: true, Fields: "", + Order: 1, } } diff --git a/libbeat/template/load_test.go b/libbeat/template/load_test.go index ff0d6bfece45..97c11b8dfce7 100644 --- a/libbeat/template/load_test.go +++ b/libbeat/template/load_test.go @@ -31,6 +31,7 @@ import ( func TestFileLoader_Load(t *testing.T) { ver := "7.0.0" prefix := "mock" + order := 1 info := beat.Info{Version: ver, IndexPrefix: prefix} tmplName := fmt.Sprintf("%s-%s", prefix, ver) @@ -41,21 +42,21 @@ func TestFileLoader_Load(t *testing.T) { "load minimal config info": { body: common.MapStr{ "index_patterns": []string{"mock-7.0.0-*"}, - "order": 0, + "order": order, "settings": common.MapStr{"index": nil}}, }, "load minimal config with index settings": { settings: TemplateSettings{Index: common.MapStr{"code": "best_compression"}}, body: common.MapStr{ "index_patterns": []string{"mock-7.0.0-*"}, - "order": 0, + "order": order, "settings": common.MapStr{"index": common.MapStr{"code": "best_compression"}}}, }, "load minimal config with source settings": { settings: TemplateSettings{Source: common.MapStr{"enabled": false}}, body: common.MapStr{ "index_patterns": []string{"mock-7.0.0-*"}, - "order": 0, + "order": order, "settings": common.MapStr{"index": nil}, "mappings": common.MapStr{ "_source": common.MapStr{"enabled": false}, diff --git a/libbeat/template/template_test.go b/libbeat/template/template_test.go index 88221d600424..8bb9eed8ab84 100644 --- a/libbeat/template/template_test.go +++ b/libbeat/template/template_test.go @@ -23,6 +23,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/elastic/beats/libbeat/common" ) @@ -81,12 +82,13 @@ func TestTemplate(t *testing.T) { beatVersion := "6.6.0" beatName := "testbeat" ver := common.MustNewVersion("6.6.0") - template, err := New(beatVersion, beatName, *ver, TemplateConfig{}, false) - assert.NoError(t, err) + template, err := New(beatVersion, beatName, *ver, DefaultConfig(), false) + require.NoError(t, err) data := template.Generate(common.MapStr{}, nil) assert.Equal(t, []string{"testbeat-6.6.0-*"}, data["index_patterns"]) + assert.Equal(t, 1, data["order"]) meta, err := data.GetValue("mappings.doc._meta") - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, common.MapStr{"beat": "testbeat", "version": "6.6.0"}, meta) } From a1a7d7e4b9eea43ef88d09e79df5afc6e158a1ea Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Wed, 15 May 2019 10:06:43 -0400 Subject: [PATCH 45/59] [Auditbeat] Fix issues with multiple calls to rpmReadConfigFiles (#12168) This patch fixes two issues in Auditbeat's system/package on RPM distros: - Multiple calls to rpmReadConfigFiles lead to a crash (segmentation fault). It is necessary to call rpmFreeRpmrc after each call to rpmReadConfigFiles. See [1] for a similar issue. - In addition, it is also necessary to call rpmFreeMacros (when available) to avoid leaking memory after each rpmReadConfigFiles call. 1: https://lists.fedorahosted.org/pipermail/anaconda-patches/2015-February/015826.html Fixes #12147 --- CHANGELOG.next.asciidoc | 1 + .../module/system/package/rpm_linux.go | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index fb2be810c8d6..df70909ba92b 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -80,6 +80,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Package dataset: Log error when Homebrew is not installed. {pull}11667[11667] - Process dataset: Fixed a memory leak under Windows. {pull}12100[12100] - Login dataset: Fix re-read of utmp files. {pull}12028[12028] +- Package dataset: Fixed a crash inside librpm after Auditbeat has been running for a while. {issue}12147[12147] {pull}12168[12168] *Filebeat* diff --git a/x-pack/auditbeat/module/system/package/rpm_linux.go b/x-pack/auditbeat/module/system/package/rpm_linux.go index 66fb368df3e0..f049c169b613 100644 --- a/x-pack/auditbeat/module/system/package/rpm_linux.go +++ b/x-pack/auditbeat/module/system/package/rpm_linux.go @@ -33,6 +33,20 @@ my_rpmtsCreate(void *f) { return rpmtsCreate(); } +void +my_rpmFreeMacros(void *f) { + void (*rpmFreeMacros)(void *); + rpmFreeMacros = (void(*)(void*))f; + rpmFreeMacros(NULL); +} + +void +my_rpmFreeRpmrc(void *f) { + void (*rpmFreeRpmrc)(void); + rpmFreeRpmrc = (void (*)(void))f; + rpmFreeRpmrc(); +} + int my_rpmReadConfigFiles(void *f) { int (*rpmReadConfigFiles)(const char*, const char*); @@ -163,6 +177,8 @@ type cFunctions struct { rpmdbFreeIterator unsafe.Pointer rpmtsFree unsafe.Pointer rpmsqSetInterruptSafety unsafe.Pointer + rpmFreeRpmrc unsafe.Pointer + rpmFreeMacros unsafe.Pointer } var cFun *cFunctions @@ -238,10 +254,19 @@ func dlopenCFunctions() (*cFunctions, error) { return nil, err } + cFun.rpmFreeRpmrc, err = librpm.GetSymbolPointer("rpmFreeRpmrc") + if err != nil { + return nil, err + } + // Only available in librpm>=4.13.0 cFun.rpmsqSetInterruptSafety, err = librpm.GetSymbolPointer("rpmsqSetInterruptSafety") // no error check + // Only available in librpm>=4.6.0 + cFun.rpmFreeMacros, err = librpm.GetSymbolPointer("rpmFreeMacros") + // no error check + return &cFun, nil } @@ -271,10 +296,15 @@ func listRPMPackages() ([]*Package, error) { return nil, fmt.Errorf("Failed to get rpmts") } defer C.my_rpmtsFree(cFun.rpmtsFree, rpmts) + res := C.my_rpmReadConfigFiles(cFun.rpmReadConfigFiles) if int(res) != 0 { return nil, fmt.Errorf("Error: %d", int(res)) } + defer C.my_rpmFreeRpmrc(cFun.rpmFreeRpmrc) + if cFun.rpmFreeMacros != nil { + defer C.my_rpmFreeMacros(cFun.rpmFreeMacros) + } mi := C.my_rpmtsInitIterator(cFun.rpmtsInitIterator, rpmts) if mi == nil { From 3b0e1c7e2a957ea71c4c490d619ddfb076f6eb77 Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Wed, 15 May 2019 10:33:34 -0400 Subject: [PATCH 46/59] [Filebeat] Palo_alto module improvements (#12182) This PR adds some missing features to the recently merged palo_alto module: Dashboards (One for traffic logs, one for threats). Sets network.type to either ipv4 or ipv6. Renames palo_alto.pan_os.threat_file_or_url to palo_alto.pan_os.threat.resource. Splits palo_alto.pan_os.threat_id into palo_alto.pan_os.threat.id and palo_alto.pan_os.threat.name. --- filebeat/docs/fields.asciidoc | 14 +- .../docs/images/filebeat-palo-alto-threat.png | Bin 0 -> 484023 bytes .../images/filebeat-palo-alto-traffic.png | Bin 0 -> 1582931 bytes filebeat/docs/modules/palo_alto.asciidoc | 18 +- .../module/palo_alto/_meta/docs.asciidoc | 18 +- .../Filebeat-palo-alto-network-overview.json | 1107 +++++++++++++++++ .../Filebeat-palo-alto-threat-overview.json | 796 ++++++++++++ x-pack/filebeat/module/palo_alto/fields.go | 2 +- x-pack/filebeat/module/palo_alto/module.yml | 6 +- .../module/palo_alto/pan_os/_meta/fields.yml | 9 +- .../module/palo_alto/pan_os/config/input.yml | 4 +- .../palo_alto/pan_os/ingest/pipeline.yml | 24 +- .../test/pan_inc_other.log-expected.json | 1 + .../test/pan_inc_threat.log-expected.json | 500 +++++--- .../test/pan_inc_traffic.log-expected.json | 100 ++ .../pan_os/test/threat.log-expected.json | 380 +++--- .../pan_os/test/traffic.log-expected.json | 100 ++ 17 files changed, 2701 insertions(+), 378 deletions(-) create mode 100644 filebeat/docs/images/filebeat-palo-alto-threat.png create mode 100644 filebeat/docs/images/filebeat-palo-alto-traffic.png create mode 100644 x-pack/filebeat/module/palo_alto/_meta/kibana/7/dashboard/Filebeat-palo-alto-network-overview.json create mode 100644 x-pack/filebeat/module/palo_alto/_meta/kibana/7/dashboard/Filebeat-palo-alto-threat-overview.json diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index aa071c723952..24454b2f0f3b 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -12046,7 +12046,7 @@ Log entry identifier that is incremented sequentially. Unique for each log type. -- -*`palo_alto.pan_os.threat_file_or_url`*:: +*`palo_alto.pan_os.threat.resource`*:: + -- type: keyword @@ -12056,7 +12056,7 @@ URL or file name for a threat. -- -*`palo_alto.pan_os.threat_id`*:: +*`palo_alto.pan_os.threat.id`*:: + -- type: keyword @@ -12064,6 +12064,16 @@ type: keyword Palo Alto Networks identifier for the threat. +-- + +*`palo_alto.pan_os.threat.name`*:: ++ +-- +type: keyword + +Palo Alto Networks name for the threat. + + -- [[exported-fields-postgresql]] diff --git a/filebeat/docs/images/filebeat-palo-alto-threat.png b/filebeat/docs/images/filebeat-palo-alto-threat.png new file mode 100644 index 0000000000000000000000000000000000000000..46959b21a75e8904dababe83dca542e30721c3f0 GIT binary patch literal 484023 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�$_Jd-%n#GTy+^SK#Cxzh$YgWo0$^f@mu01cb= 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

}^JwD6BQPGw&b*9vU&!9t^=gcJ(fVR_hJ}*$ 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 z ze6M$xZw0Msc6Z%qvtdoRrghzxawphonANU-=1(=LJzbmz!9=ft>JcpSg}as`aHWT5 zk8Q?C-%Y7DIR_QD78i4`Y4o|KBsc%O=n8DEzT@@M)-26Ck+d3I(DNff63oGWGtn@ z9r04mXDlNirI~v0Gsiaw2`X5LulfSg)W+%Ji$TbhfO1P#kBveeLoMc7^_Pj%@qX6% zmWUXu80t=NUIol>kYN3>%;g6 z0qt&4N@v(&sEUV4MFx@5DI&5f>`&)3ihe#V5Jr-Qeog73RCn3iumdI`eYdHX_gh3Lm3Qb9()x9`>e{$y-VUqs4>&;#@I!++2C$A@xJGE znG3WCWI4&Odz6m-iuO0cndaN3Sx)CK*Jtg?Ay`2K2s{}FZdPPrU-O#^;}Bckq!sd* zP!@1Odhgw$SPqIXp8+Gxa#mT$mJXKz)o+UtZ2V7b00@9rhdpmY62u0^Zt`Ag>~`wK zLtaFOd2`uYNQqF1K0&+!Z2ZP%o|u!z^JnFR?BXAk75eNvSh)P>(gj)YIRpva?|6`0 zv2C?VPq+4a^S6}p*g}zbflyNt$C%`p^Ouy2&Kd1lt3U3|XbJ^R;5XNa_w*7w%5HU@ zG@5-Gstr?2D4ewR{iru|EpCh!FURRnP!WmW4clYAvG6}5FX7ovpY(VT0LmH-kjtzVT7N>t!GPR|}3D~Ec8n&`6V06>RlV|8EIILKaa{D`03u-k~+ zn$vh=%a|8zKv*s1g`38W>WOM*m*YIt0$n0ytHL(dkUu?{I?^NxD#uq}*;&ke+%~sQ zetVeF9=rjp_Dxmo{zkw`i@t~ad;s3WqjpH-XukoDhhPOD3WSi)z(zsTSg+_MC+-G8 zcySFI%SbE_?1L_|C52Er%@d)Tr2Um7vfY0-w~p2-#r1uS!PJi3#=j6v7>IvR*bpf&G|GIed^Qyir4rvrw6%&G#1b}PeTgT| zE*0A6RpJu4AOAz4dO(or+hN!}LkPRcSuJ}Y?D`0E$O4M-n9o*>%A3be?+g`68-C}R zn#CwO2~hhphML-%x69f0FG-(T6d(Ny3fzg~FA-A<%RfRyIAl+?e((8o{s!Mpqc$7! z!XH?WRQ)c4p-$cX&c<{02{$n4Cbhq}HEMg1L?1YPyt+;rtKOV>kDC10F19XSb08|= z?p<8>n#e;rGAbeIHG;c~B|2CeQAV272CbYY(s6D1bhrI(+?Hijg)RI$U5FAn5t$

blUUNqrvIibTBiZe?(&=K7rgXj&rrj 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�m8m(MHPUnF|XaIp6Dje0buFuzcQHQqf}>EJ%f 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ξ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�wmKJNGELU&b&d1}y|~#C3<+4)iB~Pr+Oz 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

    SB0G8f734)WfUvgmR}cgs>fdK?Ra90 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

    bD6u85Yl)@g3Mhh6X- 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.>HGpvXtw3FOj5dGR*5_%PEt`orYS%&uA{?zr-|VEh?LR8`>)i$ub=Q{-G#P zg`2&zAzV83^8$VE>bcuXcFh}C`x#S&(~BLBGw|Pm^?+M!28Ez~aikQ73>~bs*`w@7 zQ+yoX<>}E5&{S&iQ-B{6U9Fo8dFd-|t*_H2}b&mphA-*w?Uhu`@( zf939eMp8d_(DGa5Jjo!sZcz5)Wv$hh$XH55e&az~bR4rPl}u06E~UIS=}*ch@C2b@ zy|%s-nV>A8s)+)8gLNych>O81QAhrRCGYp3?gVOxGBq>rZcD*?K)K(H4pz`O=f^F@ zHU~Fc9I`J^=tH%yvn(6n{$`?Hn<69`fqH2Yv0^-==uOJjw9$^YF|UQ%LDm!o?BxiL zvCuv(SGd~>D_NeNiH9M&W6t5N?9mDJ732e-4GzXcxlHNUB4b(2e#9Cf;^&1==~?T0 zn9N^c?KPOL5xHnn_Kpyz2u(~F7CFu=yAd2ehI}e~;f{mJ9-4)A$a>PPyuF)f@Q*79 z8BJjjgSps9(WO_A zqV>9B?9ngEK>-!{;zUV1Dp64me!M3kpj6ylYSytu+fjN9w?PaEm?BC~`i25(vj{cEi>;vE<^zjzJt>Sv8C>&VxH^i>w<-Qvx)YYr^QP z@0-d)RK}<*m*2V3j$wBB^qq1?i>XX z7l4*D?@l^CIMW$*{^0te$Us2)CeRHsTeb89&{*YS&T-0x6*QW1Z)Dm+Pf9eaj6}M} z(C^X}pAGK>&ZM0K$XG{Wk7H)GvbDsvrYJFc}+iQ zuzuQ-eRvdf*Y+Z;+O>6`Gb@lZ>vV)f-{;HrPcGnM2hgq2m)R2DLq}rUd3U$W^!!_+ z8NpaAS`DxQLxtr?`t*p&#I6Fg8NRq)i_|k|-hzCo4iwV7j#h%+%EdaULh>ZT$0t+v zc6tJU{^AkI2G*wGzp-31|$5RR9+3;p!(999A_*=&$ikF@wPeUy)(Z)SO4 z);*-xc0MjlWXbb@_T@x9ls@{4$bGKpff15h@JYM-&H~UxRY{x~JJcKta}Vbzy7E0U zABJt_E(!<1Kd zF?!p0!(sJTfEcTvhsG6~8u*ElzP;Y-Xs@*}qM zhO6wvA03Kst?~Wgv6EeuA~m2`cm0oI4b%5YOwIMTHDq9i`Mo?YhAN}SX;HN5#gCXh zcBYz%4MRYSpTOpQ@JxD!+k$n~<*-^-A8SviLZ;}+(d9;CKodGP6g?OI`9l>zf{Ck{7te)r-_I=?eAZf3- zKM6>rr90A)rF)?~tu?N#%exDCV zfP(4&g@n0x0b5j_w{@C>(?0Dd1sWLMZWXqU=yIwG@LY%E%wy4j^Y6CEd?(_;1Oa^U zfb;B6F*$U%y$QSa^DOb})J4bZth;|>4ZSAd4+gn}xTub~Z4kp7ds$(CXUaiyHGl8V z9phvU1K<;GIvr-umpToNHxM+|e2pI?RVaOM|Mfrr=X1#X8h>jGF{r}YVW$kWpvenKLbjA|VY8zpFaS2u$SU+&D=RS`w+hq-9@pYHigy4OKr5)bW31P&TBFe|>tBppq@h zP*(faZt{|dw6L^aePZrTr1ztxjHi-{?rejM|1rA_|IU&kkwQ8fA_P=-bP<=6#S#cQ z;f}PT>oE;-W?cTqv9iWAqwf!|+2R*A{etvM-y_o}wtwS^)==VYf|~8zaD^60k(ok3 zB_Ls)BUV=o_%LRUSP~OVOiSB2xffK;rgi%P$MA9!gEURGvzBRqHF_?nPzYEj)~Ko& z4|kTUQ({nEPrSqBaarqi3Qf=}8#p0|t=UU=K#VcGUgr)Xz$TT0w;Kcl1H^^GwLWk(TRNo)a_C;@)& z+ZPjO2u=r9{mCM~%+hT3$5&Ig!QtIwVofeTKH{dJ)I=1H)>6(APapD&W9WHBoB z@nbHDb-2^yoB#Us3Q0!EtXA(TuL%@YrhZRdz*gus+#mb)U4_Jt@i-F|q?Ct(&JW*w zX^fA{k=m!KYZ}fL{Dwz5%$+&Uu(5vC9v!dwAY0UZbiYQMEd_G##$UZcFTXAP05;JK zXQ!&zO-FIx$dYm0s$vaF-_s0cvz~5-LD%PQP#=)3(zu)pMP{6ATCc0+zAf1NsPpGn zws)ZzZ!28F`J|dI6GtOSa^UCbBuzef9kwG4E=5Jet2Xkf|9;4CZtK#v4}3)~qtd7U z2LS*;aAx?d{FY_nTh;&U0tk7cNGSgHK!+)#1dM)*T|@ zzbdwsXzE?N{H8k$pG?Gwg@P6uj|vhBneoI71YJH-i-nX#rObZEe$O+FabBn!bqskY zJBCkBf>gEOuYHY=TcS#BqkT&H0-aGdQwqUlH_fq4Zm02FmPEh~KZ@as3kw8OxveovN^ zWi(Ub8{SK`WxhELz0&K$8-KboNE&9_xBD;Gjz&_t18Ijv9)|bWN@zjz0W-R+T4*z`V#nDRi$O8}@%cN)> zoshoiJ?|#EvC?$-131=?wrC)IrbYUo%1C0x{11)h_(o|=dsrH0uCm=!Sb&Rz6KCj! zyLhfCHSAk(s%z2wYp^*&wZ$d6v`5Ixqg6n?C4BIxQ%LDb%l}|Bi=QBe#zco-an>bm zE`BS<9H6^>aPf93%$wNC40Q)25z_4}a<@fTG5XayhnHJ4n z$WoKC>~8el&IfLY4xMV8Z9#{ty*WTMYU`-?h@~X@nq?w%Mm>_Fi2odjX?3czALuav z+f&Q2eRfYWg*3C@AQaB`^@`uWbxg0ccdm#I`j%dC{RB2^>z@f z0?3_I6=gZ$aXAI12v)O%fXSj4`G=e-$C_Ic9oGta%U+d~>Q(y+{b*cG)YOtcVfPrv zhQ)_GD7v#;D8f5nbNH5%F@m=2pQHJpkS`4eFXo(8Q=oXw=5 zaILOTl|n8wPi_-KqTgsj;_-OE8-B+kSv$e!-H2HLYgqbtS)b;4H z!CMVC_zJP_CP*%B5+Xb$c?QG5_|W*?C@uJgrqZ-24w%bAj@%(dxheI{{4erabB$JQ z5>2O7vficQkqL5x|B$7h?FvEKE=VLN0c%w~@lDj98R2J;yYYKk#cp%ch(+1XTWMHw z;lEo|<}&!HcEZ+ZrX$Z_&LV`PmG7b;oq_m9tts+3mM6}s^UhxVjjeJ&v&&lJ z%hj-1xhd;|?W+;P-amXrwizYxo<1#jQA|RY2G#O^XL9qHv*C;l z|4AH`cvbQ20xW=mQ7Qc=aynvcQ>!CYLvBc&l8iI`gNVE3?3H(qLDCd~_wIP60Y4!L zik!BTW0!w4gaN|W@KRZU^a1JVkSw1KOM#wjlmMM+)8S2nTnZW^O~cN@5@FD|!|@&e z%g1ihKoff&SBNtLR2dP8Nlo^95MhKtaJ97c*yKlf6!@@6dkR=5ZvOeU*xDTK|M_*P*_~ zIMBvcg68BYyw+l9k35Aunjb;MC zhULqV4VEt@lSPNf8)gilE?60?0SsAEpM0l+IUBcs>BjBlFdD`_`g47|Xf3!M^)4uT zEl0DXTn1=4YUnAB-byzLcPo+t>kTJFJ8@#+wdN#@3Jjg=x%}$5U~?nkpHEFCn_oq1 ziTGJniYj;8aJ^oEsPEoLQv3cnq0)oNiKT)=^ zkNF!NN(8Ceg|mJOpXP1$cub)!6n^d>mx8k0;+dLwSZ*aJW$4GgcI7{|l62RrXg2vm zOuE1Ccl*$~RGy1>PS8i~;UX^UgyqeNO;!^QZaSIT?v7YfvVFBI9@6FU=`>md02Jp{6VAk723SMlX9U*&a0F7Nn#c9hv^x_su3I2TLdv+sRm0`*H_4X0!c40sKHw@|0J7dS7UAoOs48;sy(CQViO8 zmM7#?JCqS}>O-`qbeGJhxjblOECA+1P3FRL4s86c<&^`z4+IkijeFA|H{?S2(( zuIcKtSaWQwlU2IgsOIxSHOZ;aB`blDV`7Md#o=5l*t}P(&Z?P@o;FU>fAqdV%ayJf zzU(NuBv^AktVBiJ^NPcB2cavLOKmudKapo7T=%r|@8%03XQMX0ZyY9d-$}Vl=#bY% zDl))gKoh$sceKh}Tv@6*IVPsf!ggGM!z;c^*Lr*y^D(mn%=grVv^ zL3Q+oJT$Na`Plp;>1@qEA31x?rOuB2AA4^dRaLk44J#rdDk-3JBdv69y1PR{Np zG&mtC!4<*eAi(=m_ZMkcUaXqYtIGtXoYyM|X6DA+QH4)JMkg&km-qiD#?EpsmB4Cg zoJ?dPhO|n*G;Sm#XT$*83FF?ImC4dzzSrV>G)$WVrNL3T;z7oS zz=qkJf9k)`?NPV3Wtnex-FggNwF@#Lo`xL}!ZQZ>EUm7Z?1e3Ct3liZSH?alraY?O z)7OpQac!T|snb!bd6mJxAQu!np5e;oe0KcdNmHD$D(m=or69;*@8I1awWxoF5Ql>Q zu0yqOvCmL;DmvPT#*e~16daIsO%{cY%l1??gHZh%M~>;};l36>FEKMG`1o1j&P)0) z6=w?_gF~gh=--F6XJfR%O)j;?_IZnT`$xLM5ekLir%*!H=iQuh96qqKNbP49C9YBFW-%qZD)LN4^$ks zA%vcz8wJc8*PdxB)8%W|X2`_5nBWow-04>!Z#0sc{ zi`DEYv@OB-@je!3(LUR?OMS^l&*mf*KQAP+ZQr33yj zdtNmIMX1be8&hgs94tb#a0V10d z-XhdWkH!l1*&Y$H@E429+EaN={h z`8bw8!?xId%v@n%lzUzl@7|xsBjNWls8h8>?Di?E4FZzmQBa;{r8v-ba!?4Y*(Og+ zSguvAi;K^hGFea@A4wgR5wHqgS>3}1Ue3GU>#oXN?QCl<9K)D_Q7_nzJslZ%_&0|V z(F_h;8PZaawySvouG7m2I3;3Lq&uY5dF+x8WTr+hTC*Kro}?!Sbj%M-$nux$4&CA0 z-OuI6RqTgVc)nFVkP>fah);HG`y?}-W|gJBTTq80O0~92(j0R^rFwrulO-s1FU^6= z2o__%H7>{-_=K|CTrQvWVD0JJ_6rBvB0>c$Dj;-N!2?68wlkq5@tCZ?47nJ;ERUj( z;$@RrT{9^h|kLmxvbJ~O1l#{ zJ^)!+r6)8@Z}x@8fli-U45EE=*k`#Dwj~# zEA+?Pd#c=)JE#YQPuA9#vOvN}RM}3!cw8n0t&{<{GUSr)H+gGJ1BKNd;g${rrT$EK z%+ZyQt3XmJ}%OX7Pcz- zG*ZFy0F%A8P}8?XHFv^pxGslw309{;-Wl=Yj#jmsmm8!^5@UDw$fBcBUB%lINd7K* zE_1Fu`b9oc!O2DOl^oGjg_XaXcJ;Rzjn@8S_Led_VHpz|(cr~0>meRRSF1J6gYmC< z;wVk-5J{P8Vk$OzG_d7AnvLqd`xFCRA>owqeHGRl!1nCO)UH1O@^0M z?@{OCIc&7SltYLKwCn^gz?Ppl=G#44OxgOkn4HWdBcDl_45VS%U!07(nN8t}8kD_G zEzC+_13jkE1F>)uiUn<`Z%S}km`y!(zk=*q{VxZkpF@H-%_G}BW0fmzQM!-spadS% z>|YFHAvbjzq$RFBLra>V<$g*b5Kreirr4%UOlZWz{+x^%eJRJmBch_-+9E#+;Yavj zZ~TL&XPe)BiK1tt5q<(F+;@#h| zAM>i%b|w;sQoLCJu}9`RK;jWR`4LYx)C+rZ9}p+noN$&p7;#Gcuml{)G6|f5TGdB` z$5x-FYn*IwcOnK^cJ6^~7@eC@?@(fFD;Z|`$Hsc$ivx+nqvl&?m{7BS}+lPT`qe&!?MHIzoSWLZRpa*J? zl5YkHP|VcOF^E0TrJDbJJcPta!TC(6!$Ie(*zGrRZ5KmTlTn*-Ebe!;DxI6=c1ONy zhjvD)G_F~Dg!E=CdPrP@TYCU*PsaMFxabEP;#IxB7XpbAyn>S9vSDKgZO=_6FmYg_1cnu~tKZK=7m33i>RbsSdg!4ugrhk#P`$JKdu z^yPD{y#8>Y7txNcT4a%Az2#n_aO_d~u<$kSMb%V?9L0_(DHj z==)HLL4^su!K?gc(QOZ`-n+D%F>DSRX#h~=+(RK8922*JXPu^n)T`c;h+(W8wwnt= z!qZHWs_b*P4?8j+OsUW)5|#1pSjIDPGk#2Cr83OQ7g9k)|g&m@Z(K& z)P0Em(dyK29_yjf$o$E0!tO#(HVae!)T6A&FM;ir< z5hTgzG1CgOey+-tgem&LcOHJ>Z#N2zTL<}u^xA#3BkTa|Ue=L#fx2KqUWM$UWSKi< zzJ#yBDP=`$mZgT(w5#pC#_cwAcjTI7c&1G(H^=Shz(wOps=+-&Np5DjwSek3-7l96 zMM1D>XM>$U7c+bTQb{IlduSdqUTPv^ra_~dd+-cEj@aVe4R3do!KHYF(4(QMLj4vJ z!bBydQauwof%t4UN8hffP4@waZ;;}vkgxel15J7Mei%2#E_N@wwlATcXvQ8P3u#azS6!A8z=D$OaDwg8rT{ z)Nlg7fd(z~x`0vnnjCFLHx>+-pbu@=FZ^D&cv%|6a93I@bYTTP8lW6EcsG^?i@{+*4&-AqX%wT@ z{^~apH;QazQfW1x;TIH6=^*13@Ei!PBn$cm^?BVx5nh{W^hV+|@O{f*VX0I68fcf} zJUR26T~BMi_28ib&S$Qkov$p)MBfBZmO_D=z3?W>vN*c>?W94YUfkoQlj`F-|Bt`DP-+DGg&c z`%tIim@xNrk!@`%SNc8XZeebb-{^Sk^8{0ww(JbG1U4h;#qZ%=eC=&;Dj?N|=OzJB zAdO8@odnIHY<=8t$RkxC0?#qB6F0v;VoEVmLN_WDlT%nQFzzIHKB=ifTW8*_Qy>+W zI4qVu>EkWc@)0u`dGqBs+2jIiSpwIwbAet(Z=NUFCgBKJsSjhh z%+>c>Z%aqf$C`z3Mk*rcoG$BxUhue9*+x*x%6!Cs`Qv@_Xd$U+@L(j(sNWzq_D&Zi z3Hdn2hu$&z+G9@VE6D2Fw!@~^;0Hv=118Edx6xjPd}*7;)j6Z?I3uEsWmB>v`Eqk< z>V2&-BkstU+|i*2*!2Bh5=Z+#U}QeZ%U&xjP#+X|Eeu{$1J^Ja(Io-JbG~TkHk?ze zxu0Wd%G8R`1VBy0gzDa4@MGE~TzRf)vEnZ8yROweylJkg2_`8ZtnI~JalS_nP88B7 zJI}c@2RAF%;s!}~v(xa=psu*Q6k0fn+8C>M!H6mFt`0sN=}`ybVi>p!DK)D=$fit@ zrtbWS5DoHViuTKkR9WsH6rC4&-q}Jb!ps$WlY(EWo-@oMijxyxGlUV$%tQ zqpEawX)3fPR8TU&l@ z(ifXxU-9ZLe9#l+1O*C(Ejvn!da3g=9ad9VEQM3HE*jzPi93*9d|0TP`efX8Mka6n zwVv=d5)I}HNQc+z7|(k!XQQp1s!nl8uzF7%OR&mi4d~%W`~;hy-1(bXTs*8jb($L7 zB8x{D}R8Xob^d`XLj`Ig*bZ1N>PBpW_-E$bq{=%w_^Wg?ZiyvnA z04(EvIA?=^t%=@ef+rQ5Kty8oq)Rn|*@{FWp4wY_^Xm_T zHJfSW&bCwF;Do}@J)@M7gRR!hppxswaDHm=W4wDaE%%(Erx-0CXZh7@=0h_@nNJ@- z5%3n>%=Bk~Jn&i`?cvXrNcWd(T}SJ0xUx3WYwU*E(F~zen?^;xUL0rynco)LRrtSs zTZm`8n=Y|v#=?`pGtXH~|DayG){RcPqV1z0kDe#aV#s-*%jMYI+r77IiK!KnHFo~! z6kn|b4dYf<~X96v)&d2V2SdO^!pg=Zi5ErUhU@@XF zOG|@?PwjSgeE85%Q44g$?Y#f#cuXxV=D9B1=kXt=82--cU<@{MJc&>eZ+g>l3PE{s zRk$S~M?B>SFZqIFCc8DIP>CdyZ4S`$=YA3qd9)QOU)6#{j!_083sd8*aE5>|ZK!N4 zGpl39`oTe=Gkq~Dfes3%{aX6{6^>0O-@{yd^t&3kUDLe>GwbaK zJ<~RH_n@z4+5MqR24c&7aXSYemLr8jChr{?N)|51cDC7FUfgj$UwQ<@FG3W?E$Nuc zJYX~HNdA)HWHJVWr7Z-wW*o1LM*0CoLLNo}5Ml5SAdnZU#6~$x6VXZmzaBJ|TDQ(H z5P#&sIvh+J3D$Fx{}3Sl?ByDK1iOrF)gk-4o@pm(*jDYw=e{$GXn|i|O9}i?Y@>uU z7p`7(q1ayZm~uM8y!ml7B@t{0BL~Pc;z0MGWklcOd2}o`LC=%%a=R|?q{MIlkaOPX zYbz2BR~o|p^!YudOl_v`ON)|AANNbku>pIrolqIzqhJ~_y zRcu6~dMQzJr?ukwXTmp1sT!pMf<+UZof@_63$IG;X^-*#p793=_Y@=#(_px)?uDj( z5ZU`VC#M09OU4Ky`?1H>TXV^6{-{Q$nVRGUHpA>&u}1S&q~VDjG5z}r>8k2~<^qs( zg2(hke;~04*+#A@)AWZB!hQ_E+ieg%x46*LC?jD`A@L_0FEdFNW-dylQM!8@)z1?? z?x{3G(ab{0G;nAK=8}eF4!(L270Hhd`4t>ilT=}i`J*ph2!|Pf*(FNGr27DoJ^md* zZ+;NY(;wd8H7lEiS_KGMI&d-q)n{2asCbId&ccez<)o`17Xx<+xv06j9UMq>8Gn<6 z_cl;#cZnxbMQWLm%AE4e@dQe4r3NDtM^~(I-0hBSOZEbSq5`)qAPR9~g;c_w3kdzN zeNKA&I3A$OgrlhPoY05nyqcB%_+`IfDP)z}C#i&gk52yVCa{d&_eToDmxiq>_oth8 zy{3h(0y9s2FNNb;ms%^3oE->>Vg6EX6o@BcLhw1-#U5&s`Xb2bMTU~X?RJv+gxo0rtgbDBC z7Di0WH+$4u9&&J~&`?A-po@dp?H0|>mtSLc&?=k{I1jdtQu$}XzeLi=U4Sb)+D3iB zfSLbIDMi?yVqj&u%FeeZzMjt)89$ZLP@)g$-0{BmRtbU!A|KyXTnc606b;JZd}e$P zE;RDidvK`T5=r3{5ONmLqt!`Y4ej`Lsw{I08R-VvsuO^7u0gcQaQ`y>b-v`JQ}LA8 zhB0=MEP6{1gtdF1?&`s+HVl`~IH~}Tt~|OiJZJ@AqriqIx;TF?!MUo)c_+jdj7{9L zFS}W{pWyVV z>dQ1B3tZ9bw6stuPHJYl7PddJlxw>%CO#+Tx`gC^iUg#TbVk#7`_;)LVAyWsz&Uf* zbH1T^4-N_w@bba zpW;?am<5#oB*DSalkO~i$8|nld0|yj7czr-db|q6utVOl3xhi&s5D>SLx8)jih8w$ z@?1c+RRrF+$2*t%eC^BH7xLD&MqCo9WJ8F~eE_lI@S`=--pIkESH$Y!P7S4_IgTNL z#C_BI%WZyZ@cWK#b`iwaRuEa#WGKd-T`jdob6$-9TGJ-J24!F*8r)?>&TGkfs~Mw# zU~*@;zZT?MKDzxg3+1r@NVFpvAF(1D*yycALUK{xROU4)F1)YuMtN3gfA{SG8#6=w z$7gpc7pFtmcbHb&(0M%mS|L{9^AkHYkcbmg7y6LlCnW(sIf4d&3Fx%@XwZ2I$cgzGBB6*~&L%`?&YqD9+VVDE~IW z(Ld-#@;be+OQiOcG=0OdTfz}Vx`7+=NRj}-c$}%p^71tB4sW;{Z9m3eC-}}3ab@>x zEi3&RnsDN!%Nvc)z6#{D2_yw%;k8yYs#lzbc&3;aOLyMtktog^wQ~Qj6Kr7lNr^)W zh$ndDzV<{j+5qrZM!QGg;Rg+5F>P8Fh{RX6hI;;$3VwoA4)9qd@PO+2J<4sqp*M|C zav%P$69l3&{{|@jm&{c~|Ch}FQhoaWKAC6JE=YoAP)>pJxc)o<8~GZ9;q{z^QYq(Y zLZUP83H!HRRvW*<_xW&0_56v^Q+&Rv)CcSmQ~Xmr`iqJQ1%KSfC{ z>VFa?$+QbJTo)EVd^0{(3qbvM@B9%TOJVsQB0mEv9sM2kKQX}104OSX`~L_;M|y(= zM|Dz6+O{~xF~APaC(};Ui?^bpi6l;J+w54wxsK2ra3e+3B+P-9m6Nf+U6dqmUtRXaSi zFKP`Ygw%?>vb~Plfcl;9^X`y@%#a$oW7(a3|59l|6M2V8xW~zB_%BioRrx+38gK~g zX%`;czn|RDK;(S%B7`%SUG#H)Es|`s@dH4p!^5#Kk*8ID-;;~`)DM{T4A31w^4A6cL0WxXxu%LQ!=wLzhmovwMd-k#))iqALS*)=(T<1f1xjw`6MAhZ=O1HBv9%u z+6l?v+owM|E5`^yHH066Z)IGsO#cHaDn7p}cX(qxlzIO$qS^>${_pqk4H2UzERXKU z=>bjO2p{7KBzk(TG_?^qU+!YW*PeLVYdT9%n&0bN98FviL`2u~@nstKe8=;XOD)iw zlRQo4`nWKjwP<@FV7+Kai^*8lCBjx(hh#QIv-sv3bnQyaF0?W+XKbAt51U z%!Ir`8;Bg9X~qr*9M8+&9`t)zd}*HDxc~hI?d>N=PxA9^a0OvWZwM?!kR%W!EG#aH zYxmbatBR&{a(4FVqBVkLHX7pL{C#q_5QT8ydfeO|p&-)Lniqrt?cDZU&mIdU!g&d$ z)y)8k>{-mEs>uC(6;kf96got3F8t7#a}6;IkbDW<-$xBS(h~xbKwliYlc$^8$_9(Y zsHj%#05m#(hW0_VfO>r1UqB4;!O5{s9eV)@_gSQ@X;h5cOhgJcyCS~7*8dQp#vrmEov?6|4P}A95hs3ND{%#u zP}T#_k;>1LnK<#wAQ6&B1Oso+02_Zy-J8)yH@2^3SY6hbAAoF$B8XE}g@o+l7*k>qt`lf`gF->hfQ$ z=3qY4(r8LC?$w|wIU^|rnuS1>hQM<= zp>_gB?$KOCfJ%(K#u=QQ(Z_P38mvnX0n=8UP`D!TR0$IPeGC8GQFGEHzvK65y)%#< z+y$virQ=*dl$L8C71uun3*y3NIEyCjeX?~ARn1;|Hw~&tEnuo zPjzX$%R@>I0ycE9B!)GX0n0i1a>|jc>Wo!TqPAMZ{ra>2xMEH+Lz|hwbf#!7@Lu;i z%aPo=ZNyW*W@Ws_RFE-*2=gLnO1er3zXPZ9-r46;$oY1nvmYwdwWUi-{+++{2y%3n z&U-Kfu=bt{GQ;1XQUhbl(T?YEk$hdAX=bd?CL%@OHojKmLWIhJSaEWqj3OrESDWUm z4$QVr0xpz$C*cQ&N62=LX5K0OV-n~M2G(D6qU&1sA6MQ{0b07QmKxbDVnQs$Yoz+` zhW*QR_A8^XXAyVR#W#duK$aN!x~chJuMl}+ybEFQlntr=4wTTpzW#r+@UH(^ zXAexpb(0CNXWlD>A?{ZHO^(Iu!~S;VE9$!t6v<{1z!6aZG{O2ejPxI_H&kA^Xy_qg z5H7$i<%VQ+>)#RFf4Gho2P`TY*mKg10I;|dZUBi+l9&75G<2{_|xX`SHM1bYKsC_l}7c9#HZz-@EBm{~U1h zuQb4yG@)OQ*8I0|e|#|8m9HRh=LPfsgw+6!26lnv+6w=3xBlZ#<^Yo?;?C+D|Nh$j zTnd0OO#cJn|Hq#u#Q^UPTVq?_FMjK_+lUEA{snY?3ETd>zakXack}nb$^QdT`H27m zpszR6!hc^#OVTTkCL*EWbsg;2<^V9?ookEnYiu|pa^-xWmuNUUf_^F5S_W2ENpFg+f=5=@{dF3com_&0aFq?4b&w7E;F~LQiet5|G{P3d5 zcYkM=6o;{bP&r3~N{_Hz_0814Ih#paOWWMa+G%>mskf^w*MPoi;^2aos<8W=F9yW* z0UtKEV8hi!Z_4*ej8%Ec*;p7tN47vR(~jcG%XsOk9>fS{C=LuHZ`X?EXz4gzb--om zrG(0z@d{^WCrt8tcPUr&`;5MX&~cQ~eEzmo*#931{zlO;DGYFdLul~3`H{TQ2m)?L zvH7;EY}k)a)v`XGDWpR)0@qc9`PS>r!vzFDiatQUS)kFy9A7bopYXCs#PDVkTSA3w zph_azE65>0id0*n#f)%0b<#SAZTkn-)NF zoqWnlf~}3F@JFn`XS&v|>DYB&!FH!xp2?2CufmfRLWSa2odtCEa8Lwg%0V5O>kYL#qbP0zsR$X4 zh1@L=cTI;66!=x-ZqvhcM3FrSnrCmN+u598K-M7aW0p&m#r@7%3>|Fq75Lx&@O>fx zB?%sr$`cy(B&5>DFv$ZUxrbl3#&c2PIc+O zk!3FPMrG3W&GbD6Ub(m@+7ZuXjFor*&9zsq-5rJAoZfdZu5vnpNsAcNwi zH`pPeHq-E)MZdR8{_2JQQ3R*eTk1rXrz}(nQPXY@DImJ;NK94Ohv^?!MIPW)9Fn*` ze3*g3rZey%(?S@w%|t;CAuDX|6=tMN2jHZ+H_pxBe7AaTnV+Rd;UoNumfofJV4I5? z8C8Os7ZVP2^_RsClsl|LmxOJ+_C++NN<|{}$sqy;RFWEG2IACaQ3fA`q9Ra>45c-` zQc3y?gcV6rNkq8zhD~kn#=t&TGTAJDJ(_gsT|98*z6f?dic_!Ki{ogs04?)CEI`>- zlHL0?hZ%z>J!+MTD%7{r_mO`GQ|SYa=~G=8S~l0~(q0e?wRQYM_mYx@E&>c@=82EFzG;VJgn_)7 zJPI1qnnlvA_~*Ta-9KgzTnQ*Gh~C|TL;Qt*G;87DPx3r%ED$!3u<6NwB2mdcQuCAJ z@FG_jA$s?U+x_uSp~>UXm&ju0_e}$M+=dIolo;H!nh)z>?e5llrjRESISFk3;NjZX zT?nT3xriGG3j=+EcZZ;WBrOD504DRG$>ewyDHdwDWntMwcK?F(Nz96IQ)eM0k#}}Q-kvmXy#DbPS z5oAZ`5aen!9B<2cfjP$^3@$RqllIXr54c3eV0#TzRBVowq|KSGm5#ebq^McnT88t7 zETv4}qCi(m+S+<`7*FFUwcb?H3w9TNbv@Yf)53j=_#bEwmG7UVIMazn)b6ktC)rEd z-+vg(?9%Sy*yE_!r*oqwWG?pKoURBRv--8mNEL;W&PhZM5OrF(Yn zyxBNVsw4gzu{)Ud04Mc(3WslT^>U5NLC=yr>Vi|0`cDrq4@`8uj=qd6Eur@gjo zBFN`?O?Spbr;CG!GD%zM)~zxrlU-fow+?2h zPv&XM4F=sR-3K(*?Hoe3TaMT|Ke1E?9!*4kr_m>1z&66Ycfmt*_Y`ban}Fv9&hI%_ zMxdL}#q;7yGa?uR8i*|}sn(Tqlysa7WNiNmGhOl9 z2Qt18hR~$&H*8BKRh$CTB^~tMEY*NK(>(6SpgYGg#;@SZ)h=U^}N=!rWiGLAP$Si=(?|_}%9fm~(^HNQeUlOx?QDyOTtkcLes(wOTw>F&9 zNs7V}nIeqzG?^!!{;2jS<7w)K$tQ~;t~$}fL86%=Oqz7dSpi1Z&Wfbd=s2v?-Qd)s z+5FTX`pc@L_bhr^nGz@IYUW02MFQV86lRw;hzVbpqp)?g6JD^6z_JWEOf-q}^>GhP zY+xg_WIWppOOBU=r7nx#R@VbZwR4rloF|vTkh%g_W=@xo?Y<5hYuD}k0O6eF?<6{Q z`Ad83Q5V*7Yk`*?j=Yt3PlDn>43#c!Ciu$}!BK~(tvSmNLC)!&Vw21lX%W;|ZfudXHY+E$UK%jeudNJ@j@~y> zQAmD!ug zC!HB;Sid@LYAj&dk#S(AtW464RUmyXB>w3D?s?Bkg*wfrvY7ZW+c8GfVkbq02K&#J zvw$WwX3?36o79{<`T0pY&xh(a#|XRi_!$(xzS>HPe)RgAr6)Lln4WeD7wggMy%9!# z)~)c?@KNuQp7LI$&Sa#@7ANlQM-L0xzt9Ax;b zI?KkDXiZtyZCJNxUj`r#;b2W{TbqF+=q$kn7nit38PXz^x;DJ;swLC(PKQ2WS*;mT zCP*A~NCep(#9mm4*$WcX*qzWdIq#>KFQr0>4CC_GS$4dvqFp7^T8l`2-hL$>i`}`N z3~+9CEr<8#c51A5pIuluoy~u5g^=Q4MF*8y99Guq`nyFFNS5JlPk4b3EwxigMmySi zm7tY@i5J||!y^L#U)Pgm4n^;}6F4$aThamY^6S9kFPd2c*Bq`D5^i zP%Yu;ru93%okkC$j}f6Pj2Y99=-Z>^>omC`#6}1wI3xKqwa)g{AC-jbrmgwbWYzTX z_Ehm{#O+i=7?c981l5+d4o;4tbhrX&UG2v*1-(`stzFw!){GhHL`H8sJO$N(j1Tu8 zxxu>lv$-xP=j#)nCCZBY5OCXiREBdI4&IlPvg{*RfNf6-cN`9&&mVkd%!q_&=WiA> zgh!u~<1b(6{oLW@9-Xl6DJ)#q`t{SVMQJaGq1)8ewB?IuDCc-^Fg8F`s)aj z@HXcqyzjQ7oxl_e75!mU-N^m0bM9(OqEq)VRtu{Vfw1sNx&t@ z?$C2#<-&Uxf&+yeL{^jQ9PV3{l^%^fty~>WA6dVW#A<({J}j{;m&i`CEk5rUY8YDN z8r?bK-ut9W*e1k6J(F4?-E!k`^ODD?i%mN1`EteXvXA-jLezS(V^#jRy^uXVi0(?I zSTAZ0Xw3{nI|-Z5j0XMUw)PVPGL5rG(DP7ld)js2i?pcznx+mh7t@L=a9Z(G?yN*3 zcTS!O;gLMZ6H8nmnGz6s^Y8Cs>=T7s&W9pHr%q0-)m?Yetb};&^QaBY+t-d(Hb}RJ z>#2OZU6VhSg1fAEJKE}714=SUztgQb`=&{SHahEwrntO4!-=Wi3^|D9YG+%Ws9(r- zdO^Cmis(^aqcDi}YH)N@ac>RMkG1f*3Y=;CsknvR=O2o5%ZvC@=kk(ImHm$AW$TQc zp4i(V8&3z>qpna*$x+|?1zbuQi`EzMY`7O5yucZ@$HWGszb51P7_o`kqq}8aJ)asy zg_N01q&pvcf%*i8B$zM9$Y>c%`2?ou*7*{eQwt+uqd!{Ag%rq7yI91c&C%$T1q2Wr zMD zy#Z}CtaMzZ&wMm_P{E*~e1uiPsF&zFjTXc3$E67Td$Jv$EG{Al58K`&dLVQrUP4%}8kua>&_K%EfkM8LIma%T2}pT%(of4dtA4IiI$NgiPikU)j(r|( zVO!$T5xOfJZcZ?4PLxI1o4wSTZ6xu%;GxvHv~FPUsYmxt8qMSEGPmv`15htePTtL3jg{$@t; zH8kduH?a;`MKH>r6GD7qV^Dxa+>Skz-YM{FbaV@j;7UO3bm^UZj2x&H)ybC23kYy- zI}&rYM~HvzFx$wmaI`rQ810WmPkXRF8j5hRj*yONj5M9ZY8^?hl+mm3<8=G!{7U)Z z7vj4%uOCY2HR-gaLw6!ui?%}N_DiqOz1HZG1hNI%8q?mTU0pnfb{9)ZkW z@~=hp;2YJu1jmP}E}xMovToYcWRi{snyW|=VE*{*IL>P9kNtV|+ zBi6#YczsrxXKF_k!)p_Fu*u&BSgtp;{27a!_R-U`e z0p;@zRN{#gk&nA0<%@h@IL{OgE(>Sg0=dkFy&%!@Fx3}Lmqgy+TuZ>wjOq%z95=lZ zw+T}tGmsv^OvB#(Pp=H8->#-N*wsbLBDcv9{;EQdqWF$T$2K9_?{F3r7F))Xb|a63AjQU*wqt_%beDYJ8*z*f!}Mx!w9N*hU_a64dl`ZKdKg-opZ zThr4BtAJMQhZJ4E;63=qEe*;HSDR1?ZyUjlPuHvCGFzFsFzZXOQysujm00hMu8#!C zStzmk^s9`4NMwnLh`LaXBva(%w}qMz6c^1P+imO&Scc3ZeV@73T@y)HSKHmBV|ge} zFLPA$sWWBbB6whjPf5>XzJul<%0gYqB)_P$Tunmv0ifD_rgzG#Fh3We(nynwE0|`A zuX>^ja!-ZE@HhO!cICLmJb45wfK@m&vozp zueq&$5*}IPE&jT+Fr)fkC#x%x@I&MW(ck&&VetQL9$|6-=c3OQoBrM~M5xuHUuUDM zsfWD3+Dgn$CUcSHkgXNdC zo}Wtwe^P<)*VX)QH6to-I!qQUW}C z36S4ob7<3vqk~wBtUR5J8WK-Lbq?31IL!)6`Ll;Z*d7E0_pdL` zEe{%DB4MP^p=`wtmeoOtsDM>6*VB?bKAmITs}<{1ZnV0AJj5A7LhQb#adQF!FPkvf zwK|iiUvI^Olyc$t!{uC|vdRr#ipobMLS(x1FpNg@b$_Gr+Xp<|qWJzaNH>TiBI3Iw z%54(uAcSHwPw=;A!ao?T5?T#V#H96q!%eQ?*zz1N> z5=&skOLf=gGBg~z{o#_#EOtnN$bz*agkBo)rGfknFTD*P2X`6I!{ENnLjm|Lckp5u zKKY7f>su+`u-AxWC46LSYWJtwUX{y+FsNleQ||#`e!vp!jpLzo-{yL~pV#+j6m8Bw zY)^>oI^uaO&?gD^@!I1vBB$~tybS|sX-u?(Ju=7AgCZyMZ=K#CGRROojzG*K=BU3H%ht}a#5+n~PGMZ0l!o)}{eEAL-?H;W*<_L|$ zeU>D3m%Q`oE6VF*8-~eWfxgF4*il#Rp5lr4F|al)yC_`|=crv{{|$ztI321vK20{v z48qG_XUvIv`&18$?|c6-y;c>i`-N*e;(jD;T$_rJw8%YS)$6Q%8$LyaZ(aUn*)|iL z|E2z;|34Ri4ZA`{0SK)Eg#$x{DTfgQFRri7%*V%9^OSx9;P~p><5hos&af^LP69}} zWb{IBJqoVrlm?jvBL{lbhwD^F6cPvTHeEKlVx9~)D)BLbN|E{doIRYD!RK zTo1kL4UCnC=OMSQ)^EQ6ymK?)cqQ0{GfXnN84iRyS3-3L z)+DPG*RedL8~!WY$^i$Np~NHTsvmeH1RQiZBA6N!*)8+@CNRrG{bMEonEf#mE4?$OvMe5h)TBaYh*3>#S z-VbVB-!GyVr1u(aAIqA^+Of@ynnm3=?)G(Eq5wWwTXB0pxKJ2{nBPER9f}RK@1`wX z?ZwRk+M^YiTaA!Aml@hc@oAhAY@BaU%gIFlm|4I-W+wYKM7Aptorwg}B3WdELJB1h zR}^ErPK+J~RIjl3EV`q$6w;B%uU?>@V99yY3l#r&!Ka@uaNMVS&5CX#5!TgOLKaQ0 z6XuUi-_cVG$cS%LY5q6uFlGT#l2ftdm!S(UfV#srO)}HU}^ zn{ZdoMhFDNk7phZ2;Z=}CrHgy?=r-wIOFq1hpq^0+bLuDhUZ%U@!U3ve?0dwU-&oi zlp8*@0h4;>*}GW9^$b+f?#%CJm#2`S!n{8JcTED_NlXMqz8&&GCUcS6uOM z3hA*4ePQ?%^_jUAe-N*v$zVn((BDVc=4ci7U*6dvK@&@kB@w&LP=-M`s!(C7&2LD<6BFoB1ANPS0;{q^+$_RwnA%89sXvU^yNQ=XPECFghBET!jSj~w^C)d zZn$`q6Ob}HUb?<;cCu&vvgM;f)qbu*x&&snQnnsrh<_fvObnxRlv^?FicIZDe(v5Us*-lH9tXE;IYlZ)j2dgVU= z5kkBjy(2lD75NJ~p#b{W|%R8#&ko$JBK*UY$JT>4c6a9)C??_4|Fw2*9$8$6$ zgNOG`YhR>_N~DS$bzGdo(kCQ&a!0$OX=oT~cHZ_)9BK5q^3+e(=0rTRlB_A~=nNxT zrhcJ`F^BVDXgj}Nn>tscd{1*D**CUhqRHoUN+>I_Sc7FdY$W%kv$@Us2xOrt81&+z zcCyqox-j74vwE54Q!2%(5~W<{>NKgC0V8)ne3D7l9V@V!P11g5HH%^~9hCrjDW?f| zLlvrQsVZT4I0^+b(jH=tg#RQ@4|oj3^jooNcC_wxQ5!#suKcL!mZ6Ob)PaMciD>FCzpZ(w z=lJtQr&wb!)D8(AZt~8oOmLCQo!)!Agg zppb!XjQY)5i05iJv}H@5a`_=Gc6IFaI)vT1haypF9r;!GW!YQZVJ1?o2|Jx$4VX)k z$$VC^Oc4IZ{YnX1ujZ|z-TAh3p^l;iU!#%obNuR2i(3~_Kq6!L!>5dWHlcU!A-7W& zFSQpL(k%4yUPb_C(TV}#454*MdRIgkSB`45R1D)O59S$Gl$t6vjQ>v%LYE~1xO(n@ z`j`i8;lVU@N0ii8xGaLCAWLSTmkZ;R<+MFIINKFvN_#WRHCOumy{6N}*RV@Z~K64|ioSw)derq5;_9oD-T>Z95wN{%LFitoj?`=K?RZIKT3 z#*DJcCW7dAocE*Di05UQc zuBjytsqYgMhz3W8oq?Wzf~7{$O|%bK)RoHY-DAoS55yS`pDV$IJ+$TB%)tsZz&{+b z$~tm?9WUJU;sF-e+{|h><*xiw8UKg_e21Zs_)B;8?~@rOv!;YVd!i^PCN;;K=&Fs9 z>}`OASV)IU{mdxkLh?0AxwuWk>p11Mr>j~8N7qL!LVS)`3jaU$-uxfxwhbRokxEE+ z$gZSP*>^HXp~TqNP$|3Y>lhMI*%R4^#MmYKHj|WnUuG=BWM2kjoiQ_JeBRy9b1$FI z_doc)o_^8tGTvS9>%6YxJdWc$PmY_mh|F6DK5^UrpIw?ZaSb}loOfOJhbF6MTq-hF zPQ;Iun8kK)YLXubqtwYbV!EtLY*c$+0opb9j(kUnOGg}E()+rUU5uuLI>;7Dcd+&W zEw|qq!p!D!Fm2mJT6!e~oqT5ZjoyF0?n{96$K*qJZ zT8d{1WSubDnz7vcy`OFgUCzCb${r(VyZ(Hnc+5`9@o^~7BoGJ*!r9>~9|d6~cz9S+iN zJH3*u(g{uneXuO@a=kcWlcZBBXp4R!-qV{Vz~Fn4%mq_;k}0It?fyi4sPf!j+d9FO z;m_+_{rrC}VWX$)YMi1rmp7*Teb%j`Gi#h@M9C3JkykNcuYFxYwTF*8N-021Ij0$x zrray$h$1t~+0e;T+`{PNcNCV}u_FOiq0~To8&G#A!cm##JbKGA`u^z*q$V?k; zsfz;}X5GniO&e~fkbRDR8zr<8znkW&Ui$uop7g!p`-zIAbIUijZ03;>$PmU|4U=HV zFWTm*Yn_}c-UULRC*j3I0yp*;nII$IA1`(%3p@1V?!p%js6@9oqRR~Q<3ku|BB;;h z$}zr)ua;v|&w)|%Ujw>0H6_rllO1>@YsfpoLE~4@U;lrA5HC=>&M^3+*scMuQxoYs z5-ZQ07v_$wo!$-OqGG3{Ra37P0ax?;B%XC@V&rAQ=CliD>Y6Xpg@s*{XzjI-DWbrO ztk;6JF>}`hLIwRXZ2l*ip#xB8>SmX4XPwXLc@fjH7YHo$A=yPiX^UJIR<@_opYPwxp^H~N4oPD1bC;4oBo?Z(t%=WLrH(8Ef^3{kq! zohH3OYdI@&kP_Yww>rps|l64MSdzl@q?tt*=Y&wRUX0-D^Rcg@B2 z+s#h@O^l*NjdP7;-`cE3lyGR+q2XtbOL+>}mo!dx5NcFiP^DEiH%*E^V*=)5+dE%m z$Q|7ZYBs^wTfgHJU)t?@<{vfP+V=QWF!=V6p3TOT@^w{6=)Tt3tQ(icJyNqnsihke zRc2DpwB2u$DwgGa*G4@F8|(`uj~d>WS~uC$9_~bM2M(`lujj=F@~PFsM5#7|BFX;v z2_dDHBAe*fOzcu|Xj*to2q=w#@aCo|2@B+JJ3NO$Eb@kd(c*CeXFL z4gvJVa=?w00tE6cprU2Ffteb-cHw3ytwDpZJ|U!7-hwi(Ft5D)UerpiBd9gI1VGLg z8H%Qx{CQLjSN%&l;^&oRBU_{sSL#lF`|T(IfKuCJHOHQfz*hRUKLBTeJ^qL#T-u?( zvpX5vgAF|r>WDwOsp!4<0WkUMygsuC4e7rOpb>(1LDuw_CwVfCP;;93{%Xrss6)T@_S2uh z13ds{%BH`B8TfCBj8l-0!-HG-GvaCs(fJc=sFsd3q~3PDWg;3*abWmvF zzFw8n#wbXo$Oh?xE>Fr*_V3DWfy62Sxl&;M9g>&2YQ%~x_f5l zwV{KDEk5X$C4AU2jDJ}bcy+QmDu~DBbXB&SjBCdkNIpJP_mmK}EpBh3yhDGcVZ)AF zdr<4Bp9YDx&Au?zxGz7S>G;?jM;6ve@d#!Ng}s*KW8g36jiWY^yO*I z)+)mX?~fUhp6ok!xU=}rSm;{bp2V!gktPUh8I-22@+N2PMjxlxpkFDX$csn;;}X-c z`hIE+pE6C#xxunRFH0%;f|%iWVb9_~C^U2Im7-ZIYW9SU3?0WCcVyq>Z1t*ij8evg zPci91@(bxhj1g}X#C4l_hk>FvVmF8@emLWdf| zNBx1EHw*4hwpGxj|L~OO0>kvz%oDMY!#eE*aa!bQ#Ooh7UVPlG-=oVeqMY3(^9UbGo$i+!&qFGIN$3p)=k$`U<-uC`+L6X^fx3Zmg4$! z>d`W8Q+`|PFp!g+>$tv?zUtCR6L%jb_BiI5RTt%>NqdHx0x;~7IPnd0%<6WTIluDQ z4(d-@%Hl?^$B`Nd6fE`S)`zSiCV7 z^R&Utn~}6PIcE1I-s5>WeD)KN?Y#qKxz`f0M{12oUgfd2gw~3l0^N+~?Ti9SesG*# zhTO!NRI+k=#Mzw&%2b7|fD^V{_nRP$!->p#@e235J!f*m#!O2|-kW7ac1J9qs5B^5 zq~~Mk@_0mc9jk*L@fLT~?!>VE^sh@Ai_`uc5P}J;nOAa7^rqU1Sa-cy5RIg_V^}8! z0;f@T;ma0qnBxfHtpZwqcZs!!N8@C>NWxm7s|sY_^C8X!JApeveyhjlMyvnhdMA9@ z`B%=RxPe?Kq{ewnrrgfk64+e|s_vS_*v*`D$VY+R)TL8@48V|THfu9&yO6uc_^U1Q zGv0UK{b1Q?U^*gejB)CKh_@1&D%2@R*-bq09+PVF@DXcqhAG(&yCx7)y}~Vzz`7sE zV7&W-{zWPs{5Rz+eT=*HS8BKXKzHp? zT(4SGcTBE%W5w4r)W}t`#4jb64b^V z#_Hn@-;x-9*~`D$^iH!cFzt`0t4;ZF%0E8&$?8|Y8GMsH(t1%Ne|Wp73!i$tf@5eFzPp9N~S$qk*l z7vdeH;-L9h_2Ic8tykpp;6ea|1nK2Wz9_`1ZsJHkIbp!qq@!pf^vGlasmtvMkYxRba>T!x9iX8|i6 z@qNMTg`zFCR(Wyx2fS8KPm-E7hj(RNK1`|M3dqx+Mb9H&zlOwFu>MU92+sb-x5B~h zcd#ea5rci_p|L=av+&_y!t#lUY`sm_S~aeBAF_joK9o-#V+w2v4&O477i1j5j+X$?=$x%!90`uVjd#3oy zXg4?8EahJgM?ui>+zV=dl*F;SW-S6E)4W`YcH-LV&`RH1RQa~Zf-u&!34i;@8X%(1 z$aTW=prn#k-Ao0PwWtI*LscelkZJ&61IiQl0Y#)DEeib+Cghf5vo^4Y3F$xCH>%RT{`*= zEhR@tEWIl6ZX=7p8nP*I-T%5eaBpjb!m56p-Ej(-1`S4_N^4S<#`Y}HjHP`A(w%3y z$FYU(9mKjX`U9dp|ET6y%716-KQ=5pAVQs-nMUu$lFb?P`BD(SX&T;=nJsh~u>Bia z-eHWIQWkmxv)~=`Zj;Id2ZQ_E)1k0K$XvuN^Q{IuKIR@3TEN3&H-WhD@9^2X%6z$z zQqbeHatEF<=p?_fu{*GIf8y)&yG$*_(IWiC4P7Q7rL2gPo$F!hQ0St6&tcrFMKKAS z-#d2EH7AP-8*95pQ#Zt!Q#RC*xi)LrO_>5YUrz77`QgM}o4`dA7v$218l_>g39q`J zr|r`2@w9A@;l#03hw6q32XA%e7=A^sAD%ONDo`m)SOSV;)1imTm%rS6KdD`F(3s+U^e~-a zNzr?mD=)1t7qeD>f;8*~!`Q-#{9;+6VJ^cLq>#3z|LHm_~?jz*>X zqa_NCr^`ah?aZd?s88t&r~rPWKh1al`^+BX?!ed~m{TDR3=bR=aQp6*xLz08wjZEM zdR9BeuHqicGYt&IDcG1dY&JKrj?GnC$4fPBF$I}S7D~QglKo=*6jHxUm>ZoR#z*c-{*8c{LdJ6 zz}C$;IBm4etV{D;S)f)U1#Le&zh3erow?N_@0sbzx>(W>4sJzR9FE;;QWo?XG4zaD;%o4gIIvnP2k#IvG0fEo5&je{{7-4 z+^Kl(Gd1AW;wh?Y>mw1f^3uv^{eislUCX1euP)1C9sZv}G{x6={ z&f1k(ZBA5m7@R=)!U7xf_SPq+$77miKAj{7Dnm9idoxM7^OKdT3jC`|%>%3%@$#1^ z@UaCJvYbm`^}C}Z|`(!e5#SEz<+d-3$TJ%>5EV zE{cmw93tSc;)^$bL}c{Z$Gyo9#TgkAia_f>e`qt3e4dqP66G&sNnPh(IO zcA{Um7iv$o$7Kmp8Gpn?=Ig?*uA*wHB>TRwRKAdFc`{mLBHNjpTX#ug#wX^ng4e>7 zW^S+9E_?8fr48)t$Pir(>4soE1^&7;(A$CQ$(;?Dp8NJ}lz>$R`dG@zN{o@OBdi9m z>~|Eml3`u;E*)4*#q@dERu{W`z1XOZDzG0Glj!q0c@o8w863`YLx!gV2^eDoTXC@<4r zDaX8su`JHadudm`%)T%pBC^RQ zTQ-_%4UdZPfKOCE{*))N_9oc|y^FRLtvz12`8_FHI{r#N>@P2XivQ$ys_Sad?h^Dy z6pKL02@0$B5e<5;g3S$ixKqN`ESsTh9O&Lc;WgSiY!1wNHjq6nP`11bZhMXg!=65* z%2E zv=7a((rMnZfiTHS7e9nhyR&BncWKDK%jF_Zw%!LAR$i)Cd}d+Z1s49p#%&d^xgYl% zkOoFtLqk*{UBKKFmeczsn|9I5Dt}z0eqR}1SEkBnIlT*|`WHVhkppR^NSF;fB~%Mq z=cv)X5ZWI63se6v19Upar(=~svxEi>!==K>*%{bco5g^tfRWiC>a(X1m#lOBHkORs zovMWx?%7<|Nx9YDNmbGat9`r~4}6zz(2~gN=&BPS4c4rL2W>LG_B$kHu)V+ENpZ5R zd83UwQ&S+}Hu($?oj$lu)mmHDy;u(Tg#$E*yWt-Y=@q|{&^rXB=n8MP%}VR$0D}h~ zZrP3Htk;|;cH$@Ht3rYR3P>ctyY~c=fZj(=<3w!(6qi%@4LnQIa4(Q z9F^Y7dPPQcVR_jOgaItkx)8tzQ(w_1zMtNCO`*>Fs^DaLxZ6hxSp8kLMrII4A!(BA zb(G05#v0BLTG7789H2rZ18RhMiJUv_OS7Vn$GET9bOOY3g@tcY2McOB9OA||sD`e! zJlkIO8qt;K#y2^XeL-jJSz_uvt9U^^ofn_|%42oV21te2{j1ZI69oK6U>rw&ar70I9D8- zn*T|-6ZVeh0@6I9&JzMSrT^6R-2Fm^8wfGgIEP2=Z2znql8BI-BFKN4%gl# zF@;qez$ZVW-?+@RF!E*E%ALj2XKY$t`lY?tXNG)uc8F;|OxeBJxHLf0PQefQR3F|f zk--m6yevs~&8^8FpJLA{S4SgE*0l%$C5Nk>kCg6woTwhK9F)p{MBIc@k`9r9ECbFmM8;-5rcCAL0{57h*@{vcu&7;0MIHe2j8pO zjZfJ_^8LZ9FIIOgpi*FGPJ z=JT0m$d>^lKEG=1RprBMnSDbfc7-~Y$N0+M87B3T6K)A0;R16HsBn< z14nq|(Th?$fxZD=t`W0Yw9AdctWY=am=~)dQc9R>hSOQ`V5F~A>!H30B|9kYT2UX{ z-9AJNH?{mM_g>_fEVZ&25V%T_e@J)2RXH#Qvi8MZZUh0FSEOuj@jTUql~HU^41~D3 z+i-e%pqI74>e8ME;iuBSLOJ5*Uve2eY41r#nzZUy7HsBM8O&rn`c1IXJ!c?Qd;kn4 zKCZF2wc`*tuOFnr<&hHPCFqw^9HFpE!m&(U%MG$J%Yj-`+U*|7>)>ULn$lYE z#$U@+3V$&lWpb03wI1lzQ0J-YCI@vi6Bs0*KZ$g5ZW7}uK`8EVaVxn8#l}UY8t#KR ziFvi|{g!#NdM)<71?XYBcok>&q7e~9@%wLyZOf9AX|23}18rOUrE-}@8+Id3EDP6g7hTONBWi5&}FKD9Ic zQ93FcJ(tEY)N3DEw%+3$)&aVW)Uz!fN!64B#xRc{Z2htA@jODz+@nkZdeaQ?YByIt z)Joew+;2#2`c|47^NN8fNDP~+p`3S6(q~53I;~1EW^9}R4#35wJ3slRRIAr%#SlAQZM3v)9> zN2G%`ed(t_=p!NB^maXJIV>vBTXj2-A2Z?sxfDQ6n8$e+;06vKr%V3a0C?$q$IAC{ zy6Jh3B3@IEl6~%;$chUl?ckr0-m!ZYXvx=6DehKR?Al%Cs&1nGW!DpY_S<9h)}#Xn zsO9qeX~f#!SLg}F#hb>2KyY#1BiTY*aJqb`_KRjo`@KTo*7QjO7-$>T_YLtQ{2tnc zf8CP~12pYolB%5v+~$`fUsQExC6jJxrzy9=C*;hEg84%M=;p1%2CHVHsqwY~|hV zM|%O9`Nq^1`+_$T5kigkEGYHml3BGVSiXa)svKc&Dhp;HVeUO)ULA+o@Jk+wI-yF71_WUQ z{AT-R9 zN`!Y#`;Wc(V?i3WUgO@Q;+v?LZVf0>qJ`C=pYrS$W1*#F40Hby7tVscB zwKe{G{V?wwK^W!Hs_`(D(gBRMo!T7O4`&4lwqfJ=as|hCdAmYzAb@JZj2y?Y+T2VL z_w_-mWR*cKG;7Cna;`5wRQ7|0IGln2tl9#~Dr*+Bdu$I2&LZE3pVmv1%72t}DO?s> zgY^C+q}!h@jh5_=5OWVX8Lk4m74?r7R_zM?f0g}lK-sS|DK!6SFd(Is!3rd)y8EET zuDF4VtS?AS@=)Tm!6#Nb2Jg_%J@h~Zbw;$tamW&3U5iv=OHhqN<+IgcVZ%~K1Mt<~A9=15@%3aas)AwwI2gHMz=dDU)`;NW1v*&W-?n-e zZG*HlmdXHv4$|#tjc{vXiAy}wQZ5b&%@gTd77KQnT?0mp1>3Zd+c)aWQUJqY$LXEb zQDJVMYWb|0?;w*xQW`6Wrk5dU9v|!%_u;{OE& zsoDK#nHAEsjFxvHyu3YF?U}i|$geJ|Z?5q9kN)rf?1WSFBER9GI2*)P1sH=b|U1C}$r#WWRWa@HB^(R{m7{awe(>Bw4BWQbP2224C>aV6NAs+HY z;lbOAaw;8T_)@373%PVDRSx~#{nkw}E?QbJEb{0j+xaoS9?_qRzgojh&+YdsmvjMW zwWFb*MsldTWlfG>heDV5V(bSs)LECyj7ZHRh8oi~`H@L9b$97s@L;ot&YhADSO%~Ir z#JibF-V#6-_TuxaU?^qpJqzDcI0Fig1zcCYqp-fMuTVeEjqtdY@%6BRc8yeElDy|= z>Z{W`KjAC_3#wJ^PZKxmUP$XFh@bCBNmWMxxIkyX271f1?B|-RhKlJ)R9{K*w?{@%Y;yIvDSWFFHySV|D zkK$gis##-nB0TnXfozJ101gQef8*FdDa#Bllow|X!h-zT?m~VKQ1#KSn;~q}9`jyU z#~y(F(VxMvnPql%*RY8eI$L$bY#TN)*PW$`1N}Jb_eeaC zDsmfL0dYwy$(et4cRUAHMW#vPWV0s@j+EG=DM5arOEr&6@9{#UVHbY~pxAZy$$HcB z7P+WOfZ+rr^=8d4d*rP~)ljA6a1gV5?OVKV3Ib|}tmtK9Tk4}2XRlsRE-OAm0(y% zyRn3Q)e+Cd?uO?Ue{+3w^mD+G{AU~n-D(}R@EOhS&uUV9#ZQ^`yMWv;3fLW`_#cWHuh`qEl=-h!*9RRr*9H+$ z$#4JYARpfNjeVk?^fHfY4ehWmL>p(R6G}Ktmw5~2Bq*YB!}*wcV2VB zJ2|aB>G+o4J^%x4UqZ6-X1(?A1pM~FU>-*z$gz->cQOO?CUkY@c~`n{v;pHNw^cm= z6>%&(fqhc5zWo^NiA~1R{jePfZhF~#A8#Fcv8MMyvRy$oszAL1ygU%cm8g3cgZ7sA zjZbI8NklUT`!_yFUnFn>K(6L%|EWj<+TxYxJ=05qV{F%K1qKHUj7G3GH%kqAwiO4{ z@~bs@u-Naf6k)f*|HdK-)qnCLweT4TU~`Lg_&EmuZA94fV6te~fws;(G<46?NVs!XiZsciS^ANsl ztSfhOsszotD{WV4XbTNEzW9Wk(~K@0G=6?1A^|DG-R!J$oj4O%eQ*8Cwxw~}HqH3A z-D(|+w6(lVsJA;~2>reT=*3ljk^x)#fexdo3QaQMenC}MpPo%9;Bg_fht2ASa6PwX z;&w+>%$Mv5nL*i5nk$aF6kq#cu?JZ-Lri})7Cd5`FmUr+9uB&{cscKJd7l}OYq?Fe z`E43p^;M?53MTthDEe*!#)5nB;xF=ieS^5uYTjv%XLg)m+%k?=cxb9WU(($4LQ9Uy zz~1tX4@G#~8?LwBCYv%4ZIwoSa@a8ej9R2V8aYQRhVw zdm)P^X&`8%?+u_U5OHLlyL05%(^}Vw!;>DHp8)>o8kV68Y59snP&>saW=LSa=%~XIwCN$oG>AYb`;a%- zgr0`?+jMM-1>>%ViV8%F+Bc!Q(xl;%?@HyUo_YgO9I+d^(cMd(rO_PXo`)I5J!xQ? z^Y+2|M3t9!ZYo}^$|<#Ch)R4*;~@d|kBdUNYyPDzEy_!L4M((b1Ho{`ihpg?mukWP zwZry6ZHu2=pkhY>zx7AH&`pU=-|3N=wYDg7PC=wm^=t1?GT{$gZ`vkHE3wXl_Oq-5Re(4ui^-& z6DF#_%O6)bt$ye-DftP?ER~IRN0Pb&I!!ZB)M}bTt(wsp01d4Amb7wFWXq;TfA!AC zcZ^j5!6Lz0zmU8HS6xg8U9+it8EqSp3?2zA_Dsa~qB~gfYm(eR) zF}$Ml9Uc8ob58!3Z;NiyD@XU1f;}{@Ah)Q38RzO6-k&fQ^BB zzn?AzDTuq>2yv3EA)0g&olx{pvDqyvossU?+07UtG3*bX`ZV>=V z+z`G8k7>+$Z$fY(SZ=vTk<2`^3NwJqS10o9YHXw9l{irZfU)|A*)*UvqeUayfU&%+ zZo2CI3Xi4EXiyr9#FyZo{+=O5!_R#d5V(o~2iI#Lrejl*<+|EN&&#u>m5F-Gj`?^16kh+P&+8Uvh63<(PZC}*iU5~k27QfJH6Kgh?0(; zLA|Morsn3@_#bbA!%BT_qyfpeRdgVO)Cp?=C2C@bds?6MDb`U&>gKRSnVzto#y_4! zLCL?pcpcm={SWp(>b5^TZNGcw(5VkMUTGKi z<-M4DMMn@c^Z*EvuQsh*-dE2;u|Q8nL*Ga>tiNT&*!-@%)jLn#3c|XS5b|JC zOIjXpB!u7BYBO=EcLUNl{uo;a9MxFQbXf%88~wpGWT^TFnY3M;#|Tu8x$}Vr_e=2C z?jmCcT3k@)s>GMvZzU?!9-Jf{C)MMcmAvn_kck~d)|9C@$X=KJTIrJC^hh(~nmqnr zzJ{znVJ$8nukznwwBPP^-#VqaY>qqOPK3m!-bHBajy-k;D9cdH&KV~9+?6L5YAh)! z-LU~Mbg6E{9}6SN(`}s)zImYDg3Ab(zOlDDvf~(yYJa0oONUmA+V%kF6r3`Yfif+d z`pLE5HN(gp5=@&27Rq#Vw*iOYzVe`sp6SZw2t8ZXwjdBt85#?TTKrzkgb4?x-y{Nk zvukrX7v(`1K=tFie{9u#wx}vVT?NP(nS_FSF1EU`@ha7~zp>~&0m^l6!iLk65OQ@_ zoJS&>_DQr84joNwo2-k^Di|%nT0Y9y?|Nt#A>#&IUrZketCs6iTS0Tmz^#Q|dAk%+ zos;*|a(`?|Z0q36S=?T!(j9okl349pXC?x{3L$AwVG(P@h|_qkd!hbSq04J~okT2FM(+TPh|^;O zISn5umMWQER|hc{Jp!|GkH_9Aqy8=dBom;zKo7E?;x#i& zE4}nfz|3ur97zU}sw zTJMQO`(18m2!)^;GjRcvx7Z-w>*po_R8v570KPuhrV79iR&}(iHO^R7IDm7KL;gRccd-Z`7qCMx(4-)*=ZKg^;67d|0swe#_#7|G?dmd>4P97$kM#B}P|w zy()!rzJ2_G#H`arnpbU)W%kmGWeC#s7KhtAX2E4bH=#D{oUr zlYZN@=2li?NgqT;Vn2P3lv>w?pIJYg+ch2hNy`S2WSvKwb~eX7Q6SliV~2@R`41*L#TJZ8*V#^sMJl#mCRA4ILL_DimgywQkaNs0&2 zuEa$V48qmy13Ivaqj0dQRv4O(d#~n2+E;dHWRee`=;&(F2Wf|pi||lOkJZWjdv*~L z6$M6&xHqo$-eA^s*{m|fnqmk9aMveG;^U%?J{Z_Cf7{<2(*WAjFA)Fm|MiUys2})R z6GL4!feziey;7aRRnc|b7FyFODV40;S+|eYMfoTysi?ycRNh$;(FKWYFIH&gj zPLTOhl*i+@ftpsjM)s$kBz9M2Wv7%{RGmE3JbksZ&SU6l;M`kysoMm6WxMW#|28J` z>Lk_p3*?#Pbiv6Vk?|MV9VRcSgz~}GAIC%#jfkf9K~=;p4~j}Hn)D*iayeT^SzauG zxbw|ZzGuFhm^tzQSy@K#$Q&?hjq4z-P9kP(g9t%Cxi|Xx7DlLRH8aQ~HLd!7mG7UY z(0L|*-22N50Q~E5y9yg9U+Yair;49>efN%#EvutHsElVXFgK>_M)!zX%6u&L$Gmtr z`&bTOpenrcjcl4#f}dro<=R98)ZQhf#fFJJN-%z=g|0%!n~wPgP`jr(M+MjjKxyQH zNmJsPlw_M)kV@UtgYr>aBgIo0*#m&_@ZwQqK&&RGUcvxXktt#!e8!d~&m3a%z zbF=|f{{TXhMie2A&0v}`41cK=$II?OZ*Hwu!DWp!>FEIc9}mMCyD0x6f3Cdwr|4#y zc#eUIL#ANTW%6?+CIs>v$vOi7$YR!|m6m8dTjx*(eM&AJVzS2N{s6!D{ghi4yvtVx zsfiVqW)egK`3rmoo8h+TkF}J|jrg+k`++(aadZ>NBU;C)=ep^)W&4+H@w>2% zy$|!P&uwkb0~FJ0eZ@32ewW`2_eO~lDaYJCu9fM}NCKSMw`B2gX$1N6`)p-wgaDFo z;OuKL(^EPw3_z34q-)C6tmND}HFZQdBP-X)sf<2;za8S@8h)3nu$E`-PYKar7qG=$ zo^IU#vbG(hGFIVV;S)q~8VHIYsmQ!I{GmW64o$5akp_32V3qL}6Z=frWD)1-w@yS4=R7=(Z9LpXZ0iakUL*^wiY{dPs z(2syi9lV#B+GoRa)~EbVQ5$akk4>dSq)VZB<qBnkEO0Ty7%*4lCDQ^QU@z8#S;4K$a}T{#*X{ z`7_Ne|A-(0;P)^2fB(~9#yXTj)LAnwij`28P#2z#6T-p6Pa zuZ2Q@FA{4lV5uhR!Ze$6)#y565fwUj+U&SJhKfXFwBL){+H@sc(inZD9yDJJMr8s0 z1cw0=`!ni@)1|$1#h``4A;v5@>GbrIt1{!Cg)Z0w9Ev;oP{pJ?x2?)y;C|R~l7`Z4 ze*n|wKy6l^yK2DRp*)@#%C#W&mB5KouV=ldYtTvsuBS)kMd_XCEL3?Ey=^!hJ?E+V zs#cuhHZtTwunorzAMZ|>M%MSG!C8&>qAsYHSRF)x>d-4PK&!;;3OG)t00q0Jadm>nMgT~ac1x_8SeLj>Rwuv>8ZAsPI8}-hP@9$O_#8d7r5_TzcV?g8FN93hn#Woil(HJ6jYpWAPZ&N-rZ+nD2(h||G zH(IQPo(<-$zgr!+IHW!8!E$_lV;fA%3$>iPUKzDF6gA}_?|dQ2zJEUZM+@X@ZLL^R zQqn@c3O`u7F6ZqxJ;L|&pf}m2r>-A=_wsVif4&T|)2Gi?HX7z!75H=qag}Z=c7&34 zY?`@wFYTRL)49Tr{Px!diZ1Ll;47`}cId5Dnw1v;_Rf#wy2}f=eWlB8y|#xVN7c@f z{yLp#T&ff40^L0|HhucPzJz669z07|d>f@_fWiTP`R($Ttb_{o4>w*1Z$hZzN4rN? zLJ1B>^~qDX8n?SSHt#m%K*d6J&i6XeiN|ZU3r>lFpi4!?{>C9qv1+)ozdrUqKg2Ia zP5L$}PGGo|$)ppl?lI--BCIy``tytyn{yki-P3VhfZu0owJW9a~xj zv;2Z8#o?&o_HOS8GYpw=tvJD5ehBSw^Ixl)b4unF@Mxw&L>xi!#sW@mPB|d^e2(%l zU2y~Y$(L%^B7(K+b_Hlj$U;k{&mRu3G_q|??m|$s-=#tP9faR3F!m{MIm>@B^q}OZ z(s>B6(|vR2V<-u>|Fp8^;XiNh&zGoX`=2E?wUw*nuw+{ip;r=KprDV)M~O&kD{BdA zA9*NFGX&hv`Ptu}h;tTTUk8U{{IuPv0!KeX4Qt+MgQ=lZ*bzn0%obPhfA0>)Q!;IK z`%it1JJHc)h6Y!K)hIcM)o)I`1ybX>P@$ta+e82SMymYLzA8Yx?5gr~Hah1Q3vI=^ zhiEM=FOzy4Wp215_nBTl_}8BJ?+yu5iBglMFWfPQltUa}vxn6RZLPv#U8*!zTC)$< z9Z41?l_1IZDH?Cf6a3|^fuoWm)0u$zK0~^rz9ZsMcN;5gW%{^F*Z;jIfIsCpoO6uq zSWCOpbOzYdHm=F;(|33JCOYztC3H#qt{BJ4#x%2*aR{THL>V^LW$lojS|AVFQ4L>Hz;RSv9W0ONN zQM;SUxck1(UiiY9`wAC7=qp^Ysc`UTLM_1^q%446NwKlaZ#CQIc1h0y0<hp(BGY^A=Lgql&|Bv}Xn6l2 z#c|pd=m9@}z1xGwC?ha;C%-#soPi1vyg>3 zPIoVu7e1h{be-$SpEb>JLstxNzB>;tcpfM#*7dNUpCX^SVf!K?Xdb*zhG=U3Sl;bi z>3kzSGg;XaBamto8{CNGxNqI$^NZ1}v^KG`kchf|;Yvmi+sGO=K4cTg<2sK* zz*;Oqdj%vIyB2$I(?RL6qmBxKNtJIRj{8{~LhFC{D<(g`T7)87qq33`Ew1qxt1^c|sAQej zq=2u?avDf-jVmz$+p#V9i-#S*QWyx&{QAO*-%7jL%LMC)#+kuwcrqaz!u;UQa1sLz z>J^N!P=+X`xV7eoEu(%+aS5Ga*xk%y%{}_XldbLWwrZ7$10)^#qYjk#KnK+iX`@rD zcJ~@-M)#Mw*?x6<AmSV3#9wG%{g^ZsU}?zJCb`A9>%4X8p0wFdICHS!AYRg?$wTdMX2^}M zb20ibvN3LhQd+=>J*_FlR z>+R5vebbH-CzyUHKW6*WDCF3TmV=vi+=oZ0X;$$p^I5#Y%Uovze&V+~J3E(@CWr#J zxtEes#n*=J(Pt9c>N6fVbh_Ie@_`xtq3$Z4zJgu{;br zhQnyqr+4ff>=lR;mNx5>XQR>c zY%r`iaF#7H(H{?9>g+6BICDU=Z-BkQf5~FZ4K1i@7;cvNwflkW@D0xnW<<$PFH|Z` z)cFUw1BvE^1~D5ry(4Gq%#s1*wfT>B3#qjCPjdzHvJJTSWK}PYQ=F1M$p^)zd@`Yz zFz9{O`*eI>T@^ER2h^l)F+QF^%2$xLloVkQVK8hHJ?3fWE+-I;;q?nO>i%AG>HUm?+xV!u5bJ*D)e^O(WAuWFr9UAO3;DO|O?^x~EsZ!7(U zy9#eKbuLUXuRj>_xZnBpey73Y+r@}!QAfv`0a>3Gjq8;_2eP2E%!$V`-@R^-{Kas8 zfc9=j)(0JzNq_i-^yNJGzSMKMsxVnrhxv)eHZw6Zlm0he%ZMH7WS~y~-@o(fT*s@Q zXN)Q*s@%`u!`+Rn(ipCC=r@fIx~-`c;)A3_ac?ik)2|^y!^df2xBLx5Pi;zsOjh=~ z@+y5zjb+xTRrt&ViIG+tk41KSVr;;dzcq-rLr|jP$acoL8nsiKHsST z4EyAbK_}z!|3lL^$JPD+Z)f9#WuLf=W!Eyc+OloC6P9b)EiJd@TDEQTWY@{YeLmm& z@%#V$d#?BMbul=!(^o2468cT3?*37*P>i!d$#Nxd-sCy;F@&9wdH)v+cPQx2d!q3t zwzEjl_LB`5i+kg&=CZ8+tu=E;EGGu?k(Z{1LIONU&$mxA9iI!<7-RiQuJHgfgJxz* zpSkWv!Z(jjF9&-)Y(&Laqa_XM$VP))+Jm3`?U_j3LErm8_!Q|dD0Ue68&p#EVgs#V zSKF!``X5Zb3qiWQjH_{Dg#f4_QvPUoGHZ|sZY&;>baO;(jVa5MK(R~5PlK4U(U$#= zf6NpJ2-CC{t#}j?U@j=b7@Oe;pT}&7TuR+AEiyyG`ifb61_F#bqVFkx0Mi$P%=*$p zU7V!Sq#)J1uIDfWOo-Lu`1)nJDWRasN6XBP?)4^RKGZLJH7(Qm!Pn94J&m7MOfJ3D z&euC9XAdka>Bz8neU5U3u}QNpzlE8K4!n_d=F&4Ffz?Q91FiW&+?N3TYjC8h4{s*x zvCZ86j(tC5Fe0Amx%YD(gn}N&jJ;B>bR@(?3b{*9W!PC{>P$WrjKre(b7mxK;^{3n|4mg{?-2 zLw07}_+Bo{Nw692I%1Nrw&%koWneEv?Kp_mIp}DI$m*3g9k%sF9BV>l#EXS?1M8f%qCgjhKr9k-!UbQWR)j>qVecG)x5$WoP)2&JBCBZQ$B4cR~ zP>e$3uFH-3Ic8fT>PAH*6X^DSw^;3D%-Xp#@8_L^0=#TFqRp$ z7#|OV$voN6n0`4PWq$V7Hlhi7l3lzfpw4IpSpqQdLE20@NHl{C-8HB&XT+)C1Djte zS#L=73jOtdtx$?b3YazQXeD!th6^VzXjlYGDNtfY>I)v$6B%FD1Wsbi9HBkhAf-~r z5$%`iggy)hGZYN!w&+qfMdSyriMEDqK_*&s6i$2oswzUK4GKlhb zRa91dU9*5oh~}SY;8@_EmeYdM_|h=zj=8=>2J30v>vD4b$FEjMhX4pKji^zMyh!9` z6gP-a=H&l9(5s8CO_rTpW(pBS7)aA4Q;^-6M=3=FGe$+w#W&jKxvv-hTekqMA)o{> z_nn@cTD%g^{mf_bhyW8hpqM&6RvN%U@To_>ks>YDL*>NDz#I{GUzss3ZGPjcYeC{+ z{NhRgHr$ z_y4hIx%TzF{C`-awz-{}s_FIA_mGYN*S;k@XZ6_XmxJjQ;$-_NA)ho;fUKLm6O~u@ z$15+^S1m$RME*%}4vapbF`h0+7|z9XD7bk6t;h}ri`?zZ)7wi6WWfJs%ndkS>*X5h zBH8gW?w4pKKRj?Cox_v>lw$A8r3>A<$`D+rKiu_3I*vPA72@g2esCZ^Kij3d!btB2 zK|N77oOa1Ultp;CwskF!Gd!Es2QD()6WjyDn3c<$81@2;>Fyh8J}-sbk*mq9LEN1x zGTl0w9cqAoTdbUe1G#|E$0M7wgx@>WaaTmfrCT#k21F|$B#WRwYY1yyZS^?PiuS0@#Ux2stDJ zlab@cVX6=*ClY5Y44@6L_Kh>#(n$F3l1AcE@JDZIZ$rko*0Guf2Pp_kr7ftFtIuzq zYHnPHcHVi@^(<>*IKN?-_O}c#O4H*H^iW%B9&&(CP(W~R&K?c*-KvfOH!@e2wEzt9 zQqhbPEnj84RX|g2X1SRMyY|=%k2zPJgi} zEky4pX$eaUM*WVHn!Aytg}e=5GQCT(8XxQ7knKQ}SKyLU5IBhPp!PQsT719Y%}yeN z7EdJa5`SW)X*X8jKg@#=HQ*OE-F8;0t9kwd(>uOQzyUwFsc+Yv2JI#K=NDGwJe~et zL3kQsvMywPYH|!LFc!@NHE#8`YN6`u9yC8*me4Co6fMSD#3lk*I8oK5!fv#9s3QMXlEfi$0~o{kYen z--9$#qf}WIcd%w2?GfO;xHv(e@4)G&M~+agi$&&ocohLDrDjP`YfPB)j1bm0Fi4T6 z`5GmT*c^dredottf`ysj6fFZ(B3~RaR`)Z?{#RSuvoz?*@qb=`0~!~CSe)}<(%_|~ z`$sz5$S+^28ye{4W9#;sv%rwF8m;8aLzL3miJ)}dO&{s$SXCvIiQX4%Fm2m1)p2TC zYT=h5MMff{sF<1>PPB*p147yiB_d0yPQzk)hK!s7klo04{ig#-QT7uR1zbQQl@xsU zZzUBK4zyMBKR+*FB}L{a5B9GGkS!_6AA}1iCM-G5#Y2Mb^!0SiNR9Q0(L!knekMFf zdE-U$pE#n*fDEbqVQ?Y^AN>4f2;dp`lSy!XljDs_c8oNHx-ybk&MJvml1Vz#?YBEg zOSi^E$9~}#{6w+8=J_Sg0r&TaDW(nku~PdT30MRBGiXsmV}U7l zdvu?gD`#0(TbtvecB+Ba6o2OtoKF^YME+m8Vbqy2(+hC5DP+4i;pXa&%KaDhfny#? zRRIUUD*!KpvRjt;w{CHz&!S7b{i5Q`liD!y9!4xhPIFJ>W3bt;53%mAJ{RtYgwHIfRIs)u-^#-IPI4fsi?v2LNqO7lS34J5jHv4` zyQ3JSLyU0L#QMF;GFT^ari)ACZHpDD0qh2j@EucwQ}0uTT}-OcpUuEGM2~Un!c^7z zdIpXWva3JOps-l+zMoKW&?)wTJ+;A*VRaHAXK76JAqUPe+I@BhCmgR=xT3e&jd_Kv zZN6ul2A)UR;-|QPcwI0&`~LQ((->&&R8!+l>>1NyATuhO^~HhzkGpryUJuU2M@a)T zw!aUR!Q8TcJqp=meoN06aP@{JMVgH6n`bK#6$#F*-jpXS7hL%uOaNgBVU5blY}YbF zV&U0>zh3;*aMCVo`?La3@#RP~=KVBr#xWSoT$#bWf?-I{K`;@rDG`qF+<|O4XwG7H zKfbak-!g1kUp05unuPYa5^g?tUWi~d_}l(?z&A##(1|hba8~&H;saGn=r`pbB@E1P zLehaaJ^xC;o4W?f(~?SV9PY4-#y?uhv;Hf8iS5bBX> zZp)`hNpO2E`ySBjQ9M<-f9^rTUcrNdq8A6|c3{NAR0|PuIxemCz?#p=Nc$qt=g+`E z)VwscU;uH@Nh;1khB832g}uoW6PvpQK+5{iP4qd>5Hp-Rp8jEjXbXKmSjNnLUFm6g zDL+leWiqWF?Ogzy^H07+p)my)H;(x+!0zw7qC~h`3pAipAdV3vQ0R0Egoz{-+QYwh zI_zCq|J&R2;fj@=eY77vZTIPxl&h0Nl{0g74<|D}y;Vg;Wu(Sb_VG=x_3qEuHCdPTk)T`rj%Sz8nRp*LPwJ~6s33%DIpd*4jU(k97|wn94C8y(iSbsQWVRC4^Em;}5w14p$T%i<@|@V@4{9*Cww zD+ZjSGqST&7;-_9v19^DHJhb_V^UPxQhrWv&?-`Jwx*=)isJ1 z;N*oU{qo&fp|HJB@TAM!PI!^Y8|n&-w2D~9NdGmrRs^C!gf!b+Rr;t!op+CV!XL$LYgsgRv+HS-OJ?S&d@+RIx9FAD|WzzIT%-SQm-}k z*TIF>?=Kz@pIME=03z@YG3ivinrgCTvCm&m94NfPQx~=|;5H^|obNBV4-c=OU0)#Y z_nOa!KnP{$^^3(XKe|!XF0!CDt*J@JJrz8KQ@3aYKJLyh1XtY&Rms-IC4Baqf)~?( zi;RDjGSU|7m;3<*{F7tg=-Ks!Op?EATW!4Noy3WH-TdUH>w&g7!XPJ$tRH==6z9nH zvQdjVFg#L)i+_{L0@IU>z#w;feJDjmbc$vG=pN-obUwPF&%qo^s6oB9uG8RJ7Mzl` zUOO1e<&3L)ws;V^^E=4$*LXojC$0-q6_a-U z-6UZGl95A??fJv^>Aph7pxj#QqcF(X*rmAaeKSHsGu7-z?4`^!2iK__+a^J3& z?0CLEAEn&zmSxjxlH(+eP>Hy_up^V<=U0GTfrcF)M03R6BiEX|r8H7CwG5<3MBOfa z3%@;Bqsr3Mw*6z_b6ihk)~vjMG`&F^0}t6OzP<9P$= z7}>GxM{ter*USN~mPL&a{p?5?Dx#Dlo3g8$@%*eB&zJuPIqNoiZ=iF7y;Ylff}qpQ z^1x3#dLK9}jI(+@Kf~ME-d}>cQT}m;f9|3tdshr!@2dT2sc8X+6e}p{5asoeV96qQ zo*x;Q1e2{NOC{QaWE+iz|GL?w8L1~fq`4OFzrT8VPp&tnuvVzC!Gho#*$~C1Nr)st zyjXuGpR(Sup`9;4`nr_H%M-HGHqq%Ii)POzwl<%!S75|tEG{lfZTp!%cIM>|jI7`V z4dBYWnG@Z)TZ>kj+HeoFE@+mD5EvUj*>sn2F!KRVES3=+f*bUaDytVl^~8+K(TE%X zjZFl}eQ&y7YFVMuk8WQ;BvmwXl5jf+4$jSXyiQT4fu=}$z_wwwNEHTE;SRO|}Lot2*-S|iD zwzGf2O_iC#8q9mAbM;Vf5q_g{ZKZ$y;;+ zHQ2u+*w9ojh8Cu4N%kRceW0(3z_-p+PsIz3mM4s~#?_JHI&I?ChC_dk{fE2rwJtB# zlQMzR>Fn=u-+_a2xRu#W*fm+aA=R7s4D~VLG|7X|n}}{89k<%){__lGbiy+tON+P@ zO?wuAI|A}cem>QOeoU);lR~L1YvKz)-t$|o=0Jf&@tL(-FN`bdO+8Lpz!~pw_ZM&Ge_z9kZCga zLOS3nL}V09Bj!fRBUP&YY@(<1r!VS@#2jgJk}rg$toTFfdMd%yA&4OmpvQkJ;sDn=a9qK_x3* z7W&UFQO(88U1a8SSlbmi5EW#&KL;OJ>~x1yBoZ2cB%l#iI%F*JL?=etWhEIl!wy=< zj!RQ*1086VOOzVgeVtHenVZkOLF)LTMHMaev|b<^H+0{5ukU?YleCKVNHzAnn}q)I zBOTHm>^*_Am4l2!ITDc@8Hu_uiS{V^beIKt*b?x**o1w5-Ry?HT63L*_Su&(NrwD1 zpnst28 zxHr;DQ?f#e^}<*&D|zPhzEe|8CFuKc`|6_Oj}hlR<^a>~?TnZs8`t)f)N0c1&thqU_kUxKzpQClhEZ6le7@o3}%}4JYP_U#d z$fKHtbm%i#iKrb2&OLeC>v3iq7W^$@FxoDZPWII?P3u(HS|2w_?2IyFPT!8iTGs#M#UoT-Pr{^YYU!gS>I!b(;e&my9SuD zy`%n8_EP=DCP1wEJ#D0mdLr5p(6|~czA-)BAei|{xH?i!I49Znp3+Gf7d1Sc36>1A zV>w%xBUe{jb=oRW`vc>y?cn|5SX#Agq=3kN+{1<`MO}b}(m)R^65qdB`AR(g<=2l0 zJm3z$w3EK!VN@iZ@Lp=cutt|9C1WjBVtB%x2&)cjdZHk0m3XXQ+T{8_mN9Nnu2$FV zWNOYv)}V~;hf_iK3baSTP&-nH&>@1AHH;O|B4+KcwuwmZTD9fBDxmMV5EMk^Io7_2fk)I>5EabU+~DEDHWKP*PmxUWGSbR`7?tIb zTMuAY@lrn!(EJnibj>XJNRmWg>YR#AofuF=Z$oTtkP%CpcJT1Clx27cA} zDv-*JShB;-L-E(|acTAD{AJ?*@**tZE!1HTvE^#?twDfn&-s)AhCUH_uGDOBszb*6$F^yS}UPucQ6j zyT;}0iO}l%v}QFiyd=sFv%x1js@TtPTq4H2P)e5yS}18ycsjhBZH=SX}Cab z=zco<;Be&N(r54SAh$?2%Q=B!KMVQDADc|L>v8_T5JY`2nVklHJ-?@2o5&GiHhh}F z!ylpkfF$itDB3Ju()x@|aY5l!A501!9;8TO$nlaawzM!Sh);ta6T{fh5RkdEvxG{H zFq5kAWs~shjkY}P_SMsgqgs4;C#8^w(%Y-ptLSGhURH-svK{{^p<*w+5ON$a{B{(O z2xIy?AU448?Ft=#dCLj?QS@OG*c|ZgFW-bxLw+36GCnruw1c+?HIn+v$#&@MLD90W zkN<@0(=9@z3bn91TQcqZhnrJp@`iA`1$%7v}AjXcsESD+^%?s2BDVsws?-q*Vrt& zdE^`uK)(6qW(CT&^7grF1p_Z&NWVWo0>Qwf>3C@%^@MiY#&q!_W_utx`62NxvIL>p z=zU2%c2L#4^h(5o%fN7j8^0dDw3Y`RE|{Ufm-~-9)A3(uj(v4e^N6unH52oDlG+50 z;euSR#mxM#r_4D&dc;qa;krTtxcm*K6fJvQS?&0nR&W~54}KKI3!zgmZQtrWhhNV* z=`wdfri&RESD(LBDaY~g^l=f3vY4)IHBUQm8EE0GPpnR&T~)8jf>1vO)4 zS-^88-=B~e7~G%iDEJKd5@;Rq=deMoGFbOW2tdKQuqLx(9BB@rBujqcpz5fQ7bR^y z$QzyQDTZ4AuW!`nrk1ZIeh;@R*ThATLRC%#uBYP2xnCL4g6P6K9aEFY5s&>TO?`Mw zcZN5ZWFDpk)0Yj4D~?sEU_e17X0}cCZ0um{Y@oH%U`Chu_M%ef!X0=WqT0EIEkPRc zoNh`b@*&I4f}w!+1~ew_aV>A#6FX+|2-#$ z|EM$2;Y-q%r-4tWzhcAZB@WXfT2uO8k5H1O8Oq7?0e ziG{wGMz8}O1gpyEc7G1;;2&=Z48~FJc!lxwEsDNI!$}FF|1gIZy2E`AauSU0H~F|* zwrHIV_Wa-3(JiyQWgRmy>EZQUY1jZgKV*J1OrS5@r3P7)XG_^T=~>-8zPjYd_nRZ= zEA{W8KoqWN?@0#fC~CnH2f)-HoW&r_-G21PA25rF zpLDXPe^%&>VJ`~o|CXB1OhhCBLsD9hVQcnsl?2cGsje~f z3kbX(4BEO6?8Kq?1^@jo{?+pR)Ri#+vyvJQCFmD9r{P}f9Ozl#C_>p^-&H6)>7U6& zBFD@vNAh|E4)s1O`sd7mw|$bsTN$NR{rCDm))}0EzTY;>Tu&QKrvd7xDzV|j=}o$_ zu$9e`$t)Gry`ea*SbYyW5rNMhFLPHyD*1j-udDE9gAjmvI|09Ee;bA`#zTiFj}UbY z33$;V#@*J|x!L_0t8M>KsKn?&)b;>dg#RMR`Ocm29KN8hj&{ z25kas-Xq7%+ChQH?S2Q9h3eL5%v;I)qDbvwsO47f6ozO|a>eG(pH%qtd{xV16rPcL zWq2YUjd5KsB=gn+EC*~Suswt9p(v4^Ts6B`8ecVw(zx~ZsuFk?WmL6XTuOFv_p!z* zWkJ4hO;>x%Vq$l<3GMOM*%zO;SitX3j)G@VfDK>C4zG{E2l3pjyQbDsf4HZ9|(^V3Jkgx z0lt-%(yhP;IFAUMoQN>SU8!U8T+hP1`>w>0B~V0(D=iySIRa|bI0Eju1rXLA_saJX zqlq-=3nHp+#jtZ{J?)dad7+Q*ap(2h;_77M*R7>KXZDMD1*ETsRGq}3bK%IxVVoA; zpC;t^A|CAil1AB)l8E`Vz8=Q~1gpQ9)O6`5B*tTtCQs~3bFa^ecvc0xZf-W#K}r@n zFCW9*>z01^+L7R7!j;T^Ev`<7mLZZHm06fpGeS9U+Ug6iYaKWKO!wE~S**|XA)tuB z*SkhTb2Qzg88}JNJat1_{6w>lbbOWI`1_4_asR8G+%H4-Gm7lP%O$z_@z~cWg?~ch zvH$o;jE#?tyIkK)oV9Xs3Q)6mUeyXe9Rj&HDUwbM*WxK(et)3OUAJ6`|HefpXaD>Z zw*kFV&xfH#E4uAM#xTW=3f)F?4-buw=XD52zas}e3+kij<8JTgose2W9bk6=nT$Ko9{e<5){Y4x<`!68kis?gvDQuIXH%A{qQ>&4+xt- z+%cqO09Vr@aVNiAbiNC9vO2zGzR4(`KGiXudW1__GMfKoY<`8j-4=Pa zeiNNNi1|`_>M(EhNSz$a%kz?ziUGFG%Cg7P9S8V$12;8NlEn?%)0JF+JK8WT7v-+Wd|8`By+`&Oy!#4VZ} zY%mfO1burD%=(|bdx%=!l=tpR#T2y4UkY;)B>2smZl5^)9X#u(0Z0Qm2qZ=M<$u+f za}4CZLBz}%Cj80XKfHH4h+z>(^+1?IK@S~Rq|*Dkfv#2wxG3v(C6O7RPuncV2#G zI^6(OaT)b~ovAyMLUvz0b@hdC)97-tXL_mTK$qP!h;&m>c&w)2@6xc$JXMU$w3bd9 zuL%<^N$OV1o@XDdP$d*2kf-D1jFt3o_M&TpwIshy&UrO$efzQC42zDonVDZF9>%2F zT$(pE!+!(I{;$H*?VF@Tl`|5Gm;8VRQXxq=TxLG)%7q%+%3lrV}^aw}54 zMwf>vDM7))r#x8!sbM>lX35vX>=UBYD)3eo&N^#WTjmq@?I(4dPu%`)1n>Ud@4kQD zS1=Vkf91C@yD#$f^Jo4#x10U+z13haj!OWncm~ddR1v#I2M6uMtFv%rpZ94&HVH@$h7%IE7(uDm^VPP=?j;Kef zX)ll5iG1W4`ipDTWWq{sr)A#@qYa!ZR`t^*tB*#>j@I58G_okLko8v8=+2uyysP@E zfX~nhtWwDi83VH7#A_Zei`!Yz4xhA6{x-*~km|>YWOe6Ou*hDGPEgC@WYeMR&bVQCQ~ksqQnPmb*RYqSmkLMI`#1-7ZXT~ z+F8yOIGE0fx}v3#Ju6Euc-gt>E~93QU0c`Dag zQqRK)*w+gG1RiQXHH`{oV662Z-wRoEXois%=+)6Er_c5(*zS$oyEaxf`fXHRMq^d5 za7g=&n)++IX_UQqMS8{5?OWzriZ5A|>|gnsZV;k9&Inw|G2*GecXL{0&ILFaZ|q+s zbGt3ouDaTj=nG@FrG2=`tB7%0L_uGj_BSu#Y^^yXAyPPUjj<)estg#;XgGLmm>BH&tW~)j(&8m zrN*kTfSBVjIUFYDTk$S}CRU&I!AlHt)Ql+h!Q;kPw8^_qI7VwRyiQ`k45i_h9vW`H z-(V^ye%zRmh(SeoKzc0^PEH1;YaDX7p+Q{qpd_x0&MwaBv_sWyounwzNI9LrWP^mt zo_98$9G9@jB0;hb58n8?+0>M7{z9@nf2g8}+sER@6*)Vs{!p?DX%QM*k4M*shg zlGe(>z7!f^hV@`&!l0W*byH*1a1dq@#y?3>l)vKNjIY{LIpBojQ{@Uw=;tHUCY*y} zExTczSa5$=V+1swgEXeX-~Roo&SxzVtIvD?hc3n}Y2Wbf@$_f~AD!7n`qg-8N`m+Y zcL>NS5pDta!gd$VP5FdQFfc0jnxK#tlGh(ZJ$P0O0`AC`TvqYD?Y3ss4dx%9R-6WAf3DsU5WBksTVPIv9)rle8lMLHx6V1B$?Q&F_tL9n?&ct zw?jW(pJ{P1`8yfxgtT?^5}_(<)I$#F3RQw+g%A9Ks(vB4hCB@|5Y82PnXhxp6XuUCHo4#s*s#-I-T(EZaY@GTeMNKcPn~Kl20&eM z2wDvXxYAEF;-EErJszd~9B`cp=Gueo?k1Co_-H}%^2!YDxi7mVwJj|QTU$GExe1mz z-YpK^oO~fe2WyYlN_3#>0oIJ1jQv|^vni$k=%E_zk>qrComM<$P_p1uG;W?fNEDhr zzQf(|9dVOwCPUQP^t#BF_+8U+#G7t?K{(v>kUNo0xIYe~H5bRB$+ zV~5ztX2v-rs27ysxl0UV35LCY8n~b_mu0)60u|#Nr=KEt3&tB&oZZH%wIOfKc(Jg+ z8rtR`8o-iYGqw4y?YfdtJj)Lu$6`281Dt6%#)}QzA&Pe3w}y2-2z7F&;ogne{PU#8 zVy4E%Kk7M9tTk#XE3mOf6TSWVkxNy){r7^_B?zkARg&))~! zuT0|frFL|#pNl<#uI8fxmj5*FKiEs3osoCi+>0^q_HIz_cRid(f0lG1inYK5843xU zFW(X`kZD;`d07b)?Br%UAq;k)*M2o-(brZ~_?YCruO@@C-tlHz>ePfs+8c&xx&%NS zSu<0jp*CbNwtw2-jYns4r`{bsxE}M`!bV`+W_G~HIMp56-7hz_8{p9U*+OlqMZ0@I zQhYk0+0JOuu5A{^ajHm~VDJ^qp+vh)Y(kjO0A{Imm#pH;?`nS!8U^83(Nk4kxf_RI zCFt{~n6wm~5c>Q+>^C{y7-%&dFdb!^3=j_lEaDF+5-rf3gC9?y! zaA$a^;eC*M&)wklw^Z<|=RX?Jh&yo~j+up%twACtG$&~(dOA6F3i^77Fq%(*IY9g! zUd__S;&hIR0rf;VVzn8ibUo8z#SqO{+Vz)jiW;2C(o8WCt}35!a_h7>%~HGx22?XE z!%c(yq~Ry|b`enseLHPPbu5BV@+)6NoD(fLDiCSd8`%TOZXLn5^xsF3LJiG-I-s0X z!`Sv^Osb@RrN8l03YlF79U)6fv|hqoQW5y@jv(2G$qVq3Q1Jxw_Xv_1Z`%W{zcgGS zp&~@==cLFMyjp&#vb@3?{J6$;wW$_)pKwG4lqgPyjl`^R7DIWQ8i~M1dbG}dP?~GK zrf5;aJHNf7e0XZjMo`#k@r|_`Sbrl9@Vt8^ox3a}d}8lp`HY7TQ;TZea}R)nR#j7V z2Wo=cbSrakI~IgT1g|P8Dn@&HXb!@Wv8g_so})a9dQqA*sM2OAjCA-t6BXI*uZh0B zZs9TP?xh(fTCsfOb6hLW)VbferX1~8Oryn(9O3JD#6(4ayL$75jNY<${6=xGu=ph@ z6us`)eoHEGtX;SoT5Zn&y}_Tl&#=S}Cb9{u78%$(U(8!Jwwj!G=tI5JlX^d6$AX|5 zaX*-t8qDzDpfT~!nBm6GYgRM>*!v*v>c8Oo$jHb3aQ3zf;e*f6(r(_-=OJKm8{mpA zDbhYPTq*Ma_bN|#cJ|}$>abuz=6|_)A?v(~#eXBvk?Ez;{Qm%F!|=kd+Y^w1K4V>& zFn;k&a`DVGaBMbGHlWyC$6a$?geMX-Pv+2t1h18b%%9>V3{)zJ@Yw-VpNdZbXJfe1 z0TZ_t+-0=VTsE|6t{F@PTf*bb>3A-6(J$Ju?=gX_cA#-3>7$`=7}*FqPRWrc0_$B)^q8)iRQ zh3<)|%be|*7CW~erKA!kKPX6wW}&m~UaZl2SNd45koXy{nTU?6Y7>g0G*T@g@(tW? z;5-w@&hYQfv%JTyRv{5u=loNCKhk?nsaf-#lnrEkP(>(`4E)gndw!kgm*lqJd!M(8 z+%fpG>_n*o9Si)6KAEh{Ug4C&`~BYKeOVYAdVa<&1k` zd9D8b(vf7EqwQFjr9`CovY?_At;j->VuVcA&6zvMM`5kAxWj~Wa$$A-FznYT>6`?l z?6X{2&B%!6$@*HBwA2cLZV$BS2q#c6AS0hGEu}}t`p{*MDh@dB)SXZ zpK#e~@ejR9&Up&`Am`|5!GM!^`7(BJGdc4zxGekcht}a>dRfM6EzJEWRqcJFgy$4g zu+cqR8T*fG#n5SWb705&J&yh`LOFJZ;5$CRx@i0BjMg_Za(cy514vNAxpRvpLu(;| z!JScVREP1`rgL)eA38t-6Ya&QaP20=U|VhiSGK z`ItfZ<3_tm3k%aCq*OySQ*6JvdXD@Ny$j@0{wLK(Bm z5p(nNpP=dqY%n4gxiI6jR$*{~<>Nw1EJ$N0ZQOkCBB2*bicG{nBd@B|;Dp}rz0+CM zubT^{@sOVWpR@-Z*V&Mv-Q7Zv&)F}%W>9F5z$OYT**+NnEI}K2Q*SwOsx;&YEz9

    3QduO48U&=wkkTbBwtfE06!zG+N&T2?ZfZC=xXGPKT5pZ9)AAZ_|BY37pW?9G^qVRk)o~E^$!l_RX6Ha_F>2&;CUxOe9_5 zZO1+7_ynrmui%Z!HUHY%*2E_t!T=P_9+fMeUz9&G`->OWRr}UXm#W?4S0=s-@3FsR zIB8&Xcbs581$S}_a;kWk0QaAtlQ`0jh%!-elcj#!+3vC5#0`0z{ys?^XGWAV?P%Y$ zg7%wXC-#Ve=(ZUAbGO1r8N={uP2>U?9NyZNE3pICP8-)}{Lhia)`QHu@7B-;w2B=# zt2EV-aQM@>SWvkIw#ltZ2J%pC%Xt2AsPzPoE`Mv2rRwkyo$4&|TaPk-eSXs35UW(a zWI3Nlnq?>UVBw36nrRcC+WbQNmgEx?SLv&Yh1`Q`sFgW(h6#|VK78RwGcwCij&$e!uRuR`8rsWmY#{3%`Dx3qff>Of&g+u?7hLC6RG`8D>B~R$D!lT>MZGY(JIGQu&E(#Az@tRHQj(#4Az| zm_wx{k-#6)o^y)++D;JV%S5e)rR<}By8;Qr5}{^GptJeFjwNe- zjj~chd#1I%qVs*+j;3Pc-5vJ9i#yNkwWG%}JYJ&7#VSqV)S=nkN;rmXjcTdMIk1Me zf@q`+3yK8DjQhy;noe2V#xu5tJs86ou|DnTFJyP>OrUb__1Y=a*|q_{il z3Qs=^3ztfe%7xHMjjGL7YselcP-svPR;Vu-{c6Xbbvu z8?Dc@x&p<%O`e_-aVNG@GO}vm=vwcnAVj6u3m7j5uM*k&LBBaPrWVz&NVY6csc-*& z)A|6ePckdZiKm7Hz(mf$y*^N7kC*cnSlKGH=4m@ulGGd<_8Ku7zUB*@O&*~u3#$|= z<~AG8v77QFQd~3BRlxXqB%0gHz#{k zZ*CvsKdo)<`tTbI0{)&y`BL>IB`erdK)$w;aq>q*P|9g6LLXK}ih9tyLo?lZAR4%C- zJZ7``i?U|0~7Iak%*#Zo3~Uw zhzd337RUc`Sd0W@5OSUE`t!q@inyZh`88}qw8c{@6+|rmygcL(5ek)K zEm8)taLWOP%m(ig9i7AcHDh!>dO(zK?~i&!rxb=S9-Z%oXH07JCu`*raqzd>TW18K zV^yNf_aEkrp}WK+#G8+UZG>l3uP;Rkg`(gM*M^<2QMBu~K89x$|CvXLoE?14CgBsx z;YMrE>(~GA>6(4vPyXM(kLAFwBr8_C?+(*H!2)ixl%qyHP8OJTLGY9y6ejP7gCd-A zCL<$rw>C9XbfiVte{pv_zjg_?5YftZK`tN{+pt$Yg+S5QJHFxtSvQtJNx7hGYH1;V z3G`5n2s7Z`UakL=t;hK@4<1H4Nqmgu#m!9vn@hk$qjAU6lK|c$@cowGat`g@>xnk( zLQ6}lco=+Cgwx6C`|ozj*3iHpg@rn;8?LXe>~uDlamHYgC@M0)=tsNsfDcw}YZ2e_ z26YNF()P*a8R%}#{h+fwE7yr8dLPv=qa=8jehq$1rqgA>0ym)G=V3AzHzAtXR1T-% z@;PaQhPsTwD=8Itg&axmCfl}pL@Htj>u*l}AR-4NDgfC{1aP1D9op4AVxE$!b(%Ka zU+nS7O5CMqfHEtm+)D|MVziSjho$Ve?1OR)q`1=#VycO@jX7>$q zt*sVK+tZbfmwNY_w;(EVCCxw!T9|{L*(Skt*DnTX-7_52#&)h4_m=wtB1`UYWLca)zP_~6 z`b+ih=Jum{sn=hW2>rj{RzxE55&jcMYdy3d9>E*BF-m#rdj84$X4QO0FVasp*(`lp zxM%@AiY1He?=N@0$7u9LH}z!6%!GgtSQ>E+ccp)b;i+e1{DPYMcNaArLjNxd z;CIjU#-~V1gpTxAoMRc@jwXN^92RK_?!aTxrTh3>G8!LyUtU)~PBd$Im39w>wnY2! zR`MU}az>yyZ`6+(loCesmQi0-+S{*bIay0jts*euw0`?7QQWUY5lfTtMwPCs;(WZ> z?jiPCkz1#@3j?Rl$OSVx)rxpruDxgObgoK3GY9a?rx}gP6UXYJsFAV}*8%J2U5tD2 z;mE*S@!&kFiFOM|1NZZHf(8kr?+UoGT8(b$;^_%V%f(79T`A4Lz;Gbe;!OJF>EQ02 z`mPn1s*}m^s(NzKy9j=q>rcx{SbaJ}UF?et%)0B@lg+3@f4?aOw~#!|vf?%LR;OtO z+AFm68~yFEZRw}6`r9$knnf6Arc|FrM7bLVJB4~%cGzB+`JxWIvg3`8uwJ+}9M^y8@Wpb(#hk-Uq0 z$Jjg%z5qAKHuO1xh)sH#`rHP_l$gMsTaSlDKLYCn{w1iDAm!9lX}-O-vA|#KDi5CK zX}wr>0KEg1_q}M*9k#ru-J)b<3=Io9j2t~oFn6sY8d7}HvK3E3R#o{L>G@S8eqd%D z4>vO+y+mVT!>qCu?i6iP1!ao__ej6EU%iUjkWD_7e2Q##Sh|U2pM#yt`}*cRprA3l z-(kGHzXKI3TE|vzZ8|sv!3VFL6{sPtF{4Q8*X0Flz$XPzj8=810(qkY9eVtCZYMAI zSt3l!pg=#rFH9kr{xt(-2R(OJ*OeCGqsv)GZnjKg;?welf%CS2ax@ImIs)fPm`|$4 zrDXefO{SkE1tf`z9jH^6cvRr+>O54@X?>mIA&JT?2ATuPkl+vtxRv zI1h+S@^Y!P_unI1#V4E~h^7`3n^*!_4$)GmD2|rh#ua3Uzu6*M)Zramve8c7Ob&k~ z)@er%5lz$_`ObevSY$JZX0kSm&g$M_Dz}WMQ ze@x)w`$zOL?T-&{-! zUOK^p0JT0x1!&R@kTGTGlwpsrbQ-qKu*mCF+2-*_>lAwYL{2IX)`^LWz1zc*QFulg zs_MF=t}M(LKIIJJUaK?FqeuHfGJC%=)BbM%6(FfZC&Pu3$TK9T zPSZQ?a*GMTOIxNYr6y@3R)**o) zQ;yXIS=1(V(0j1sEvvnwMUe6BioB^q^S7UB^n0P1OKnZ9AFNmZB1iPRa5P1>A|1Q8B4~+WH%v$es6E-1Sy*HlrUq7WSe(k(Ie*n$h+k~7z_)6tY|hr0 z(pv8FHUSc^YJQI;gtlZJnG{Pjngy$9F2769AS*;k(;$pad`w6R^0@gsu^*k4W$aW^ zn245PEvx#7^yVHpJcr`2@tIP<-t*;S^4B-|{L%Wr8}T#@*AF`3)g_8)fd6ujX)(#UOUrn3j9m< z*pgH``)N`Uc{`-#;p-Uwf#J-w{VS`DC9bS|i<8CJZngZ1ye%Pr={!SEsD2K-GT6KQ z>ZWb9-=xR0OAKNho!v={t+<2bkNV>J-PFb7<&w|P*=&w<+Mx`|EUei;ZBB-H_S91z zzfdM^461xSelOd|@$qNF2Ar46eh}mEy@ZL6b?t0$O*144&y-#1aRvnZxZuHTQQmB~ic!xA?hO6@m<&2Hq`nee zeW_HnqEP;LayRu41HOj0!eB?w-%~RN#){qJOGq^Dm+y&HFPdFHaD>0=Ul!%Ww3DAb zt(_JA#`DegDP|Y2QokO{gK52nlZMpyF9{Nc=o=-x=zr7pNjNve_OrZoo43ju8CLQS z07IZ2;BC_0@WD%&rz@K3OdgqLY!neN{ zrpe>iuy^Gs$egTzU`x`GrJ~%(z<0N#j;!w>h%^qjRHiQtE6I=LBQ>bB)Ly;!Zd12} zY9B=9$OH(jq8Z^irk@BQM`(v8cGl-8i3#`VL=79icEacG2V7=Zq35x0XQ!_{kl?^0 zjtyIHU%98@oQ>^+791&&x@og|`a;kGs4Zo$bA5^ZuM$NSL7sT}=yH^@aBz~OEd=Hw|Oo|sU~han4PTw(BpJ~rq! z=44W7H+z8|TcW6Z^r zRI+MTHKc~Epqe1*av3w((nzAv?R_#)Bd|!@|EydoS;0Y9KD|#6W!TZBYWKD{l|QWfu4-G)7NEkIiE8ez;Fgx zP56NiMKW(z;Xre*b|Ch-Ir4j?Wew(!!nBAbBtoZ=%j0YUS|y*kIi*D+eNlrm8>Cpr zHs5{JYjMkRq-E=BSvOu{a?83T==S4dw%Kq95ZvCH+1?B|eRu)SUmmN^@urLruYEfB{GT&)iN{o6UrBM4mD?3PDuU$2Q+x(<8WCQyA{27ywaJ&wHy zB~7%c(ZD|#?`g|>-LgR!{CXKM6Birbc1!I~kGKZ83;^o$qPt8M=qySobncx|;z{?Q z;61^8g-0?YGR33d9P6I*>0DvBvbQ#{v#IGw#FtvSXL-}uNFtH*qUXM*Y!e=aqm|fz zC$%kVVraJ`tI_5;R`Y(8xX9Csj`|rxZvybIFN4sioZ1VjF;Rgxucy7xg{jGmea8=( zKgxG&c;C@p$HgUdHd@adIpSU&m2E#Swcg!69p-7%M(;^1h0u?NhjBji2E6R$mAsFL zyNV*1SJUJqylKD-=SSBWZWe-^d2ITDH&@X(CAx=*J>D@LZ$lYJVWlSGsXSR`TzGkAYRxJ`JY#L12}vEe#DI^< zucebDY?tLHMmi5f8(V68-Z@z##sHAbCZ-a9^H8SFxSjEAH{PEsy6LauJd}7)zejC9V&OOSAjMn6XyAj>p zbwEQD>)BZ<*0?1rD@x)v4Jubz5clrNY*bjOU}xilZw%Ph)Ks34oNSCzm*J0z=6i-M z1x-!_TQ08Tr;^~^L<>%2ut?&!{t(H5do57g5kppECc7B{v%BROx~ADhix zuIMX!_bXSa({26x$E@XWUjO@Hf`MN^{%|iDt?HmMwg%T~c?C1Jq+PP*-6&ID+4J)k zNH;WOHNepQPW*cW#JY?8{d>i-6wu}6DceZ)dYsMdBmd92wC?--^G;_d=AawA<2{mz z6WNL942T#jPUcuVgvcu=$hp85CdHE!G2Zw5N|>*N1NmB^Y8xHscq}?btzBw;37W|2 zR>G#yUe&FAen%nwuVF3L1Y4(*{V0h4UR;cj`FVF;nU^0jZrF?c4@8}`dM4V2t|xyj zpCP;{scf%$M6^jv?j}$S=*7@>x(pf}-A1gB=fT`Q2)u+*h!lY@dLT@{x=SL6xvrpBfBXO(xvHU*>1Q^ z_wny~%1+>Cf9@U$oj1~WlPIzK1Ui4f?|&Fz_8-lME9)v%F*KP{L?oUCD(+PtELwV~ z2@O$*{bM}rdlqKe+wvFL_O;fp6>SxqRvNhsB;n%Z<^#X??o!+B`<;US$Bn60UEG(( z5oHDgGq-FXFt^$AzXRGMRtNka-;mg^Mtyq8}JOD(J>(fw|M z5p%!$&ZKh`UE@__gTQz#ulb_+ly4&e_9RMuH2-w049&{Q{k1XAJ<}av6!R|S{v`ER z){JD^6+S4c?Y(*~K_DHG$BLEJGh|aNT3StQ$B2zsTXR9JV8H+Y2yOToj5S7!W%+j1 z67{>DFPc49$um7q_B6yvUM<7NUa zOI)T5J9w*DGDfJ{%j7|Of=s?Q0v1BUg!r8Roc>B;2^#U2$(M#{lFKNbbL8NG90ave zy*?=N+1D64<)8Xe{}L)G2%*RT1Q3Ii%+h65Y0F5v07oCX1?|IpbHTT@`8|7z$&-Mxd*npaNl=VfN&p!j-a5pBv-_>MuS}~SHqsqv~k%2G|Jk}C*bvi_H zkA^^gki({sZ(S+yT6td;coTM(F^m_aKu+?0))=X7yV9Fs^+59j@A*t{wbsYe-K{N= z)oGO7X{84olAh&T4{$5-%6G_WtNu8hLY227exMvcHYuN;VZ`-2Uq-UL5Z zTB`?TzIyCs4>`=*W(B(NR4BoihIIZnH{%zFF!qXq{GD6)hOYNsYKPXkp0BS?qWe6Ne zHEWj^yGCx?eCRc4?h){!W(l&SY_%EpoiEZ&pDGq&9>RB1i`|y+N&pc-BnCd#L3r^J zjFWA6B?`7jY7ia#xPw=J>zJZrwBWG}p*jcVkl|8a#0{Vf(Yhy< zBGQcU>i+mG$iT@c)1Z(d(bH}y?a{g0R^*xce+Rbbqnoe%X$(8vw0R#I{h@EAKFS#> zi0GJwf`k0OOx~S|5Iuc<3vbV!<48&Aj;0&fZMK^(WitH%-+hYmt=_*AiH^m0eN@mv zUyBwe>h+#5WWIVT<}()mH{*^|xm&|0S&tR{7AkP%xMW}bs!?~K`BNvW!5t)gST>Bg zDwa7e*lGJE#BOw6^IyN#p&f(cNL!<41BBEo0t)E$1z7o|+-=;@aAjho6m zicPg!_?rsV8*IFHhQ6`pq2Jy%tQ(k4V2gAZXN>WVI0l(eVwaLmC8W2;-MX*H1j&gH z7!9>^(-DbbGhWb9@w6sVQq@WJ5FZdf$E1XZ);|g;5*VxK3??lf6a{8Vbp0VK&{T<1 zBXlKrXyNg&x0)pyCu)A<%ogp!q;uO9i`#Xg0u1IKaSKeAm;_9~CE-`7x`DcJ=1wBK zW;R#L&O{C)Va*M*%Eumrk&<&bDC?8<6d|Xj0TN%{R0h1nt(1+hF5f^lcB9vVT>n~U zO0M?VuzTb3edM3z*>1X}wtIg`Y(FTn zqeEC20?SR2cIv&5bW|?ZiFlQ)_g2{}o{D4y`7V+>{?;GgI>y+gTSn00Y%pWWzNy^b zNY8e0Y2iRFZ0s&)_BK` zI}$ucxyKilyaOA|nZ#h~Pu!a`7=CGLDfJ3@)F8fKD!u%Gi#}8|$rxJ`JJd!iH^}ti z;@yD-{X{-nRUz|~2fFBLcJsV_tyE7ARY33do3Q56lyBVc?ajtR{Bw1AQ1sMudfmk6 zPdyIWN{EPrl3_wV2TkPTmSCTX5qH@C>=+~eza8TbTiU$zl!u1BFUSoc?1Yxx8IeO9 zQ5D?jC(3Oy-T$&;oo1@*^=kw)*R-2Vuk|8s4a4MRu& z&t*K}U}G~5pM!FqW6da1uHlxejib@>P8bxjL7*&hanZI{y_*KFDUH&mze;u)vk@C| zq!S!pUie(NFe+s`!4<^>|8Uj~Q^0N1=wWdD9X#P7%|t;?p2~jV=zptk$jI9NvkVJW zx@BqqeS2+CkL9WN@voQiEqIE%m#`67x?pdIqi{87$An#E5oTB{ay#y$)qR1%MYWNJ zGX8a3w^henO3?4tR%Gn#+!J9XWEWN1pRgLe@1BKRjpHWzZcu2jSZx7a;rrHjbg!;k zH-l1h+Kr9u-XAh**k-lRezP{x?SM5XNOv>Dvipw__f(K-y;xWU*xO1zyRynh%rYA$>4$7Mi%^nu6 zg_3D7^OKyan(cg3V=li$8KPo#3}b1TRI#;4%o@(c>sMiapTbeuhG_Qm2`XLbo-2!B9>(5@f^cW#eZuNd zE%KAR3JnEOL9ZC%>B6lq{V12qrj-CH86VQ$W}XyEXge&BO}O5#_DcoZ`z~yQH)rgF zLfPuvagj1}w`pN3mfZpd(odKEQO5Op03-Yq>UWKWE5m?=MC zC{ed4aThjY@>|l`6qmg^5`$69erV7{Lc;!95zooSjvf9%#_J#FQ4g!i3{I>e`BD(q z9(ox#D`EA~a=G{bXY{!1BZ8v&bV-6i8*f=2$QKwFBweYqF3OloB&9sv*+Qib3CiPO zBUzZqu=VUIAD`6>{!Gn}BZYxk(C_1H^-sqD2X1$H&Ng#+M)Bl;+zNyW^P-0kiZ%M< zrWtUX;yj?$_V}6`-F~o*RuP+0MyHd<`&VOPxO}QEw*|R_vx$GbVV5M^}ea z!2Ivw@0bat%arcQ4AhVs+QPH z4R873k{1p7-S|w3hK%{AQw@G~GC>mO{Q1vI%MN~S<@wbAVsOwO>@OJ4ZVL&XZxOXl z2$)?mVhe(Vf~J+HI2V6C@6*SVA%!zKw4%KHq%BJj?a6QHg!~rVxQZm=@o3G`&(Go4 zVr=<8OuYkRoNd&$JF#usXwaasCXJKEHX5t3)!0U3+qRviv27a@?0LTT{r2AfA(M4q zYn{h&`u+dbh#L{37C5$ffs4{chHXli-;9ftFgz{>_tRt_A6m7WC<0gCcI)ApKHoNK zt}4v%QI^)`_9Qt*C!Zn# z_#znH&Nr`}B6H{4{>(SOfvqoW2hz7K*d4DQXVdCl zLmB?+KR>5zNoaIK&Nfax`=9b>fBTy6b@x7y*OWYD+X@Md1qUZd|4=Vr41tCL zz#3BSe`Ofwsx7pI&j&RA(m47>0G3S1q?Nc1ssez;BVZ|9ccPi2UHO> z5t8gGhHAqCqh6dDzO2x*U2xX}AW$kwy6hKQkrxy(gsN$G>n~e(ff&9t*JB3Fwa+i8>AC&MnAYc(dr=d{LhB#N~2f zX+g@qP2kU|rjjXoci2(ZjgHINH$k(k(}c}t*YtU6HLy_bAE^F~NRj$&-E=&D$0uTQ zR5TlWQ~1={@Vj%K?Yw~S9wr3uvF-#Ng=<8k;2$03DF;75GZsznTy$i;p#PG((FPlj zYsDU`zcV4=X?irs;=SwC7 zA35tVJcH)~uf1rVqT=ru|4a-#kGW_%!szcXI=*e_~CXI`-0p`P_N> z@*gfH{xtdUHqrCe;B`M6>Qb3aYJApYet~1iSqFE==U<%g(h7#)Vs~4QMQ166j!_Vdf_`6 z$Xe=!p=iu6nT3y?^n&VW&AL&4zM;~)uptdTD*Q)SEnb9q*P*!1`VxnDuTkITjapn` zNpF!6Hw4c2bbn-THi0v)XOVR4;U^g2YlDFqMws%SNJ~MuG3w!0JtWJdJ=-p#O|=u^ zVS42Oj)X!U#4YOAsb)p!W~oQ!w?s#ZQhavFTVEcmV_A>r^eifR+?(!DXjS~DFgLZ_ z{F1Kcs56fNO8-;n$g6{F2&(-2EA0`^2bZCW~cm&5flE7vpfjh zkk3P9$EM8~nED;e0IjA;TtkL$M||Tvr^}m3qlcO8OWO1xrVYDL+Bc!rZdQkaX+e|wn3+1e$R8L3h(e%DC{UNz>^(IO!B*7 zlW`WYZs3E=pgZrqO*mqX;ja#WYMx`!CapunVh0u2SF9z#ScRkTw@%1RTL|cw2h-*jy$LbP761e~_wWc0(iJ&3x zu>)Dj7^z3v^?6>TdD6Pg7tpPYs4L{>{iMdz0w%Tlbl2S_OYDvCXX>ZRz|rT3-}{!` z%X_F&k`&tIN&Ck=*->L!E=M|86=CaN!mkk3ri;6#OV^KRihmv|tz278Kyd6f=3CJU zxh+SV$ZAm57O8QR><-Slw(Ig0g+M0jl}_CVZ=+q<4KkTJmc>O#lLQV0V>~Jy*B1&( z6XB-$n^agctMXdNeI7a|_y`h5TGhilc+AHrUiS(n1Y^TTxro|}4bqoyiVYD$$dltr zt83c$GQ&rY!Wve&O4Bwin?P1CTJv$+7BZ?D?644t_bii06=iH4xd)IB*U5z=116b) z_AdW*Itwk$HSZ-J%O=R_I1edHzXv^u1~V$cTVn8C__iugB7l|5bl#f@$1U7nKp+Sa zNOE%a@g4|PanSf~g*5)g%gqUh=_POz>6K|lcSimy07fB?Fz2Y(!yQ#OHLQjjUV}$p zu~q{8nkKN4ME2=yvRYweb?64<2}-)BVF-4?7(oR{s*c4t=l#O7!8m`(u6e!F69`VD%;yR?q6SRNG{G$CVltdmR7i!1jrAuJF#qnm+H zg5QQc!+exupgn6`p3Xa64D(9=WA`eAJ=Pk~`m&Fh z(q93YVLI^FdYk4-F>>^1eFY1Pj~0NiG`K9Yiw7eLAbx}hBb+k37gXV6{-(0;d^tIW zpr+-dz{o-I332XVSB+LdJG`b)fgOYS(p*7|w!gUuy;vW;Yv0mrZW-UBapt1InhO1M zR)gycL*HM@TU#z^()pJsulJmVcY9yjlrZkVbVoLwa*7o6Fj|)O8GC0$3;QeZsQm=v zX%>%Um}YHxjZB9c>m64%^84a0v1u;_XhKOOmrQFGCDRk5-{Q&Ab15fa;tvu4ub`QMRHG7_Pzt)#!8tp994({iSF-Y z9?OCc_dKTGMsHqnuFwm7PGmo&5k1ia9D0l|mh`>kkB<1Ao$n$>uG)_5o+dfBQeH_@ zIy7qZoO@oTuKtUnlX!C|cC)Wtr>oGGFdMx}W{sFz;rNH)x2QQhexp&_qn47ipz3ZsnRwAJMj}-ebD#(8foU+Z zTwW9S&)n^HnZ~p(M#grE1&2`{GVKrz-UvJ8iI4(0Qgl~scRmG@38q=!j2+iG@+BX1 zyo+MAht5wCpZ>?zCJ2;}B*@U2qGlleOe-PO%)oGLY=UGoMXY-4H|Zx&sc#^5_pR`+ ze^GYNuK@?6TltknjF(>hNE!`BQL7rHyKKS zz$UA1rP&9}5$9O+izwB4MoKbksMREstZc#sFRF#gCaw**;6Cef1B2v$-pj(+K6f7E zl35wV>`Qo61aeti~}U*>EPJ)93ynK)d|oWznie)DXB8V$8i) z-yf;z(tiG2Eq7as=TwZ%(eTVzj&-Vm%QJ6*@;=I4TY+ZvrWh6_dlQMpW2udiz9IQ1 zbn|tWV3NwBWG8Z)!xg0Y)6#Lp=WPr)WesKol2Vg4KX z;!jdYi+(+m*HoLg0O!@mVt{nulT{i*yels}r9qqa5B|vgL9yhB23O1rPvc9a@IZjX zyL!50ph|?rN>n*7U*@QW+lzO%boaR`CD~H)nCW`PnWJn-{jd^qgQb0?8G_Ub0R1=6 zn{z@tUJ7Oz8)ouas9+SXFJ>H%dl;@8j~Na?g-_Le-_|k78hyH*oDbT+jry=%>@@#0 zQVVtrpy8qHRpd*?riapmVv}+?f`NDQ_3LGTvdoXLU&fl3fQKGLrw>w)#trVJ*WNXYR; zvrrqHL;osJnY!?#^(AS?8svZ54UrZYaHdw(z&>&G35?2y$36bX34_fK-R~FnZJ^5@ z#mBb638cF_N>JBzKN2`2Nrq$!NggNyPTa?~e-VD98DcA4@A~|JyKL&|Ib=0x+fCzC z0=G)n!k@*{*taRG2YS+{IzMgs^?=roNSzFx-v;bV-ItTc&HjVhl>37KJVM;8x9f9T zZ@-C12rv-9>sPmpoX`7&3A|g%4M*fr=fTY!Zzs_R@6Q`Dzf?vt82YCTw;HcQ{;kEP z`p0(H_x4A>r>>`sx3|tkg~1lh2e5;13*!czOC-$uzxau6n{LYK7FbhGy{0Qi=^uPtho=p67QaPjno z?_|JxWc`&9f(XW2K}trR}9L@ z^6%BH)0!@Y!oB%VOfQD(TE8z!Mm3a_jOcpC8CTRtxC8-h4Fswm%`{uU!nic=MSD$5s>VJU)9%LXYq1wIs2?Z>Gn#BpB zWq4bVfUj97ueR`6coKrWrP8h(MusIlrhBar69a@m$nlpovB;3Tc5UDpa^) z($OFGKU(KFqr85Pm=r|^^6_g2 z*-K=*iTw)iuGn}4A%m437^sl8=we2fvTcc&VYPt-IGE~6sysUPhT*;yZAYa~IoryZ zhzSz3TM$~zjbnC~IgYUp_|WE$;vP@)^R?LK;aF&dB?uDTItN3p&hI)8K|!lIv_}M$ z+=Ptg>Y_|T1a^At{rmV5&y7cT)Sbpxi@Y1RPMdn2zqD@p=l6q&2*J$tEL~a@z?l-P7tJHW@EVF_K}Ii4dZmpXRpv}Rqqh8zgRc_ZLYVw0G%V_8C@r-K zZd-4s1)-aTU~bL8^MOQ%4W8{Qr2$8BLKADG4K5?4F>`K`nzJKgVM3SWtxiS9L6I3t zuv1$W6VKwt!I`RNRYwEeF!VD`=PF>o+b~uZ3iEG1W=mryGf}y6UE$D*66#P@WA7L2 zuNf&+Bg@)6>ji4<&5X5TK>Q0F#-bOU=bRpP0?CR}C_~JqU&&_nLN&g!YZ-_nDT?}L zdw;9!(YCagaJMuqRGa>i`1j7Ot=%lP`*$<{gAfAX^3Q6gI%0Y?S@|rmgooj(1pWyT z#tHPtp`FXY9*en2L=nR=fdd3X%3?n?|19MtlFZ>)Nm zSjP}bgRO&Jn2fG3G5#av0rY*lxc-6GCZ7{aD?Q)G-RmD8)M7*zVht%qfmnu|c%w1l z-AVb7JQa0uUb8NAAec_wR*nKMpe37>Y$hbq*m^x&c~ltO4yqF=5jpx+A783}T7=SQ zJcZ~$-3pnP9zflnYBjcpKm-_A1l)%j?02ok3K()#BNcV`ua)zv9`T&CQ@Vr4DIro@ zNAjo%Bq7m<9J#Z{&Qu;kmu9x}*|HjdwrYjF7p_sU%V^_&DtZg3cyt!s14V zzjATWaF7p*O~=abWZHKh93CAu4F{Y*J!2WTxn&9NVRm)d`Pxl)eGF$_zP%`#Mou)< zk+z>zcYsfJ-g?cy!7ixo|D5Tj7;?Hn&tHjWUoz=Mezd+zz6}-kEEX84sW+~go`fwMc9y?(YBjNlNyM4d zRhw1dr&fW&kc?iCQNCF1a5B(7Wa75|KXDIzzfY_x>!R z>J&*Ck)mDZr(z@ED?w;aXC5vE0%x4WnDH_SGBp?JoWi@PT30h8&>8!erdz&0StLOW zCNm6y^^e9rM==H1vopdGf-|Lj;|Z{FJ}Jn zXesqzslrZzrelgM$IraZ@Eo84VcI!SGYvHr)aEgcw*um0O|Q*iSO(mdu;FBu^-Ur* zl-GU*1uN%L}MQV!L|{BK7$W#wO3L zcc7kyyJD0dd3pFyT!n1ad;aX~R^#K}9q0JZlZn&a3c+uPWH$*&;f>Nkyvu)K-jkvN zNMYXC+MKo<9#+a=`@(N7%AA&^q2X>iRylWbU*Kum{np2aK93+ba|qun{W8Fk443D9B=$ka~G+IVmG7>Z!-0xA0H;(-szXrooQ`-s+B?Bezk7NU%taj zUKmyZa!Qh|ozJQ9mVW0hOq!6Dyj1+&{rbyJeYvWTN*Y`p6k>;x2B%wHa-u*U#nXm!&e3WeDe(1(U+yuIdLf| z*)xcK1xZJeh3f=D)+AZl7xa3mUVc70TTpv6$YO5U4SzvoNzcT$9~1m{sbZpKB!JCC zY#K14@TVL+oif*Mdb4|CNp^Zw$FaW^xJCl779T2ouSODlMcQ_r*ev*ikJWJ|E^Q_9Pr@{|V!hX?ALr2d% z0P5jXgdnC6u%|veq7RkF^8oriciDNqahxakXxc9OjwFwU(jfHGnFq@m4pB-B3-Pe0 zxTFU_uqidItiMIjw*2Bd_zjy_|5w+*mL5TJL5Y!z9@u^6JfU5>?&0|l#R9eyC7b0i zEvZq{R7~V0P&!Z9G1+NIjS)u>?VPU`Xy#8RjSFx2J(u6@oCcElPy?}DsJt|mvo>ra zl$qF+g2-OI8E!YfT)hjk~{-Fsfp1KTs36+`u z%kwjU7QIm}#0n1TNs$@!=|f%ide%Sj7kc=qEEornJ;(? zeyCOLVmNE`y13984}(}Tm1PM_YX-H?7k2;qGHPe}`@#a44gXfBUls9-hoAE-B_&0| zv;%b6VH%lv3}YzU>aI8mHaB#{3cV@q^XxJjhyUWcprxae2%JDQlQS!gIykS_(M)sW zsowg_{==!57eGle?o&`uVE1d1*)6m_Wt~Prr0;5YGD;QP*o22;Vr<5wv%X`*#poCM z6P$>Y0M{*oU+Ru+>v4;`Swv<+=ZI~OH{p(D;P8F=f^8jG`@t&qweu1e7gsL`-_)V^ z4=?)#Y3rvi2Hs50r{<~0q+8{Zl2k@o7JA&`5}7=6b;ruexBuMpC!Vb%v$Ggw7ou#Y zKFJ1S9d27*iX#OZty|#t-;%t7Tfn?ioDH=^I2HwTeIAE%T<`U)<=&&N<^L?$YP!5O zRR=RuT(zt4rD$kssOhcDpsk1|oS5gy<}s=(1O+j;d0MTb6nd&L z4|$?tLWDb1-nfS{v>WRUXU=4x{ewCaN9=5bO>&CE>Wj_i3PY$|82;|uKf+74he#Ce zRfZtS9VLJ>?dD@AJ?7znxHwfwvm*63^j+&rA?EOFb{Ypxp)mhn*9c^OiY;69{BjMZ z>L1e`zshI+2>J9!BOe9Ru+zG>s3VEM8tI#xT!u*7o);; zqcQx(P>Dg?lu=GedH1>8->-E@szQ+a^MEbh=O2H@NJ;hDve|)F)$zckk~&L^7tuPL zFl9)0+8bpQSB_r;-j86!Tbce;+AE824u4nTsNz=LN9^Wc56qD1*NG#FkHyb?Mz2JA zi(DqoignK4SAJ;TkJ2eA9+sd-lrfB|G7RGN3A_FpQqO4el%d0#wDGV4+%YQ{7~Gep zi6FbK+lJP5-7J%%SYD?-RVZ^guaHxy6%nSXxn2`)O^3o$2q}W zUm!xt@VXMP9Cz)nd$%dZrIw^{Jz+P3Pr6X=e9hTO)tUXjYvyb)f7WU-#L16|mB@QuII4XzAE_ZcyiKNGIc-De-kQr>UyB{~YcD&D7GR);y; zKPm2DvO{a4ISb%V9skY6elZQ|E;Donw|ea0JL5a|_sfhWd(Uc|xqEed3~c5YpE%W( z8k@60Pw3ELGd&G?C529!a$+L&j|CA6Sc{j@OD;9NiR$B z9|(mvvlKj8Bo1ZWLU>nst3(XmjK2xB(^#sLzUFSZcq-$-NNzVoFsr_3X8ox0d>@X2 z_a0MKR+}xg=>4m&tNYJ`c6emtuTn7*HfgWdh%*ar1m8c$EViI}avvrc@B}DO#@Qb6 z59NaCgZ{BBE}mgrw*e>hR~$39i<(bs#*X}!pv;Dj90c(zl7tN6AOYw9W&t2A{Wk5P zsLHJ-^3Jzmfo)}u%)^tu1I%?^_a3#ID5qXhui#J-FSnEnIQ>h0DdsKS53Xc3;T}UC zrow&!AZg9l<{1O>sR{>(>g2oiYV{T5#}90Oi(V_wsgV{h0Q-(UM0PsSUwoju`%6qoa{v&TEkoe-+HQ8 z1pcfbM?%ORQ^z^u7Z!cW{QqXqG_L=sMT-71ni?>lDg{T&gv~Z$LRX2|+`3g#e0Dxu&<2_GcIDgd3DepGO{6sIdxR~JPsnC#WI;lq;p-J0wby;%l>FN=?Ap`o~L-_m>VzZ#mMjt!|1Ma^`9Pb^K*OBiJBc% z{I2TfLg~p^YQD7<9@ITu?2Ni>vpp?JbF8H2W1dPJO;AE%&}3lpVHKi3q+!M0gGl4< z3Sr$9TctK?fqcv<`~QRhJs;M;pNhw^k>4?VCym^a*cUI7cSk}noqzwa9-kS2H5_sZ z*jq&Fen}ShYrLSoeZPI_Y12ej>l7M#A2@+nTHCS+wo`>lc$ZP%O4D2Pj2=Y(M7uAr z65mN;*s5bKOjDKUrVe))mKZ?OjMdB3QwHTz54BG(>Y$r4YxS+hxCwL~QFCbC>9y76 zLQsqql*h&c>+#WuDSx_bi!SvQB@?0 zzNo7wt1HAa)UtKf_TAb3w)BZj3Qxw#D9<{&jq{^F_2LE`+j-pP86D@dp zRMG9cjE(0XO@yfWbjvKek=lN5Z2Gwi7l6d`|6Q@~ay4Y5K-=tYpNowDNgEvtM8kYI z41RF*JmOi8q`PJ3VfJdl3Cq04f;X>Bu3blZmj}XTd-i7_uiuSF1KW&eTkrGgcA}RNGM8GT?l7>`mzjN7c#8;9yg zE9mE8Mz9Yw>CR{mIV%j3?8w z-6<%c_bhy9e;L26JB>&#@6lh&vEF-LA3-5Q%O#uvN$S)-nnhd63@E^CH((Dw(Msf^ z@bdBUo8(8tc=s)eb_#b8_%(Zewu7#`-!7YTntDZJJ}*xFD#u0@Z%{dWcglmQNC!<1 zMQ+n7Wy!ts#Bu~`zcxDFetZtt3PXB{WNC+snq+3iSAWyI}vblie9}oMC@aA^r~dp z!nm%Em%|VPf3#STM%Z~DjW1Ytj}k;aMM3`tgISqg8vKrxLC0%wK2fakSGhX(=rK#E z0BlM!Bvf2OxnO0ETUQ?BdDXw=t8^I7MammflPrve=6(JwHUa_Vsj1#yk~U&{?iR#< zhDV3m&;edYG&WPlN&nRWNL87uG35*ilB7x_bRwW}lJZ{HN2OMaRHS!C>VX&bD5V1=o0oV!tYXTU= zuTZ?^ba9jhg<{XVOth+K>ayN+E?{%&uX{vIZ3G-?%R zQ-ji+;gs7ShI~@0@v-|>rTWLDq|ll+4_Wn~XcQ;X=6DH_{um0UTKeSxciS z7G{-r%?12{2MA?0NlQPQ*$faGk}9;Eav&_*(i+xvqA&U@LNDwHKuUsLbg>-+k`h`B zlf^#)kPQI(3ui@M&04ggRkN#FD92B_IHTMH)ue{K)(PyJ$p4P&a6zxp__IRUX6fio zcO)Bo1i7e`=yUx`DXsMYGYxFlI|f5Qz&ONdKIj~~BY+uA8EuroJ&TpKDoAj&{x~ULu z-(vgk{iCl%stR^%BFY>a01a1DIdwyrnR18(3FZUNxy#vQ=oX(o@1mj~ zsQ#RTVi=_ePLGhOyIUWlnQM^_QyJ5+YsgFRTfFl?>FI;9vksmwFhS0`t&pKMGd~*R zMM}H&0|*i3DzOvFML-Q%1)_Y0%#nQ<#{!Y>$N&5uE^{WK2r$=!cMOA;OiPvea28rD zF*nlstDW({HDnkiu6tB;=BzE8uO3`ZerCm8$-JU*iI*LQNpr+ChO?$=BZ*U53BPn6 z0Zb}e%F?lI1-r*-_NGzH=IRp_Env|;V1)X=L)+_Ub6D$z#f%Wx@9CeMmQuSB#w#MI z)XbyV!30!lGKbeD9Ls+_a`T0o*wF*q3r3OY(>J%4UStx9m{%PHu7S~yA4HF=tQiu| zQG;v0+QPBDbHj#*-59)q>?na~X?o<;?5S)mY^<=lOr`VwW=^cr5Owgzm^~^0SuYOB zf5Y3q0@z5hSbLYqAz^PhbAl=YRXh@Ethn~i>8o(C)~^|AZ0b>I_zIm4Os z;D&N*1PobkEYniXtorIVQlI)1dUkN7YvOMIP1qKdAnw`!2{y2@%zigz;2o2P^d8i3 zcVlt(RMYVZ#%Aq6FSxvaZ+ZmZYxJ$dOpz9Q@q4|UT&*NvU~HlqV1~Y=4E(J8Vbh9J z90XbXjjnX--1y^a^rInQbZKwn{q3Jdh>A{QpHOyBeCkv>8+-^`%RUDKPdLYUZyz=@ zjI7rnP0F3wHwjM{H3<|@R!69Ol{O+KlVY5fADsR0)ld6DN24aBC}~+d)THLcYf= zYhV{TnZB={Ke3gzTym*kGP!u3@$hcX2zE2CgJ5KEesPH4UosIZ2BYa zJn_C25~HlVAZABmUOc)+iMdRf@Br@on^Go#9++ouZa2M9n|OY;v=#b0h78^HnB?ai z0-*Nju&UqI=9dJ{(TF9|f{7Z2%LJk~!dLektz5~(Cx1biH<=Z3%`lIs^noINn0RU>Rbw_v z*PuTkg!CVDv)nrVFo#iQHyf4^a~8wz$d6!HhsuTDBkhIvm&zV&ccvtVO@>_!@q)od z>?L~-DMWc1Nn`j|+=5-w1t=_~HD8CW&B(^bb)OU=2=i_vvX$wWebO{k`XQ}GXRDYQ zb5KgovrV9EMQ8VeGN&vEKb;jY!7qQfMoFa_-TX-R13?L>oTpyX*6qF?4F;DB168}5 zNv$zo2rG&^f5jbbT|IzhDg?8p|53X=;D@j2`q^Vn)yRy3k6$4==2Q6hAq&=gwttkH zA!ke8m>2Mw=haDJ$j)CoBA+b)dE7b6rq$*O8V6jLW4qs*27Cb1ZD1r&_+=^wsGKg6E|BQ@enX0P z1q>Jo>*&0q?zA|nT_pGkcnbw-sDkE+9_ zjVNWyxU=3!3xmR|nLhQ@MilXpHxnHVB_0^QW4jEkBQay8>RekUNyp2O&dQa5foLCD z&{&dyB##f0J9)L*s8Wm2cH4A0(n=*7=IHJS!DRyqQQeY!f8(GQI6)IlZpFfRk>U+R zil=8uM(N;4-dAI|Wv882%F^XTa@yQEsiUB=8$%+7$@e9{WnsqS`px#37AWKX$E)h5IK;nvtVS%%9Qf9LkOJpax>0Uws6c?^rY z=Z<7is4oKV-r*NLRa82A$ex4G_R#jWWUV!hGRzwxjMy&PrX2ilBfm|ZkMDAOgA&$$ zt8CaA1bxl#pwyYbT0X6p`#9J|KtS2X!lN z@GJ9gyb}EvRJS(>GxK7fWF~)kb?f?XlN|y zO+_Y&>{raAbgc1x@OFO4enuYh>nzpQy^ARbw0=R<(TOc1XUUY7j_2iH{<2e{Ty~Ba zlCLvHR7czbj4)rOCohZ}*1dCplj}GcLs+@7GwbWvauq@awP1~$4nCe@zVO|Y*|ZnC z0&J26{c!-{25v6NYUuZd+-y`JGmM_%3Rx zRysoTYYFH!fvfuXYg1v2NQBY8!(bNiA=rgkRRtsmHcB#4N^nRN9143Z;Y+-N1h5O0 zB~TfKtHoF^GE}^R`!jhi(aL0w!g$M86oXZ6vz$tGB}LVV!QsYnkIchiLhGqkZauwR#3fj|{$_ znz16>43edc-tsA$du@$jc=uG(l0YKd9%|Co-%$LYzBN5yx;5Lc<-Pr)CFiDK&9D94 zLgh0+3GM{SiP+iAmHb3OKAPUh4Lzk4;8BW_%H*P@g5f2GN#)zh-NKAhw)5+s=o|yK zx&$@9qp?i+!K^%trA#+>;j)NsurjeoCc|e&hC{vZPQsu{_`9@pWRfx^g~V>exC3IN zK$T<7-4p4i@X#@7iMsOaGN1f`;BHH9J>EQOQC9Nx_*$thK+-dYGITGk$ar>YW|~n_ zsu)(+!0#W;>nm`VU^@4gC|F?UxOlPqJoE49e}v=j?|))#wAz1*#nF+Bc%E}zO9){+ zX9ZkKo^n#AexN{zj;nAnu)H7hk5rI9e7+w<%CzRB5py2!%}WI(FfFP^t3`+ND%9HX za|xdQ{s%Q(RX`5oXttte#Z`tZ!e%5$EBhqUeP<<1U&RS4rXB!4*os+ctM%E8y+pB? zenIjX>7WcJt~;llCeaz@{q959@{JS?e;05!aK2l=_%+HF9jbQPjQJ?75~V1(rs&E{tknG;1`V%8uRC3@B(aL?D`hG(pv5Z#n`XWN+p>zB_q4r%O{E=WvgLqYO z9Xbco76cRWP!~0|q5>+JX4XVO32;hVUEoWHvTM z=I=ovbYr$jBfWLKBfZ0t^_DxjhK%Pk_z{$={Z9JJMB@fgBcdlYmJsEXE2eWoaVGUf zb5kCy*4{dJ?BN*5Ope3F;j>w6BG-b`W33VSRuzB_F5e5cHzW|zi>P^ByX3bdsrSG0 z`@LJmlA*fh*M`_$tF!ix&M{!$=@EmOpfHcfoB24qvbnA^-V9RY+IA(hXdoo*=&7@; z$CS>b?KzVfZ@icW7aCkYfph8bTwhW*8Y*GLcu-dt#*zF6ym2pBBma)&jWen0TsHr1 zSYj;L?u($OdRCuxNP4hMg=5I3=#_y^Mv)YV z7upY4WZfPeMDARR@=#7oRY3qk&|uJ20ZjMa{FJT~IrHi#z}Vf#`w+OE>FoRw=|y@f zQ_UIEq%wfl)i~>AFwEPKpD855Exw+3L>|bi{MpQb=^t!rYAe-F$kLx*%KzpPIb3J{{M|s3mB!HiJri_lpLKRLGqCd*cxwJB9 zcBTC2z`xdh5l@z7WOzeS(Olh{nlW`qj^U;5=k2^k;C=4r(&zgYch;WY8`;NQ-k&>- zna>3?IJlt*(&MY-WVU@oTI@b=VT~>&vup0`yc|BRr3hdj6<0c34l&b&TRNXCduQ^1oeIhy_m-}%r3|V-7*AJ zQ6M6nw(RrB;${?;=j+~8zlBkYdm6+lC+ti%m#IKuX8$Q2zi6P9i{-$Mi@pz#6v^VF z@BKX_Of4Hon+;CXsTX-42~eo*8s{kWA1;>TJ8LySQ#zPXp;N=}ci2FCP)d6J!@lZC zGErr*G%17kllhv7;}4U-!XK%GKoq#Hw#?Td2Az~B563J((&r;1>0Xm*g#*FOIPWj5Zs zNDfJJ{?ELiGgfQ)bmy469Ge@}|+)9FN_@lve+#6V(}M$ydAe=Ra8qRBZJ=r+5{of2vWTj zh_Ut$aj^x#&D>M&bjzGehC(L?^RYe{IVDw}BK{`G1U8V=1kswGJItGsakA#8Jd_bE z45KO^{)F_ixPL1c#6J?P3kxPY12WN@_?U!K?3EDBY7y>Z40Wm38Cv^vwuvu46Q}l< z9Wo*={EU52!!v+7i|ml2-K$S;M0B$JygdBs7dL546s0LklG=>Gi@YbDGzzylhmeV_ zNN-oVnjuV0Mikw?t{+z8{zXbs>^g)^5?NgAc7DGWThdO4XdZ#*6l-qKzi%_CF5L9P zZp&|Y$`A{Y8&EPyrXLDQnq==^)3c2nq4ls=v?!Z4lLUvDy=q)xu{w90 zcfEwassi{+)8an&zTI^4D)1%$%^-cWh#^#Ik>1v(YCWheL+YQl{$@q(12KrhHIt6` z41GTHTXCpIt0WvtY_9$ifh%Y9V|daUq=VJLW#3?6;g`6&ANh=Dd#Jx9_odl=tGDk) zp6mBAHXF=M4wu)Sq62boN)&@h@3-ie7KUC{6AQ53)F8LO+Yfc$k9g6K;M|Y*)1J+D zgwJ=MT|!JONNofEYgxL=QhJVb(;b)9TM|d^SZ2NAsOT^EW|RhzAbKGYB{G4ePd}M# z;UJov1)fHu8u^#WniD;M@UYGxy7E=6q&}DXUvgURyMd~5E9f}L^r5)r1G}{jgHPKp zpip*lyk6aeacWa}s(}paN|J=02d*(Y5Sn#USQYvBO7Mp3{FGcCJokz^^d7M>b2TBz zC5abmi$7;3vMGBDf52-~}?I zksZ=jMjMY`NZ_k+ZX-TwOPvV8Ss;xF)Y|{U)L8|^5pG*}W^i}+;10pv65Judoj?fg z5C#|^xI+R2hY;M|CBWeB!6mr+pm)x_b*k=bKXi3A%gb)3Foc zl`IDl>Xr>|<6op_OcI6QyiF(8px;T++`{SUVxT^ygJL z#jalY*tah^ee)8C=fVAM?lV!L{^)SrR2PG(;tI07WE8_xFl1<89x3ctaoGzU36YM$ zahB|)M;8K8`@531m!CzJ!t>E^kYUC=r$p#4np~0sg9u;-4YlRuB}+YX|0T!(*G7Dt z<~SjWIv}99cgS1i(jQ+OXl|>NHtyRJ?=)%7Qt8rlJo4=Bpry^c%?AE*T7C&4YE!yes37cRj5D=uV70{%KW<5rQc`8 zm%>%E5l4re)rw_r53{;DJ}$l=r|gA!y-*6AnU@Y#$nBf>n{X*JLE4m5P z{aH0L3jOP1t`X=m@^`!?UX5zQmS+0>sZe}QVpZzZ$?MDVYrgku;*|&W8`kaD#M?HuW8Kjo;&~u z0LzpGAw>RW7n_d|aw|iAS}c22{!X5@MjvS&Xb0gaqmj zm@LO*gM+*>xbSj3uC5fj2K-=ykGIB_J0pJbk~wY1%h3|up$1$~^3{-fCn?@bBw89@ zc3lQ|Nm_ElvhFWq8bG6`@o6&b_-zANQ?vRrRL^*V&BHIT9%|d;hZao@DeY#cn|X8| zOQ52K)Y@l^OMKmoalpWWK@t|Li*|nA5BZ)yrYu~7N|X3{PY0Pl%CVUvK24=}rm}zE ziSOB0Fp>E}21{ydXfJF*n4!+)IOL?HFbbzqW8ALI&~xTI60S}~W@-X}p|N5o z>R6xgmBcN^w?&I%Grz!Xfvx+U)Vclbps|u6SNm)D9HwBZXfOG57qjm80J(J}-ylpr z2oZ$9ubRSBDW9hG&xVuRrW1YQo%!q28r ziSbxUu8B~QJ}}U_`zx7S^(fJZ5k;BkV{&-?Q7uzMZuy@~%i-#I_5m>`jt+RDTGQ4a zreSt~^F1YP9&fT+hr@jRN@CNh*Q*7>Q=L=|_Jv zHZ#elM}c+OGrI2nL_8S73d#Zs*f`CJMi7nK*yDaG~1djw~9t5Xj1$Lbu^s?!xMZRH$gPWR_;0?IL{QvY;a*H zhyIQj<=FGN?r`R!BBvwp6|~*#f{~rKc0VKsH?wewzQzjo&h`NGEj2F0h;668a_zjv z$u5DUIC&bvp>VT`+0#=VtZ<6Q%cp`y?y^RoiZ_hUbP{&fG~X}D`B(~eN&z%nk+L9T8Mo0NmjM#Zq4lx^6l0myqs{$!xHxP z--C3gTN~0x9KZkVA(<`2pTD5uOuOC0L%57coS<)LFn>6u!zV^WSij$L4{twu`TP6> z&TveavZOwDOQEL+&?*9PM7BfUw!THes@4Q%NA_E%9hifRWpkzXrdvV{gm^`dqe8L5 z3tK(kPQmIn+0Z)$P2MV5e38K<_=tH5@z*z2?oTo@FmeBxgXUX#tKRq4=iTHXL`SVLT2}8%Yp?Q*7BNC5hu4q%jtg|C>WZbdbbvlyGIn_Sp zbb)Z;yDPQexbAljk>B4M=rza11_y+}eA2GMk4TE$ITTqDgqt8?wgVSRV1&0H7phO! zRWN8SUvR_%#7;D{Lb@?CNV_99O{&NJlA*|%UkSHusn&XM79X#qDj(O6o+vV3UCz$T zpOCi~;&0{f@j+brwJPvBTCVNtsY=727`{46q?VpyrSNIDCaB@dTt!t?n{vsHaal

    m^1w&5oofCGfh;TBd< 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

    af*bdr}E?|NH2{6!+rm+684bI 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 Z~|0XVY>>WCG0zCdIY*08E{In(CS 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�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

    ReI4!V(x)?~2ax#g=^h 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∨jos!}o;T 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 z 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 yYVsB7*f0kZUAGDlaX}}@siR-- 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 KS+ESvzn*e(0{8ih_EJqI^XDG{=14!e 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

    %I63RvwYCPE|dOmOe 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 +uGfm9$w7RCY|)P@>bV! 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 z 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 I?ey3G0@Y#HL;wH) literal 0 HcmV?d00001 diff --git a/filebeat/docs/modules/palo_alto.asciidoc b/filebeat/docs/modules/palo_alto.asciidoc index 9c0a1fc9c03c..a387ef460aa1 100644 --- a/filebeat/docs/modules/palo_alto.asciidoc +++ b/filebeat/docs/modules/palo_alto.asciidoc @@ -121,14 +121,16 @@ in ECS that are added under the `palo_alto` prefix: | Device Name | observer.hostname | |============== -// [float] -// === Example dashboard -// -// This module comes with a sample dashboard: -// -// (TODO) -// [role="screenshot"] -// image::./images/kibana-cisco-asa.png[] +[float] +=== Example dashboard + +This module comes with two sample dashboards: + +[role="screenshot"] +image::./images/filebeat-palo-alto-traffic.png[] + +[role="screenshot"] +image::./images/filebeat-palo-alto-threat.png[] include::../include/configuring-intro.asciidoc[] diff --git a/x-pack/filebeat/module/palo_alto/_meta/docs.asciidoc b/x-pack/filebeat/module/palo_alto/_meta/docs.asciidoc index cbcc0098872d..9780f0025084 100644 --- a/x-pack/filebeat/module/palo_alto/_meta/docs.asciidoc +++ b/x-pack/filebeat/module/palo_alto/_meta/docs.asciidoc @@ -116,14 +116,16 @@ in ECS that are added under the `palo_alto` prefix: | Device Name | observer.hostname | |============== -// [float] -// === Example dashboard -// -// This module comes with a sample dashboard: -// -// (TODO) -// [role="screenshot"] -// image::./images/kibana-cisco-asa.png[] +[float] +=== Example dashboard + +This module comes with two sample dashboards: + +[role="screenshot"] +image::./images/filebeat-palo-alto-traffic.png[] + +[role="screenshot"] +image::./images/filebeat-palo-alto-threat.png[] include::../include/configuring-intro.asciidoc[] diff --git a/x-pack/filebeat/module/palo_alto/_meta/kibana/7/dashboard/Filebeat-palo-alto-network-overview.json b/x-pack/filebeat/module/palo_alto/_meta/kibana/7/dashboard/Filebeat-palo-alto-network-overview.json new file mode 100644 index 000000000000..6f8eacad468b --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/_meta/kibana/7/dashboard/Filebeat-palo-alto-network-overview.json @@ -0,0 +1,1107 @@ +{ + "objects": [ + { + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "1", + "w": 24, + "x": 24, + "y": 0 + }, + "panelIndex": "1", + "panelRefName": "panel_0", + "version": "7.1.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "2", + "w": 24, + "x": 0, + "y": 0 + }, + "panelIndex": "2", + "panelRefName": "panel_1", + "version": "7.1.0" + }, + { + "embeddableConfig": { + "vis": { + "legendOpen": false + } + }, + "gridData": { + "h": 15, + "i": "3", + "w": 24, + "x": 0, + "y": 15 + }, + "panelIndex": "3", + "panelRefName": "panel_2", + "version": "7.1.0" + }, + { + "embeddableConfig": { + "vis": { + "legendOpen": false + } + }, + "gridData": { + "h": 15, + "i": "4", + "w": 12, + "x": 24, + "y": 15 + }, + "panelIndex": "4", + "panelRefName": "panel_3", + "version": "7.1.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "5", + "w": 12, + "x": 36, + "y": 15 + }, + "panelIndex": "5", + "panelRefName": "panel_4", + "version": "7.1.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "6", + "w": 24, + "x": 0, + "y": 30 + }, + "panelIndex": "6", + "panelRefName": "panel_5", + "version": "7.1.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "7", + "w": 24, + "x": 24, + "y": 30 + }, + "panelIndex": "7", + "panelRefName": "panel_6", + "version": "7.1.0" + } + ], + "timeRestore": false, + "title": "[Filebeat palo_alto] Network Flows ECS", + "version": 1 + }, + "id": "e40ba240-7572-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "dashboard": "7.0.0" + }, + "references": [ + { + "id": "091fe860-756a-11e9-976e-65a8f47cc4c1", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "87f30f60-7569-11e9-976e-65a8f47cc4c1", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "78e7e820-756d-11e9-976e-65a8f47cc4c1", + "name": "panel_2", + "type": "visualization" + }, + { + "id": "d9cab170-756f-11e9-976e-65a8f47cc4c1", + "name": "panel_3", + "type": "visualization" + }, + { + "id": "135930b0-7570-11e9-976e-65a8f47cc4c1", + "name": "panel_4", + "type": "visualization" + }, + { + "id": "e46331c0-756a-11e9-976e-65a8f47cc4c1", + "name": "panel_5", + "type": "visualization" + }, + { + "id": "0407a3e0-756f-11e9-976e-65a8f47cc4c1", + "name": "panel_6", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2019-05-13T11:33:12.420Z", + "version": "WzI0NSwxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Destination Flows Map [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "autoPrecision": true, + "field": "destination.geo.location", + "isFilteredByCollar": true, + "mapCenter": [ + 0, + 0 + ], + "mapZoom": 2, + "precision": 2, + "useGeocentroid": true + }, + "schema": "segment", + "type": "geohash_grid" + } + ], + "params": { + "addTooltip": true, + "colorSchema": "Yellow to Red", + "heatClusterSize": 1.5, + "isDesaturated": true, + "legendPosition": "bottomright", + "mapCenter": [ + 0, + 0 + ], + "mapType": "Scaled Circle Markers", + "mapZoom": 2, + "wms": { + "enabled": false, + "options": { + "format": "image/png", + "transparent": true + } + } + }, + "title": "Destination Flows Map [Filebeat palo_alto] ECS", + "type": "tile_map" + } + }, + "id": "091fe860-756a-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "290685e0-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T10:29:49.158Z", + "version": "WzIzOCwxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Source Flows Map [Filebeat palo_alto] ECS", + "uiStateJSON": { + "mapCenter": [ + -0.17578097424708533, + 0.17578125 + ], + "mapZoom": 1 + }, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "autoPrecision": true, + "field": "source.geo.location", + "isFilteredByCollar": true, + "mapCenter": [ + 0, + 0 + ], + "mapZoom": 2, + "precision": 2, + "useGeocentroid": true + }, + "schema": "segment", + "type": "geohash_grid" + } + ], + "params": { + "addTooltip": true, + "colorSchema": "Yellow to Red", + "heatClusterSize": 1.5, + "isDesaturated": true, + "legendPosition": "bottomright", + "mapCenter": [ + 0, + 0 + ], + "mapType": "Scaled Circle Markers", + "mapZoom": 2, + "wms": { + "enabled": false, + "options": { + "format": "image/png", + "transparent": true + } + } + }, + "title": "Source Flows Map [Filebeat palo_alto] ECS", + "type": "tile_map" + } + }, + "id": "87f30f60-7569-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "290685e0-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T10:26:12.438Z", + "version": "WzIzNywxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "event.action", + "negate": true, + "params": { + "query": "flow_terminated" + }, + "type": "phrase", + "value": "flow_terminated" + }, + "query": { + "match": { + "event.action": { + "query": "flow_terminated", + "type": "phrase" + } + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Flow Creation Histogram [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "customInterval": "2h", + "drop_partials": false, + "extended_bounds": {}, + "field": "@timestamp", + "interval": "auto", + "min_doc_count": 1, + "timeRange": { + "from": "2018-04-10T04:36:19.586Z", + "to": "2018-04-10T04:39:56.264Z" + }, + "useNormalizedEsInterval": true + }, + "schema": "segment", + "type": "date_histogram" + }, + { + "enabled": true, + "id": "3", + "params": { + "field": "event.outcome", + "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": { + "show": true, + "truncate": 100 + }, + "position": "bottom", + "scale": { + "type": "linear" + }, + "show": true, + "style": {}, + "title": {}, + "type": "category" + } + ], + "grid": { + "categoryLines": false + }, + "legendPosition": "right", + "seriesParams": [ + { + "data": { + "id": "1", + "label": "Count" + }, + "drawLinesBetweenPoints": true, + "mode": "stacked", + "show": "true", + "showCircles": true, + "type": "histogram", + "valueAxis": "ValueAxis-1" + } + ], + "times": [], + "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": "Flow Creation Histogram [Filebeat palo_alto] ECS", + "type": "histogram" + } + }, + "id": "78e7e820-756d-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "290685e0-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T10:54:25.186Z", + "version": "WzI0MCwxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "event.action", + "negate": true, + "params": { + "query": "flow_started" + }, + "type": "phrase", + "value": "flow_started" + }, + "query": { + "match": { + "event.action": { + "query": "flow_started", + "type": "phrase" + } + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Source Zone breakout [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "palo_alto.pan_os.source.zone", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + }, + { + "enabled": true, + "id": "3", + "params": { + "field": "event.outcome", + "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" + } + ], + "grid": { + "categoryLines": false + }, + "legendPosition": "right", + "seriesParams": [ + { + "data": { + "id": "1", + "label": "Count" + }, + "drawLinesBetweenPoints": true, + "mode": "normal", + "show": true, + "showCircles": true, + "type": "histogram", + "valueAxis": "ValueAxis-1" + } + ], + "times": [], + "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": "Source Zone breakout [Filebeat palo_alto] ECS", + "type": "horizontal_bar" + } + }, + "id": "d9cab170-756f-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "290685e0-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T11:12:26.462Z", + "version": "WzI0MywxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "event.action", + "negate": true, + "params": { + "query": "flow_started" + }, + "type": "phrase", + "value": "flow_started" + }, + "query": { + "match": { + "event.action": { + "query": "flow_started", + "type": "phrase" + } + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Destination Zone breakout [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "palo_alto.pan_os.destination.zone", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + }, + { + "enabled": true, + "id": "3", + "params": { + "field": "event.outcome", + "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" + } + ], + "grid": { + "categoryLines": false + }, + "legendPosition": "right", + "seriesParams": [ + { + "data": { + "id": "1", + "label": "Count" + }, + "drawLinesBetweenPoints": true, + "mode": "normal", + "show": true, + "showCircles": true, + "type": "histogram", + "valueAxis": "ValueAxis-1" + } + ], + "times": [], + "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": "Destination Zone breakout [Filebeat palo_alto] ECS", + "type": "horizontal_bar" + } + }, + "id": "135930b0-7570-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "290685e0-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T11:13:03.291Z", + "version": "WzI0NCwxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Event Outcome by Transport and Destination Port [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "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" + }, + { + "enabled": true, + "id": "3", + "params": { + "field": "network.transport", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + }, + { + "enabled": true, + "id": "4", + "params": { + "field": "destination.port", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + } + ], + "params": { + "addLegend": true, + "addTooltip": true, + "isDonut": true, + "labels": { + "last_level": true, + "show": false, + "truncate": 100, + "values": true + }, + "legendPosition": "right", + "type": "pie" + }, + "title": "Event Outcome by Transport and Destination Port [Filebeat palo_alto] ECS", + "type": "pie" + } + }, + "id": "e46331c0-756a-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "290685e0-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T10:35:57.020Z", + "version": "WzIzOSwxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Network Application breakout [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "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" + }, + { + "enabled": true, + "id": "3", + "params": { + "field": "network.application", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + } + ], + "params": { + "addLegend": true, + "addTooltip": true, + "isDonut": true, + "labels": { + "last_level": true, + "show": false, + "truncate": 100, + "values": true + }, + "legendPosition": "right", + "type": "pie" + }, + "title": "Network Application breakout [Filebeat palo_alto] ECS", + "type": "pie" + } + }, + "id": "0407a3e0-756f-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "290685e0-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T11:05:28.094Z", + "version": "WzI0MSwxXQ==" + }, + { + "attributes": { + "columns": [ + "_source" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "highlightAll": true, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "kuery", + "query": "palo_alto.pan_os:* and event.category: \"network_traffic\"" + }, + "version": true + } + }, + "sort": [ + "@timestamp", + "desc" + ], + "title": "PAN-OS Flows [Filebeat palo_alto] ECS", + "version": 1 + }, + "id": "290685e0-7569-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "search": "7.0.0" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2019-05-13T10:23:33.182Z", + "version": "WzIzNSwxXQ==" + } + ], + "version": "7.1.0" +} diff --git a/x-pack/filebeat/module/palo_alto/_meta/kibana/7/dashboard/Filebeat-palo-alto-threat-overview.json b/x-pack/filebeat/module/palo_alto/_meta/kibana/7/dashboard/Filebeat-palo-alto-threat-overview.json new file mode 100644 index 000000000000..c0d4034c7d1e --- /dev/null +++ b/x-pack/filebeat/module/palo_alto/_meta/kibana/7/dashboard/Filebeat-palo-alto-threat-overview.json @@ -0,0 +1,796 @@ +{ + "objects": [ + { + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "vis": { + "legendOpen": false + } + }, + "gridData": { + "h": 15, + "i": "1", + "w": 31, + "x": 0, + "y": 0 + }, + "panelIndex": "1", + "panelRefName": "panel_0", + "title": "Threat outcome histogram", + "version": "7.1.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "2", + "w": 24, + "x": 0, + "y": 15 + }, + "panelIndex": "2", + "panelRefName": "panel_1", + "title": "Top threats by name", + "version": "7.1.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "3", + "w": 24, + "x": 24, + "y": 15 + }, + "panelIndex": "3", + "panelRefName": "panel_2", + "title": "Top threats by resource", + "version": "7.1.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 8, + "i": "4", + "w": 24, + "x": 0, + "y": 30 + }, + "panelIndex": "4", + "panelRefName": "panel_3", + "title": "Top attackers (clients)", + "version": "7.1.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 8, + "i": "5", + "w": 24, + "x": 24, + "y": 30 + }, + "panelIndex": "5", + "panelRefName": "panel_4", + "title": "Top attackers (servers)", + "version": "7.1.0" + }, + { + "embeddableConfig": { + "vis": { + "legendOpen": true + } + }, + "gridData": { + "h": 15, + "i": "6", + "w": 17, + "x": 31, + "y": 0 + }, + "panelIndex": "6", + "panelRefName": "panel_5", + "title": "Outcome by threat type", + "version": "7.1.0" + } + ], + "timeRestore": false, + "title": "[Filebeat palo_alto] Threats Overview ECS", + "version": 1 + }, + "id": "772964e0-7591-11e9-aacf-79a3704914a0", + "migrationVersion": { + "dashboard": "7.0.0" + }, + "references": [ + { + "id": "0bd2a0c0-7574-11e9-976e-65a8f47cc4c1", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "3eca1070-7589-11e9-aacf-79a3704914a0", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "5bd32b20-7575-11e9-976e-65a8f47cc4c1", + "name": "panel_2", + "type": "visualization" + }, + { + "id": "90ce3300-758a-11e9-aacf-79a3704914a0", + "name": "panel_3", + "type": "visualization" + }, + { + "id": "a95aaf20-758a-11e9-aacf-79a3704914a0", + "name": "panel_4", + "type": "visualization" + }, + { + "id": "6dce7930-758c-11e9-aacf-79a3704914a0", + "name": "panel_5", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2019-05-13T15:12:04.141Z", + "version": "WzI1NiwyXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Threat outcome histogram [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "customInterval": "2h", + "drop_partials": false, + "extended_bounds": {}, + "field": "@timestamp", + "interval": "auto", + "min_doc_count": 1, + "timeRange": { + "from": "2018-04-10T04:36:19.586Z", + "to": "2018-04-10T04:39:56.264Z" + }, + "useNormalizedEsInterval": true + }, + "schema": "segment", + "type": "date_histogram" + }, + { + "enabled": true, + "id": "3", + "params": { + "field": "event.outcome", + "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": { + "show": true, + "truncate": 100 + }, + "position": "bottom", + "scale": { + "type": "linear" + }, + "show": true, + "style": {}, + "title": {}, + "type": "category" + } + ], + "grid": { + "categoryLines": false + }, + "legendPosition": "right", + "seriesParams": [ + { + "data": { + "id": "1", + "label": "Count" + }, + "drawLinesBetweenPoints": true, + "mode": "stacked", + "show": "true", + "showCircles": true, + "type": "histogram", + "valueAxis": "ValueAxis-1" + } + ], + "times": [], + "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": "Threat outcome histogram [Filebeat palo_alto] ECS", + "type": "histogram" + } + }, + "id": "0bd2a0c0-7574-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "3cea1360-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T11:41:28.652Z", + "version": "WzI0NiwxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Threat ID Cloud [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "palo_alto.pan_os.threat.name", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + } + ], + "params": { + "maxFontSize": 72, + "minFontSize": 18, + "orientation": "single", + "scale": "linear", + "showLabel": true + }, + "title": "Threat ID Cloud [Filebeat palo_alto] ECS", + "type": "tagcloud" + } + }, + "id": "3eca1070-7589-11e9-aacf-79a3704914a0", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "3cea1360-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T15:06:36.839Z", + "version": "WzI1NSwyXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Threat Resource Cloud [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "url.original", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + } + ], + "params": { + "maxFontSize": 72, + "minFontSize": 18, + "orientation": "single", + "scale": "linear", + "showLabel": true + }, + "title": "Threat Resource Cloud [Filebeat palo_alto] ECS", + "type": "tagcloud" + } + }, + "id": "5bd32b20-7575-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "3cea1360-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T11:50:52.370Z", + "version": "WzI0NywxXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "network.direction", + "negate": false, + "params": { + "query": "inbound" + }, + "type": "phrase", + "value": "inbound" + }, + "query": { + "match": { + "network.direction": { + "query": "inbound", + "type": "phrase" + } + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Top attackers (clients) [Filebeat palo_alto] ECS", + "uiStateJSON": { + "vis": { + "params": { + "sort": { + "columnIndex": null, + "direction": null + } + } + } + }, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "client.ip", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "bucket", + "type": "terms" + } + ], + "params": { + "perPage": 10, + "showMetricsAtAllLevels": false, + "showPartialRows": false, + "showTotal": false, + "sort": { + "columnIndex": null, + "direction": null + }, + "totalFunc": "sum" + }, + "title": "Top attackers (clients) [Filebeat palo_alto] ECS", + "type": "table" + } + }, + "id": "90ce3300-758a-11e9-aacf-79a3704914a0", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "3cea1360-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T14:22:40.688Z", + "version": "WzI1MSwyXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "network.direction", + "negate": false, + "params": { + "query": "outbound" + }, + "type": "phrase", + "value": "outbound" + }, + "query": { + "match": { + "network.direction": { + "query": "outbound", + "type": "phrase" + } + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Top attackers (servers) [Filebeat palo_alto] ECS", + "uiStateJSON": { + "vis": { + "params": { + "sort": { + "columnIndex": null, + "direction": null + } + } + } + }, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "server.ip", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "bucket", + "type": "terms" + } + ], + "params": { + "perPage": 10, + "showMetricsAtAllLevels": false, + "showPartialRows": false, + "showTotal": false, + "sort": { + "columnIndex": null, + "direction": null + }, + "totalFunc": "sum" + }, + "title": "Top attackers (servers) [Filebeat palo_alto] ECS", + "type": "table" + } + }, + "id": "a95aaf20-758a-11e9-aacf-79a3704914a0", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "3cea1360-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T14:23:21.874Z", + "version": "WzI1MiwyXQ==" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "savedSearchRefName": "search_0", + "title": "Outcome by Threat Type [Filebeat palo_alto] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": {}, + "schema": "metric", + "type": "count" + }, + { + "enabled": true, + "id": "3", + "params": { + "field": "event.action", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "event.outcome", + "missingBucket": true, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + } + ], + "params": { + "addLegend": true, + "addTooltip": true, + "isDonut": true, + "labels": { + "last_level": true, + "show": false, + "truncate": 100, + "values": true + }, + "legendPosition": "right", + "type": "pie" + }, + "title": "Outcome by Threat Type [Filebeat palo_alto] ECS", + "type": "pie" + } + }, + "id": "6dce7930-758c-11e9-aacf-79a3704914a0", + "migrationVersion": { + "visualization": "7.0.1" + }, + "references": [ + { + "id": "3cea1360-7569-11e9-976e-65a8f47cc4c1", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2019-05-13T14:36:00.962Z", + "version": "WzI1MywyXQ==" + }, + { + "attributes": { + "columns": [ + "_source" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "highlightAll": true, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "kuery", + "query": "palo_alto.pan_os:* and event.category: \"security_threat\"" + }, + "version": true + } + }, + "sort": [ + "@timestamp", + "desc" + ], + "title": "PAN-OS Threats [Filebeat palo_alto] ECS", + "version": 1 + }, + "id": "3cea1360-7569-11e9-976e-65a8f47cc4c1", + "migrationVersion": { + "search": "7.0.0" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2019-05-13T10:24:06.550Z", + "version": "WzIzNiwxXQ==" + } + ], + "version": "7.1.0" +} diff --git a/x-pack/filebeat/module/palo_alto/fields.go b/x-pack/filebeat/module/palo_alto/fields.go index d192ec61b6e4..7648c70ea203 100644 --- a/x-pack/filebeat/module/palo_alto/fields.go +++ b/x-pack/filebeat/module/palo_alto/fields.go @@ -19,5 +19,5 @@ func init() { // AssetPaloAlto returns asset data. // This is the base64 encoded gzipped contents of module/palo_alto. func AssetPaloAlto() string { - return "eJzMmM9u4zYQxu95irm5BeLcesmhQNpFgABpauw26NGgqZHEhuJoh6O4ytMXpGVHtulItb1GeAsV8vvNn08iPYUXbG+hVpbmygpdAYgRi9tTGXrNphZD7hZ+vQIA+IOyxiLkxDBTluDOCsETypL4xcNPs7un6Z/ffr4CyA3azN/GRVNwqtrZOwxpa7yFgqmpu5mEYhj3cTPImSqQEt83AkuFv+n+ry8J27puTv59PqX8kfwWA3FESES/Cn4LKc3VQ+PGokfZlurwXrBdEmc7zz5iBIAnVSFQHhnD5iClEqiU6BIzkNJ48Oi9IXeTBPLUsMYkz166hmm6pAkB/ivosoglVE8tvqLtxIAW/6CWm53VqbT1Sd/I7XIO5W4EcRjfVlhBoKv3oaz1eYwT5FztJe+8UBuV/0Hm1G6DwYdFHUk0Iy/Tp7u/1mVUWcbo/TWYfD0VnhoPNXJOXGG2z3i4zr3MpgDXARx4OIJ/P4KHWQpw8xohTuVxDWLJFedDCWLvMEmrZujFOBX2vZBfe4qfzrRfemyfy7l9ss9o335V+x7uz59m5EErD5h5pIcOxJR29QhfDzr7NK4RFners8WF7N2pHWntWqt6blIeOYOHZkq/oIBWtTSM8PAl+keBlIzqUBbhRBONaWhNVdU4I2069DHhj0xBGL+v1WIGLC2npfLl5lAaOuyXqTS1xYHGyo291CEvSB3ZUiG44/rlN+MUt7DJzrpTVjQenQTeBYJyyrZvmK7Loo2x/G1sdm84rONXozH1OkkXOZn7hu2FUt+wPTLzWgkWxO2PcfN97NdYj+evj+FrIxMf2Z+/Pm6002/tsHZdkOu45hU5M1qAXPwzVli5DIxPboBGSmSYVMoabajxk2uYFKzapWKcXAMxTBboTOEmQyaytNy3/QmXt4dwOnDKgmsqZKPBZOjE5AY5djEqXe6fF9L3OPzeoNM4d021QE4yJr5rA4CPVAA64bZPFm+YxoNxmrFCJ5h18mKUtYk6PjvzvcH3kCwVEWkgplXLzEOB58TzQz46KvWh8YhXzRPUxnxfdrjO2QmJnxd2eiE6vaP7LwAA//+NIWzi" + return "eJzMmMFu4zYQhu95irm5BeLcesmhQNpFgABpauw26DGgqZHEhuJoh6O42qdfkJYd2aYtre01opupkPPNP/NTZKbwiu0t1MrSi7JCVwBixOLmUIZes6nFkLuF368AAP6irLEIOTHMlCW4s0LwhLIgfvXwy+zuafr3l1+vAHKDNvO3cdIUnKq21g6PtDXeQsHU1N1IImJ47uNikDNVICW+LwSWCn/T/V0/JGzGdS/k38dTkQ+F32AgjgiJ7JfJbyCluXpo3Fj0KJuhOrxXbBfE2da7Q4wA8KQqBMojY1gcpFQClRJdYgZSGg8evTfkbpJAnhrWmOTZkWuYphNNCPB/QZdFLKF6avENbRcMaP4farnZmp2SrU/6jdw255B2I4jD82WJFQJ09d6nWp/HOEHO1Y5454VaR/kBMqe2GwwOFnUk0Yy8TJ/u/lmVUWUZo/fXYPLVUHhrPNTIOXGF2S7j/jr3lE0BrhLY83IE/24GD7MU4HobIU7puAKx5IrzoYRg7zBJq2boxTgV1r2QX3sRP5xpP/XYPpZz+2Qf0b79qvY93B8/zciDVh4w80gP7ckp7eoRvh509mlcIyzulmeLC9m7i3aktWut6heT8sgZPDRT+hUFtKqlYYSHT9E/CqRkVPtUhBNNNKahNVVV44y06dTHpD9SgvD8uYoWFbC0mJbKl+tDaeiw36bS1BYHGis39lKHvBDqyJYKyR3XL38Yp7iFtTqrTlnSeHQSeOcIyinbfsN0XeZtzOVfY7N7w2EevxmNqe0kXeSk9g3bC0nfsD1Sea0EC+L257j5PvZrrMfz58fwtZGJj+zPnx/XsdO7dpi7Ksh1nPOGnBktQC7+jBVWLgPjkwugkRIZJpWyRhtq/OQaJgWrdqEYJ9dADJM5OlO4yZCJLC12bX/C5e0hnA6csuCaCtloMBk6MblBjl2MSpe754X0PQ6/Nug0vrimmiMnGRPftQHARyoAnXDbJ4s3TOPBOM1YoRPMuvBilLWJOj4787XB95QsFRFpIKdus2c8cEk9SvfQdcTLzgmhxnxctqDO2QaJ/y1sNUK0+Q/QhR8/lW+tWp/sewAAAP//0JiSnA==" } diff --git a/x-pack/filebeat/module/palo_alto/module.yml b/x-pack/filebeat/module/palo_alto/module.yml index b78832712d05..aa3264f75850 100644 --- a/x-pack/filebeat/module/palo_alto/module.yml +++ b/x-pack/filebeat/module/palo_alto/module.yml @@ -1,3 +1,5 @@ dashboards: -# TODO - + - id: 772964e0-7591-11e9-aacf-79a3704914a0 + file: Filebeat-palo-alto-threat-overview.json + - id: e40ba240-7572-11e9-976e-65a8f47cc4c1 + file: Filebeat-palo-alto-network-overview.json diff --git a/x-pack/filebeat/module/palo_alto/pan_os/_meta/fields.yml b/x-pack/filebeat/module/palo_alto/pan_os/_meta/fields.yml index 0e7f15e7d391..e19c9dac2a61 100644 --- a/x-pack/filebeat/module/palo_alto/pan_os/_meta/fields.yml +++ b/x-pack/filebeat/module/palo_alto/pan_os/_meta/fields.yml @@ -113,12 +113,17 @@ Log entry identifier that is incremented sequentially. Unique for each log type. - - name: threat_file_or_url + - name: threat.resource type: keyword description: > URL or file name for a threat. - - name: threat_id + - name: threat.id type: keyword description: > Palo Alto Networks identifier for the threat. + + - name: threat.name + type: keyword + description: > + Palo Alto Networks name for the threat. diff --git a/x-pack/filebeat/module/palo_alto/pan_os/config/input.yml b/x-pack/filebeat/module/palo_alto/pan_os/config/input.yml index be15016ae311..879fa479b288 100644 --- a/x-pack/filebeat/module/palo_alto/pan_os/config/input.yml +++ b/x-pack/filebeat/module/palo_alto/pan_os/config/input.yml @@ -126,9 +126,9 @@ processors: _temp_.labels: 28 network.transport: 29 event.outcome: 30 - palo_alto.pan_os.threat_file_or_url: 31 + palo_alto.pan_os.threat.resource: 31 url.original: 31 - palo_alto.pan_os.threat_id: 32 + palo_alto.pan_os.threat.name: 32 palo_alto.pan_os.url.category: 33 log.level: 34 _temp_.direction: 35 diff --git a/x-pack/filebeat/module/palo_alto/pan_os/ingest/pipeline.yml b/x-pack/filebeat/module/palo_alto/pan_os/ingest/pipeline.yml index 18da07007dae..b08de6b8706b 100644 --- a/x-pack/filebeat/module/palo_alto/pan_os/ingest/pipeline.yml +++ b/x-pack/filebeat/module/palo_alto/pan_os/ingest/pipeline.yml @@ -146,7 +146,17 @@ processors: value: unknown if: 'ctx?._temp_?.message_type == "THREAT" && ctx?.network?.direction == null' -# Set event.category depending on log type. +# Set network.type for TRAFFIC. + - set: + field: network.type + value: 'ipv4' + if: 'ctx?._temp_?.message_type == "TRAFFIC" && ctx?.labels?.ipv6_session == null' + - set: + field: network.type + value: 'ipv6' + if: 'ctx?._temp_?.message_type == "TRAFFIC" && ctx?.labels?.ipv6_session != null' + + # Set event.category depending on log type. - set: field: event.category value: network_traffic @@ -306,6 +316,18 @@ processors: value: - '{{palo_alto.pan_os.network.nat.community_id}}' + - grok: + if: 'ctx?.palo_alto?.pan_os?.threat?.name != null' + field: palo_alto.pan_os.threat.name + ignore_failure: true + patterns: + - '%{GREEDYDATA:palo_alto.pan_os.threat.name}\(\s*%{GREEDYDATA:palo_alto.pan_os.threat.id}\s*\)' + + - set: + field: palo_alto.pan_os.threat.name + value: 'URL-filtering' + if: 'ctx?.palo_alto?.pan_os?.threat?.id == "9999"' + # Remove temporary fields. - remove: field: diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log-expected.json index 45de9e62f21d..49029d6a1c48 100644 --- a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log-expected.json +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_other.log-expected.json @@ -38,6 +38,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log-expected.json index 29373236d667..50baddececb1 100644 --- a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log-expected.json +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_threat.log-expected.json @@ -43,8 +43,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "lorexx.cn/loader.exe", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "lorexx.cn/loader.exe", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -109,8 +110,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/count.php?o=2", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "lsiu.info/evo/count.php?o=2", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -175,8 +177,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/count.php?o=5", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "lsiu.info/evo/count.php?o=5", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -241,8 +244,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/count.php?o=7", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "lsiu.info/evo/count.php?o=7", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -307,8 +311,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/exploits/x18.php?o=2&t=1241403746&i=1365814122", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "lsiu.info/evo/exploits/x18.php?o=2&t=1241403746&i=1365814122", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -373,8 +378,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "lsiu.info/evo/exploits/x19.php?o=2&t=1241403746&i=1365814122", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "lsiu.info/evo/exploits/x19.php?o=2&t=1241403746&i=1365814122", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -439,8 +445,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "liteautobestguide.cn/load.php", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "liteautobestguide.cn/load.php", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -505,8 +512,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "liteautobestguide.cn/index.php", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "liteautobestguide.cn/index.php", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -571,8 +579,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "litetopdetect.cn/index.php", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "litetopdetect.cn/index.php", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -637,8 +646,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "lkmpmlm.com/fff9999.php?aid=0&uid=6cbbc5081e7548e276611ff5059df6ed30c8f8f1&os=513", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "lkmpmlm.com/fff9999.php?aid=0&uid=6cbbc5081e7548e276611ff5059df6ed30c8f8f1&os=513", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -703,8 +713,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "girlteenxxxfreemov.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "girlteenxxxfreemov.com/", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -769,8 +780,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "imagesrepository.com/resolution.php", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "imagesrepository.com/resolution.php", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -835,8 +847,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "hottestfiles.com/search/search.php?q=xxx", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "hottestfiles.com/search/search.php?q=xxx", "palo_alto.pan_os.url.category": "search-engines", "related.ip": [ "192.168.0.2", @@ -900,8 +913,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "infodist1.com/in.cgi?11¶meter=404", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "infodist1.com/in.cgi?11¶meter=404", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -966,8 +980,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "cls-softwares.com/suc.php", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "cls-softwares.com/suc.php", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -1032,8 +1047,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "cls-softwares.com/softwarefortubeview.40013.exe", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "cls-softwares.com/softwarefortubeview.40013.exe", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -1094,8 +1110,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "findmorepill.com/klik/search.php?q=xxx", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "findmorepill.com/klik/search.php?q=xxx", "palo_alto.pan_os.url.category": "online-gambling", "related.ip": [ "192.168.0.2", @@ -1160,8 +1177,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "allowedwebsurfing.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "allowedwebsurfing.com/", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -1226,8 +1244,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "antivirus-remote.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "antivirus-remote.com/", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -1292,8 +1311,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "bklinkov.ru/hi/start.cfg", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "bklinkov.ru/hi/start.cfg", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -1358,8 +1378,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "blogsexnakedgirlxxx.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "blogsexnakedgirlxxx.com/", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -1424,8 +1445,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "bklinkov.ru/hi/start.exe", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "bklinkov.ru/hi/start.exe", "palo_alto.pan_os.url.category": "not-resolved", "related.ip": [ "192.168.0.2", @@ -1490,8 +1512,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -1556,8 +1579,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -1622,8 +1646,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -1688,8 +1713,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -1754,8 +1780,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -1820,8 +1847,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -1886,8 +1914,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -1952,8 +1981,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -2018,8 +2048,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -2084,8 +2115,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -2150,8 +2182,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "-/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "-/", "palo_alto.pan_os.url.category": "private-ip-addresses", "related.ip": [ "192.168.0.2", @@ -2212,8 +2245,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "wantfinest.com/tds/in.cgi?default", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "wantfinest.com/tds/in.cgi?default", "palo_alto.pan_os.url.category": "unknown", "related.ip": [ "192.168.0.2", @@ -2274,8 +2308,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "sameshitasiteverwas.com/traf/tds/in.cgi?2", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "sameshitasiteverwas.com/traf/tds/in.cgi?2", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -2339,8 +2374,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "svarkon.ru/update.exe", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "svarkon.ru/update.exe", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -2404,8 +2440,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "onlinescanxpp.com/land/eurl/1.php?code=", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "onlinescanxpp.com/land/eurl/1.php?code=", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -2466,8 +2503,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "nolagtime.com/conn/?JKV_1RWbUUdIfRUWUaITfdIfbREdYEYdfTTRI-6XBB_1WQR-6GF5_1AU-6LC6_1Y-gW-gEUQQ-gE-tsDF6K5D_rpX51_rR-t-66FC_1Q_fQ_fQ_fQ_fQ_fQ_fQ_fQ-62BG_1Q-672V_1YOR-6N8J_1Q-6252_1WQRR-69LV_1-65GZ_1W-6", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "nolagtime.com/conn/?JKV_1RWbUUdIfRUWUaITfdIfbREdYEYdfTTRI-6XBB_1WQR-6GF5_1AU-6LC6_1Y-gW-gEUQQ-gE-tsDF6K5D_rpX51_rR-t-66FC_1Q_fQ_fQ_fQ_fQ_fQ_fQ_fQ-62BG_1Q-672V_1YOR-6N8J_1Q-6252_1WQRR-69LV_1-65GZ_1W-6", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -2528,8 +2566,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "nolagtime.com/gwc.txt", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "nolagtime.com/gwc.txt", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -2593,8 +2632,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "karavan.us/bon/index.php", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "karavan.us/bon/index.php", "palo_alto.pan_os.url.category": "unknown", "related.ip": [ "192.168.0.2", @@ -2655,8 +2695,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "findnolimits.com/go.php?sid=1", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "findnolimits.com/go.php?sid=1", "palo_alto.pan_os.url.category": "dead-sites", "related.ip": [ "192.168.0.2", @@ -2717,8 +2758,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "bizoplata.ru/moun.html", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "bizoplata.ru/moun.html", "palo_alto.pan_os.url.category": "parked-domains", "related.ip": [ "192.168.0.2", @@ -2779,8 +2821,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "bizoplata.ru/palast.html", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "bizoplata.ru/palast.html", "palo_alto.pan_os.url.category": "parked-domains", "related.ip": [ "192.168.0.2", @@ -2838,8 +2881,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "controller.php", - "palo_alto.pan_os.threat_id": "Bredolab.Gen Command and Control Traffic(13024)", + "palo_alto.pan_os.threat.id": "13024", + "palo_alto.pan_os.threat.name": "Bredolab.Gen Command and Control Traffic", + "palo_alto.pan_os.threat.resource": "controller.php", "palo_alto.pan_os.url.category": "any", "related.ip": [ "204.232.231.46", @@ -2909,8 +2953,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "www.15min.it/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "www.15min.it/", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -2971,8 +3016,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "tubemov.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "tubemov.com/", "palo_alto.pan_os.url.category": "adult-and-pornography", "related.ip": [ "192.168.0.2", @@ -3033,8 +3079,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "pagesinxt.com/?dn=teenstube.us&flrdr=yes&nxte=js", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "pagesinxt.com/?dn=teenstube.us&flrdr=yes&nxte=js", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3095,8 +3142,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "movfree.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "movfree.com/", "palo_alto.pan_os.url.category": "spyware-and-adware", "related.ip": [ "192.168.0.2", @@ -3160,8 +3208,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "gometascan.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "gometascan.com/", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3225,8 +3274,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "antivirus-powerful-scannerv2.com/download/Install_11-1.exe", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "antivirus-powerful-scannerv2.com/download/Install_11-1.exe", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3290,8 +3340,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "antivirus-powerful-scannerv2.com/1/?id=11-1&back==TQzyDTyMUQNMI=N", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "antivirus-powerful-scannerv2.com/1/?id=11-1&back==TQzyDTyMUQNMI=N", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3355,8 +3406,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "basdzsdas.com/poker/config.bin", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "basdzsdas.com/poker/config.bin", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3420,8 +3472,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "basdzsdas.com/poker/config.bin", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "basdzsdas.com/poker/config.bin", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3479,8 +3532,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "uLLGRaXP.exe", - "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.threat.id": "52020", + "palo_alto.pan_os.threat.name": "Windows Executable (EXE)", + "palo_alto.pan_os.threat.resource": "uLLGRaXP.exe", "palo_alto.pan_os.url.category": "any", "related.ip": [ "173.236.179.57", @@ -3550,8 +3604,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "basdzsdas.com/poker/config.bin", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "basdzsdas.com/poker/config.bin", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3609,8 +3664,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "FunkyEmoticons_setup.exe", - "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.threat.id": "52020", + "palo_alto.pan_os.threat.name": "Windows Executable (EXE)", + "palo_alto.pan_os.threat.resource": "FunkyEmoticons_setup.exe", "palo_alto.pan_os.url.category": "any", "related.ip": [ "91.209.163.202", @@ -3668,8 +3724,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "52hxw.exe", - "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.threat.id": "52020", + "palo_alto.pan_os.threat.name": "Windows Executable (EXE)", + "palo_alto.pan_os.threat.resource": "52hxw.exe", "palo_alto.pan_os.url.category": "any", "related.ip": [ "122.226.169.183", @@ -3738,8 +3795,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "softsellfast.com/test/config.bin", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "softsellfast.com/test/config.bin", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3797,8 +3855,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "setup.exe", - "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.threat.id": "52020", + "palo_alto.pan_os.threat.name": "Windows Executable (EXE)", + "palo_alto.pan_os.threat.resource": "setup.exe", "palo_alto.pan_os.url.category": "any", "related.ip": [ "109.201.131.15", @@ -3859,8 +3918,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "Live-Player_setup.exe", - "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.threat.id": "52020", + "palo_alto.pan_os.threat.name": "Windows Executable (EXE)", + "palo_alto.pan_os.threat.resource": "Live-Player_setup.exe", "palo_alto.pan_os.url.category": "any", "related.ip": [ "91.209.163.202", @@ -3921,8 +3981,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "boialex.narod.ru/config.txt", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "boialex.narod.ru/config.txt", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -3983,8 +4044,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "edw-melon.narod.ru/config.txt", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "edw-melon.narod.ru/config.txt", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -4045,8 +4107,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "maximtushin.narod.ru/config.txt", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "maximtushin.narod.ru/config.txt", "palo_alto.pan_os.url.category": "malware-sites", "related.ip": [ "192.168.0.2", @@ -4104,8 +4167,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "uLLGRaXP.exe", - "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.threat.id": "52020", + "palo_alto.pan_os.threat.name": "Windows Executable (EXE)", + "palo_alto.pan_os.threat.resource": "uLLGRaXP.exe", "palo_alto.pan_os.url.category": "any", "related.ip": [ "173.236.179.57", @@ -4175,8 +4239,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "marketingsoluchion.biz/fkn/config.bin", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "marketingsoluchion.biz/fkn/config.bin", "palo_alto.pan_os.url.category": "unknown", "related.ip": [ "192.168.0.2", @@ -4240,8 +4305,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "default.aspx", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "default.aspx", "palo_alto.pan_os.url.category": "any", "related.ip": [ "192.168.0.6", @@ -4299,8 +4365,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "sck.aspx", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "sck.aspx", "palo_alto.pan_os.url.category": "any", "related.ip": [ "65.54.161.34", @@ -4364,8 +4431,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "ADSAdClient31.dll", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "ADSAdClient31.dll", "palo_alto.pan_os.url.category": "any", "related.ip": [ "65.55.5.231", @@ -4435,8 +4503,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "c.gif", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "c.gif", "palo_alto.pan_os.url.category": "any", "related.ip": [ "192.168.0.6", @@ -4494,8 +4563,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "csi", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "csi", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.239.17", @@ -4559,8 +4629,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "internal-tuner.pandora.com", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "internal-tuner.pandora.com", "palo_alto.pan_os.url.category": "any", "related.ip": [ "192.168.0.2", @@ -4618,8 +4689,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.198", @@ -4680,8 +4752,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "about.exe", - "palo_alto.pan_os.threat_id": "Windows Executable (EXE)(52020)", + "palo_alto.pan_os.threat.id": "52020", + "palo_alto.pan_os.threat.name": "Windows Executable (EXE)", + "palo_alto.pan_os.threat.resource": "about.exe", "palo_alto.pan_os.url.category": "any", "related.ip": [ "188.190.124.75", @@ -4739,8 +4812,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.200", @@ -4801,8 +4875,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.239.3", @@ -4863,8 +4938,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.239.3", @@ -4925,8 +5001,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.200", @@ -4990,8 +5067,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "__utm.gif", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "__utm.gif", "palo_alto.pan_os.url.category": "any", "related.ip": [ "192.168.0.2", @@ -5049,8 +5127,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.193", @@ -5111,8 +5190,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "nav_logo107.png", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "nav_logo107.png", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.239.20", @@ -5173,8 +5253,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "Eadweard_Muybridge", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "Eadweard_Muybridge", "palo_alto.pan_os.url.category": "any", "related.ip": [ "208.80.154.225", @@ -5235,8 +5316,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "load.php", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "load.php", "palo_alto.pan_os.url.category": "any", "related.ip": [ "208.80.154.234", @@ -5297,8 +5379,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "8fe44cb728c0f40750c64ee906eb72.css", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "8fe44cb728c0f40750c64ee906eb72.css", "palo_alto.pan_os.url.category": "any", "related.ip": [ "65.54.75.25", @@ -5362,8 +5445,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.206", @@ -5424,8 +5508,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.195", @@ -5486,8 +5571,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "appcast.xml", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "appcast.xml", "palo_alto.pan_os.url.category": "any", "related.ip": [ "207.178.96.34", @@ -5551,8 +5637,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.195", @@ -5613,8 +5700,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "csi", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "csi", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.239.20", @@ -5675,8 +5763,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "index.php", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "index.php", "palo_alto.pan_os.url.category": "any", "related.ip": [ "66.152.109.24", @@ -5737,8 +5826,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.200", @@ -5802,8 +5892,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "__utm.gif", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "__utm.gif", "palo_alto.pan_os.url.category": "any", "related.ip": [ "192.168.0.2", @@ -5861,8 +5952,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.200", @@ -5923,8 +6015,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.200", @@ -5988,8 +6081,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "internal-tuner.pandora.com", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "internal-tuner.pandora.com", "palo_alto.pan_os.url.category": "any", "related.ip": [ "192.168.0.2", @@ -6047,8 +6141,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.201", @@ -6109,8 +6204,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.201", @@ -6171,8 +6267,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.200", @@ -6233,8 +6330,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.200", @@ -6295,8 +6393,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "ga.js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "ga.js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.198", @@ -6357,8 +6456,9 @@ "palo_alto.pan_os.source.nat.ip": "0.0.0.0", "palo_alto.pan_os.source.nat.port": 0, "palo_alto.pan_os.source.zone": "untrust", - "palo_alto.pan_os.threat_file_or_url": "js", - "palo_alto.pan_os.threat_id": "PII(60000)", + "palo_alto.pan_os.threat.id": "60000", + "palo_alto.pan_os.threat.name": "PII", + "palo_alto.pan_os.threat.resource": "js", "palo_alto.pan_os.url.category": "any", "related.ip": [ "74.125.224.200", diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log-expected.json index bdf2ad4d7baf..6550d19201ef 100644 --- a/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log-expected.json +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/pan_inc_traffic.log-expected.json @@ -38,6 +38,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -108,6 +109,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -178,6 +180,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -251,6 +254,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -324,6 +328,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -394,6 +399,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -464,6 +470,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -537,6 +544,7 @@ "network.direction": "outbound", "network.packets": 10, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -610,6 +618,7 @@ "network.direction": "outbound", "network.packets": 10, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -683,6 +692,7 @@ "network.direction": "outbound", "network.packets": 10, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -756,6 +766,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -829,6 +840,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -902,6 +914,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -975,6 +988,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1048,6 +1062,7 @@ "network.direction": "outbound", "network.packets": 10, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1121,6 +1136,7 @@ "network.direction": "outbound", "network.packets": 10, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1194,6 +1210,7 @@ "network.direction": "outbound", "network.packets": 21, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1267,6 +1284,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1340,6 +1358,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1410,6 +1429,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1480,6 +1500,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1553,6 +1574,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1623,6 +1645,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1696,6 +1719,7 @@ "network.direction": "outbound", "network.packets": 10, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1769,6 +1793,7 @@ "network.direction": "outbound", "network.packets": 10, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1842,6 +1867,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1912,6 +1938,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -1982,6 +2009,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2052,6 +2080,7 @@ "network.direction": "outbound", "network.packets": 16, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2125,6 +2154,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2195,6 +2225,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2268,6 +2299,7 @@ "network.direction": "outbound", "network.packets": 20, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2341,6 +2373,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2411,6 +2444,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2481,6 +2515,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2554,6 +2589,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2627,6 +2663,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2697,6 +2734,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2767,6 +2805,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2835,6 +2874,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2907,6 +2947,7 @@ "network.direction": "outbound", "network.packets": 13, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -2978,6 +3019,7 @@ "network.direction": "outbound", "network.packets": 17, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3050,6 +3092,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3123,6 +3166,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3191,6 +3235,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3263,6 +3308,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3333,6 +3379,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3406,6 +3453,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3476,6 +3524,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3546,6 +3595,7 @@ "network.direction": "outbound", "network.packets": 4, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3616,6 +3666,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3686,6 +3737,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3759,6 +3811,7 @@ "network.direction": "outbound", "network.packets": 13, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3832,6 +3885,7 @@ "network.direction": "outbound", "network.packets": 22, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3905,6 +3959,7 @@ "network.direction": "outbound", "network.packets": 21, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -3975,6 +4030,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4048,6 +4104,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4118,6 +4175,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4188,6 +4246,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4261,6 +4320,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4334,6 +4394,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4404,6 +4465,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4474,6 +4536,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4547,6 +4610,7 @@ "network.direction": "outbound", "network.packets": 13, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4617,6 +4681,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4687,6 +4752,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4757,6 +4823,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4830,6 +4897,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4903,6 +4971,7 @@ "network.direction": "outbound", "network.packets": 13, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -4976,6 +5045,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5046,6 +5116,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5116,6 +5187,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5189,6 +5261,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5259,6 +5332,7 @@ "network.direction": "outbound", "network.packets": 39, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5329,6 +5403,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5399,6 +5474,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5472,6 +5548,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5538,6 +5615,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5611,6 +5689,7 @@ "network.direction": "outbound", "network.packets": 21, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5684,6 +5763,7 @@ "network.direction": "outbound", "network.packets": 22, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5750,6 +5830,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5816,6 +5897,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5889,6 +5971,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -5959,6 +6042,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6029,6 +6113,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6102,6 +6187,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6172,6 +6258,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6238,6 +6325,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6308,6 +6396,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6381,6 +6470,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6451,6 +6541,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6521,6 +6612,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6594,6 +6686,7 @@ "network.direction": "outbound", "network.packets": 13, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6667,6 +6760,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6740,6 +6834,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6813,6 +6908,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6879,6 +6975,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -6952,6 +7049,7 @@ "network.direction": "outbound", "network.packets": 4, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -7025,6 +7123,7 @@ "network.direction": "outbound", "network.packets": 4, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", @@ -7098,6 +7197,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.serial_number": "01606001116", "palo_alto.pan_os.destination.interface": "ethernet1/1", "palo_alto.pan_os.destination.nat.ip": "0.0.0.0", diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log-expected.json index 0b4a7a429350..15fe217fb319 100644 --- a/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log-expected.json +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/threat.log-expected.json @@ -44,8 +44,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 37679, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -110,8 +111,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 28249, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -176,8 +178,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 63898, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -242,8 +245,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 7515, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -308,8 +312,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 3225, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -374,8 +379,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 60449, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -440,8 +446,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 60559, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -506,8 +513,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 47414, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -572,8 +580,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 37673, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -638,8 +647,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 8232, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -704,8 +714,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 32982, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -770,8 +781,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 10473, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -836,8 +848,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 20446, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -902,8 +915,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 34699, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -968,8 +982,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 22820, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1034,8 +1049,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 41060, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1100,8 +1116,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 9058, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1166,8 +1183,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 54846, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1232,8 +1250,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 52731, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1298,8 +1317,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 15165, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1364,8 +1384,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 53918, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "b.scorecardresearch.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "b.scorecardresearch.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1430,8 +1451,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 40792, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1496,8 +1518,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 54044, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1562,8 +1585,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 19544, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1628,8 +1652,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 13462, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1694,8 +1719,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 44892, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1760,8 +1786,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 16487, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1826,8 +1853,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 23952, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1892,8 +1920,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 2810, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -1958,8 +1987,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 13272, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2024,8 +2054,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 8663, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2090,8 +2121,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 55738, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2156,8 +2188,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 10650, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2222,8 +2255,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 44087, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2288,8 +2322,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 15915, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "consent.cmp.oath.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "consent.cmp.oath.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2354,8 +2389,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 41165, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "cdn.taboola.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "cdn.taboola.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2423,8 +2459,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 54133, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "rules.quantcount.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "rules.quantcount.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2492,8 +2529,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 8485, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2561,8 +2599,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 12496, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2630,8 +2669,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 17029, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2699,8 +2739,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 23696, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2768,8 +2809,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 34769, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2837,8 +2879,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 22486, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2906,8 +2949,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 12894, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -2975,8 +3019,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 62348, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3044,8 +3089,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 6224, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3113,8 +3159,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 44120, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3182,8 +3229,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 44228, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3251,8 +3299,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 31322, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "srv-2018-11-30-22.config.parsely.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "srv-2018-11-30-22.config.parsely.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3320,8 +3369,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 1672, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "www.googleadservices.com/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "www.googleadservices.com/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3386,8 +3436,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 20801, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3452,8 +3503,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 24533, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3518,8 +3570,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 30150, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3584,8 +3637,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 36305, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3650,8 +3704,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 42682, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3716,8 +3771,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 22530, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3782,8 +3838,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 43713, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3848,8 +3905,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 60608, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3914,8 +3972,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 9302, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -3980,8 +4039,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 11634, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "service.maxymiser.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "service.maxymiser.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4049,8 +4109,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 30818, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4118,8 +4179,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 64260, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4187,8 +4249,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 7071, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4256,8 +4319,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 4512, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4325,8 +4389,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 3422, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4394,8 +4459,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 4651, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4463,8 +4529,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 19068, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4532,8 +4599,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 5831, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4601,8 +4669,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 7084, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4670,8 +4739,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 18633, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4739,8 +4809,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 25557, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4808,8 +4879,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 20661, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4877,8 +4949,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 65438, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -4946,8 +5019,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 53101, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -5015,8 +5089,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 35463, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", @@ -5084,8 +5159,9 @@ "palo_alto.pan_os.source.nat.ip": "192.168.1.63", "palo_alto.pan_os.source.nat.port": 45769, "palo_alto.pan_os.source.zone": "trust", - "palo_alto.pan_os.threat_file_or_url": "segment-data.zqtk.net/", - "palo_alto.pan_os.threat_id": "(9999)", + "palo_alto.pan_os.threat.id": "9999", + "palo_alto.pan_os.threat.name": "URL-filtering", + "palo_alto.pan_os.threat.resource": "segment-data.zqtk.net/", "palo_alto.pan_os.url.category": "business-and-economy", "related.ip": [ "192.168.15.224", diff --git a/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log-expected.json b/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log-expected.json index 755e84659bfe..2b48c80e8d97 100644 --- a/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log-expected.json +++ b/x-pack/filebeat/module/palo_alto/pan_os/test/traffic.log-expected.json @@ -37,6 +37,7 @@ "network.direction": "outbound", "network.packets": 36, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -110,6 +111,7 @@ "network.direction": "outbound", "network.packets": 12, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -183,6 +185,7 @@ "network.direction": "outbound", "network.packets": 11, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -256,6 +259,7 @@ "network.direction": "outbound", "network.packets": 12, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -332,6 +336,7 @@ "network.direction": "outbound", "network.packets": 8, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -405,6 +410,7 @@ "network.direction": "outbound", "network.packets": 113, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -478,6 +484,7 @@ "network.direction": "outbound", "network.packets": 12, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -551,6 +558,7 @@ "network.direction": "outbound", "network.packets": 16, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -624,6 +632,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -697,6 +706,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -770,6 +780,7 @@ "network.direction": "outbound", "network.packets": 32, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -843,6 +854,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -916,6 +928,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -989,6 +1002,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1062,6 +1076,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1135,6 +1150,7 @@ "network.direction": "outbound", "network.packets": 12, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1208,6 +1224,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1281,6 +1298,7 @@ "network.direction": "outbound", "network.packets": 27, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1354,6 +1372,7 @@ "network.direction": "outbound", "network.packets": 24, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1427,6 +1446,7 @@ "network.direction": "outbound", "network.packets": 4, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1500,6 +1520,7 @@ "network.direction": "outbound", "network.packets": 36, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1573,6 +1594,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1649,6 +1671,7 @@ "network.direction": "outbound", "network.packets": 25, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1725,6 +1748,7 @@ "network.direction": "outbound", "network.packets": 8, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1798,6 +1822,7 @@ "network.direction": "outbound", "network.packets": 12, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1870,6 +1895,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -1942,6 +1968,7 @@ "network.direction": "outbound", "network.packets": 12, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2015,6 +2042,7 @@ "network.direction": "outbound", "network.packets": 13, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2091,6 +2119,7 @@ "network.direction": "outbound", "network.packets": 9, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2164,6 +2193,7 @@ "network.direction": "outbound", "network.packets": 12, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2237,6 +2267,7 @@ "network.direction": "outbound", "network.packets": 4, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2310,6 +2341,7 @@ "network.direction": "outbound", "network.packets": 22, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2383,6 +2415,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2459,6 +2492,7 @@ "network.direction": "outbound", "network.packets": 1, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2535,6 +2569,7 @@ "network.direction": "outbound", "network.packets": 20, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2611,6 +2646,7 @@ "network.direction": "outbound", "network.packets": 38, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2684,6 +2720,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2757,6 +2794,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2833,6 +2871,7 @@ "network.direction": "outbound", "network.packets": 44, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2905,6 +2944,7 @@ "network.direction": "outbound", "network.packets": 104, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -2981,6 +3021,7 @@ "network.direction": "outbound", "network.packets": 32, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3054,6 +3095,7 @@ "network.direction": "outbound", "network.packets": 15, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3130,6 +3172,7 @@ "network.direction": "outbound", "network.packets": 31, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3206,6 +3249,7 @@ "network.direction": "outbound", "network.packets": 31, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3279,6 +3323,7 @@ "network.direction": "external", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3352,6 +3397,7 @@ "network.direction": "internal", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3428,6 +3474,7 @@ "network.direction": "inbound", "network.packets": 30, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3501,6 +3548,7 @@ "network.direction": "unknown", "network.packets": 15, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3573,6 +3621,7 @@ "network.direction": "unknown", "network.packets": 31, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3646,6 +3695,7 @@ "network.direction": "unknown", "network.packets": 12, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3717,6 +3767,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3790,6 +3841,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3863,6 +3915,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -3936,6 +3989,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4009,6 +4063,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4082,6 +4137,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4155,6 +4211,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4228,6 +4285,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4301,6 +4359,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4374,6 +4433,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4447,6 +4507,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4520,6 +4581,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4593,6 +4655,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4669,6 +4732,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4742,6 +4806,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4815,6 +4880,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4888,6 +4954,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -4961,6 +5028,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5034,6 +5102,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5107,6 +5176,7 @@ "network.direction": "outbound", "network.packets": 11, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5180,6 +5250,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5253,6 +5324,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5329,6 +5401,7 @@ "network.direction": "outbound", "network.packets": 9, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5402,6 +5475,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5475,6 +5549,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5548,6 +5623,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5621,6 +5697,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5694,6 +5771,7 @@ "network.direction": "outbound", "network.packets": 4, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5767,6 +5845,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5840,6 +5919,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5915,6 +5995,7 @@ "network.direction": "outbound", "network.packets": 24, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -5988,6 +6069,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6061,6 +6143,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6134,6 +6217,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6210,6 +6294,7 @@ "network.direction": "outbound", "network.packets": 15, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6286,6 +6371,7 @@ "network.direction": "outbound", "network.packets": 15, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6362,6 +6448,7 @@ "network.direction": "outbound", "network.packets": 15, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6435,6 +6522,7 @@ "network.direction": "outbound", "network.packets": 22, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6511,6 +6599,7 @@ "network.direction": "outbound", "network.packets": 15, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6587,6 +6676,7 @@ "network.direction": "outbound", "network.packets": 7, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6663,6 +6753,7 @@ "network.direction": "outbound", "network.packets": 7, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6739,6 +6830,7 @@ "network.direction": "outbound", "network.packets": 7, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6815,6 +6907,7 @@ "network.direction": "outbound", "network.packets": 8, "network.transport": "tcp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6888,6 +6981,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -6961,6 +7055,7 @@ "network.direction": "outbound", "network.packets": 12, "network.transport": "icmp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -7034,6 +7129,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -7107,6 +7203,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -7180,6 +7277,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -7253,6 +7351,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", @@ -7326,6 +7425,7 @@ "network.direction": "outbound", "network.packets": 2, "network.transport": "udp", + "network.type": "ipv4", "observer.hostname": "PA-220", "observer.serial_number": "012801096514", "palo_alto.pan_os.destination.interface": "ethernet1/1", From 56764fcc4d7962ca2fdcc331c2f0af146642fc34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Berfin=20Sar=C4=B1?= Date: Thu, 16 May 2019 13:56:12 +0300 Subject: [PATCH 47/59] Add mesosbeat to the community beats (#12185) --- libbeat/docs/communitybeats.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/libbeat/docs/communitybeats.asciidoc b/libbeat/docs/communitybeats.asciidoc index f53858d586fe..dbf34d1541c9 100644 --- a/libbeat/docs/communitybeats.asciidoc +++ b/libbeat/docs/communitybeats.asciidoc @@ -67,6 +67,7 @@ https://github.com/consulthys/logstashbeat[logstashbeat]:: Collects data from Lo https://github.com/bozdag/macwifibeat[macwifibeat]:: Reads various indicators for a MacBook's WiFi Signal Strength https://github.com/yedamao/mcqbeat[mcqbeat]:: Reads the status of queues from memcacheq. https://developer.cisco.com/codeexchange/github/repo/CiscoDevNet/merakibeat[merakibeat]:: Collects https://dashboard.meraki.com/api_docs#wireless-health[wireless health] and users https://documentation.meraki.com/MR/Monitoring_and_Reporting/Scanning_API[location analytics] data using Cisco Meraki APIs. +https://github.com/berfinsari/mesosbeat[mesosbeat]:: Reads stats from the Mesos API and indexes them into Elasticsearch. https://github.com/scottcrespo/mongobeat[mongobeat]:: Monitors MongoDB instances and can be configured to send multiple document types to Elasticsearch. https://github.com/nathan-K-/mqttbeat[mqttbeat]:: Add messages from mqtt topics to Elasticsearch. https://github.com/adibendahan/mysqlbeat[mysqlbeat]:: Run any query on MySQL and send results to Elasticsearch. From f549cec7f437795bec4f239010d0441bbd75af0b Mon Sep 17 00:00:00 2001 From: Adrian Serrano Date: Thu, 16 May 2019 12:14:22 -0400 Subject: [PATCH 48/59] Missing module.yml.disabled file for palo_alto (#12191) --- x-pack/filebeat/modules.d/palo_alto.yml.disabled | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 x-pack/filebeat/modules.d/palo_alto.yml.disabled diff --git a/x-pack/filebeat/modules.d/palo_alto.yml.disabled b/x-pack/filebeat/modules.d/palo_alto.yml.disabled new file mode 100644 index 000000000000..f8d6fc2adb71 --- /dev/null +++ b/x-pack/filebeat/modules.d/palo_alto.yml.disabled @@ -0,0 +1,13 @@ +# Module: palo_alto +# Docs: https://www.elastic.co/guide/en/beats/filebeat/master/filebeat-module-palo_alto.html + +- module: palo_alto + pan_os: + enabled: true + + # Set which input to use between syslog (default) or file. + #var.input: + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: From b5c92a76de2dc6d35c49913100707d388de2c175 Mon Sep 17 00:00:00 2001 From: John Schulz Date: Thu, 16 May 2019 15:29:02 -0400 Subject: [PATCH 49/59] [Filebeat] Add RabbitMQ module (#12032) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Parses single and multiline messages from [RabbitMQ's unified log file](https://www.rabbitmq.com/logging.html#log-file-location) * `var.paths` uses the `RABBITMQ_LOGS` env variable if present * `var.convert_timezone` (enabled by default since the [timestamps are localtime by default](https://github.com/erlang-lager/lager#universal-time)) * No dashboard * Tested with ``` ~/go/src/github.com/elastic/beats/x-pack/filebeat [master @ 092a3f5] ✓ ‣ MODULES_PATH=./module GENERATE=1 INTEGRATION_TESTS=1 TESTING_FILEBEAT_MODULES=rabbitmq nosetests tests/system/test_xpack_modules.py -v test_fileset_file_0_rabbitmq (test_xpack_modules.XPackTest) ... ok ---------------------------------------------------------------------- Ran 1 test in 3.320s OK ``` --- CHANGELOG.next.asciidoc | 2 + filebeat/docs/fields.asciidoc | 32 ++ .../include/var-convert-timezone.asciidoc | 4 +- filebeat/docs/modules/rabbitmq.asciidoc | 72 ++++ filebeat/docs/modules_list.asciidoc | 2 + x-pack/filebeat/filebeat.reference.yml | 13 + x-pack/filebeat/include/list.go | 1 + .../filebeat/module/rabbitmq/_meta/config.yml | 11 + .../module/rabbitmq/_meta/docs.asciidoc | 59 +++ .../filebeat/module/rabbitmq/_meta/fields.yml | 9 + x-pack/filebeat/module/rabbitmq/fields.go | 23 ++ .../module/rabbitmq/log/_meta/fields.yml | 9 + .../module/rabbitmq/log/config/log.yml | 19 + .../module/rabbitmq/log/ingest/pipeline.yml | 28 ++ .../filebeat/module/rabbitmq/log/manifest.yml | 19 + .../module/rabbitmq/log/test/test.log | 78 ++++ .../rabbitmq/log/test/test.log-expected.json | 370 ++++++++++++++++++ .../filebeat/modules.d/rabbitmq.yml.disabled | 14 + 18 files changed, 764 insertions(+), 1 deletion(-) create mode 100644 filebeat/docs/modules/rabbitmq.asciidoc create mode 100644 x-pack/filebeat/module/rabbitmq/_meta/config.yml create mode 100644 x-pack/filebeat/module/rabbitmq/_meta/docs.asciidoc create mode 100644 x-pack/filebeat/module/rabbitmq/_meta/fields.yml create mode 100644 x-pack/filebeat/module/rabbitmq/fields.go create mode 100644 x-pack/filebeat/module/rabbitmq/log/_meta/fields.yml create mode 100644 x-pack/filebeat/module/rabbitmq/log/config/log.yml create mode 100644 x-pack/filebeat/module/rabbitmq/log/ingest/pipeline.yml create mode 100644 x-pack/filebeat/module/rabbitmq/log/manifest.yml create mode 100644 x-pack/filebeat/module/rabbitmq/log/test/test.log create mode 100644 x-pack/filebeat/module/rabbitmq/log/test/test.log-expected.json create mode 100644 x-pack/filebeat/modules.d/rabbitmq.yml.disabled diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index df70909ba92b..f997f507de36 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -20,6 +20,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Socket dataset: Exclude localhost by default {pull}11993[11993] *Filebeat* + - Modify apache/error dataset to follow ECS. {pull}8963[8963] - Rename many `traefik.access.*` fields to map to ECS. {pull}9005[9005] - Fix parsing of GC entries in elasticsearch server log. {issue}9513[9513] {pull}9810[9810] @@ -176,6 +177,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add apache2(httpd) log path (`/var/log/httpd`) to make apache2 module work out of the box on Redhat-family OSes. {issue}11887[11887] {pull}11888[11888] - Add support to new MongoDB additional diagnostic information {pull}11952[11952] - New module `palo_alto` for Palo Alto Networks PAN-OS logs. {pull}11999[11999] +- Add RabbitMQ module. {pull}12032[12032] *Heartbeat* diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index 24454b2f0f3b..472d9817b349 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -43,6 +43,7 @@ grouped in the following categories: * <> * <> * <> +* <> * <> * <> * <> @@ -12195,6 +12196,37 @@ alias to: process.executable -- +[[exported-fields-rabbitmq]] +== RabbitMQ fields + +RabbitMQ Module + + + +[float] +== rabbitmq fields + + + + +[float] +== log fields + +RabbitMQ log files + + + +*`rabbitmq.log.pid`*:: ++ +-- +type: keyword + +example: <0.222.0> + +The Erlang process id + +-- + [[exported-fields-redis]] == Redis fields diff --git a/filebeat/docs/include/var-convert-timezone.asciidoc b/filebeat/docs/include/var-convert-timezone.asciidoc index 52c71d844068..dcec579e260b 100644 --- a/filebeat/docs/include/var-convert-timezone.asciidoc +++ b/filebeat/docs/include/var-convert-timezone.asciidoc @@ -5,4 +5,6 @@ parsing time to convert the timestamp to UTC. The local timezone is also added in each event in a dedicated field (`beat.timezone`). The conversion is only possible in Elasticsearch >= 6.1. If the Elasticsearch version is less than 6.1, the `beat.timezone` field is added, but the conversion to UTC is not made. The -default is `false`. +default is +ifdef::default_convert_timezone[`true`] +ifndef::default_convert_timezone[`false`] diff --git a/filebeat/docs/modules/rabbitmq.asciidoc b/filebeat/docs/modules/rabbitmq.asciidoc new file mode 100644 index 000000000000..89a54775c236 --- /dev/null +++ b/filebeat/docs/modules/rabbitmq.asciidoc @@ -0,0 +1,72 @@ +//// +This file is generated! See scripts/docs_collector.py +//// + +[[filebeat-module-rabbitmq]] +:modulename: rabbitmq +:has-dashboards: false + +== RabbitMQ module + +This is the module for parsing https://www.rabbitmq.com/logging.html[RabbitMQ log files] + +include::../include/what-happens.asciidoc[] + +[float] +=== Compatibility + +Parses https://www.rabbitmq.com/logging.html[single file format] introduced in 3.7.0. + +Tested with version 3.7.14. + +include::../include/running-modules.asciidoc[] + +include::../include/configuring-intro.asciidoc[] + +The following example shows how to set paths in the +modules.d/{modulename}.yml+ +file to override the default paths for RabbitMQ logs: + + +["source","yaml",subs="attributes"] +----- +- module: rabbitmq + log: + enabled: true + var.paths: ["/path/to/log/rabbitmq/*.log*"] +----- + + +To specify the same settings at the command line, you use: + +["source","sh",subs="attributes"] +----- +-M "rabbitmq.log.var.paths=[/path/to/log/rabbitmq/*.log*]" +----- + +:fileset_ex: log + +include::../include/config-option-intro.asciidoc[] + +[float] +==== `log` fileset settings + +include::../include/var-paths.asciidoc[] + +:default_convert_timezone: true + +include::../include/var-convert-timezone.asciidoc[] + +:has-dashboards!: + +:fileset_ex!: +:default_convert_timezone!: + +:modulename!: + + +[float] +=== Fields + +For a description of each field in the module, see the +<> section. + diff --git a/filebeat/docs/modules_list.asciidoc b/filebeat/docs/modules_list.asciidoc index 470f06d5a2bf..461df2631f91 100644 --- a/filebeat/docs/modules_list.asciidoc +++ b/filebeat/docs/modules_list.asciidoc @@ -24,6 +24,7 @@ This file is generated! See scripts/docs_collector.py * <> * <> * <> + * <> * <> * <> * <> @@ -56,6 +57,7 @@ include::modules/nginx.asciidoc[] include::modules/osquery.asciidoc[] include::modules/palo_alto.asciidoc[] include::modules/postgresql.asciidoc[] +include::modules/rabbitmq.asciidoc[] include::modules/redis.asciidoc[] include::modules/santa.asciidoc[] include::modules/suricata.asciidoc[] diff --git a/x-pack/filebeat/filebeat.reference.yml b/x-pack/filebeat/filebeat.reference.yml index 05b7cee914eb..8b33b9351ecc 100644 --- a/x-pack/filebeat/filebeat.reference.yml +++ b/x-pack/filebeat/filebeat.reference.yml @@ -429,6 +429,19 @@ filebeat.modules: # can be added under this section. #input: +#------------------------------- RabbitMQ Module ------------------------------- +#- module: rabbitmq + # All logs + #log: + #enabled: true + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: ["/var/log/rabbitmq/rabbit@localhost.log*"] + + # Convert the timestamp to UTC. Requires Elasticsearch >= 6.1. + #var.convert_timezone: false + #-------------------------------- Redis Module -------------------------------- #- module: redis # Main logs diff --git a/x-pack/filebeat/include/list.go b/x-pack/filebeat/include/list.go index 3eac6f892142..3265bfe6f8f7 100644 --- a/x-pack/filebeat/include/list.go +++ b/x-pack/filebeat/include/list.go @@ -15,6 +15,7 @@ import ( _ "github.com/elastic/beats/x-pack/filebeat/module/iptables" _ "github.com/elastic/beats/x-pack/filebeat/module/netflow" _ "github.com/elastic/beats/x-pack/filebeat/module/palo_alto" + _ "github.com/elastic/beats/x-pack/filebeat/module/rabbitmq" _ "github.com/elastic/beats/x-pack/filebeat/module/suricata" _ "github.com/elastic/beats/x-pack/filebeat/module/zeek" ) diff --git a/x-pack/filebeat/module/rabbitmq/_meta/config.yml b/x-pack/filebeat/module/rabbitmq/_meta/config.yml new file mode 100644 index 000000000000..a11ac6ad620d --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/_meta/config.yml @@ -0,0 +1,11 @@ +#- module: rabbitmq + # All logs + #log: + #enabled: true + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: ["/var/log/rabbitmq/rabbit@localhost.log*"] + + # Convert the timestamp to UTC. Requires Elasticsearch >= 6.1. + #var.convert_timezone: false diff --git a/x-pack/filebeat/module/rabbitmq/_meta/docs.asciidoc b/x-pack/filebeat/module/rabbitmq/_meta/docs.asciidoc new file mode 100644 index 000000000000..21497b1c28d5 --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/_meta/docs.asciidoc @@ -0,0 +1,59 @@ +:modulename: rabbitmq +:has-dashboards: false + +== RabbitMQ module + +This is the module for parsing https://www.rabbitmq.com/logging.html[RabbitMQ log files] + +include::../include/what-happens.asciidoc[] + +[float] +=== Compatibility + +Parses https://www.rabbitmq.com/logging.html[single file format] introduced in 3.7.0. + +Tested with version 3.7.14. + +include::../include/running-modules.asciidoc[] + +include::../include/configuring-intro.asciidoc[] + +The following example shows how to set paths in the +modules.d/{modulename}.yml+ +file to override the default paths for RabbitMQ logs: + + +["source","yaml",subs="attributes"] +----- +- module: rabbitmq + log: + enabled: true + var.paths: ["/path/to/log/rabbitmq/*.log*"] +----- + + +To specify the same settings at the command line, you use: + +["source","sh",subs="attributes"] +----- +-M "rabbitmq.log.var.paths=[/path/to/log/rabbitmq/*.log*]" +----- + +:fileset_ex: log + +include::../include/config-option-intro.asciidoc[] + +[float] +==== `log` fileset settings + +include::../include/var-paths.asciidoc[] + +:default_convert_timezone: true + +include::../include/var-convert-timezone.asciidoc[] + +:has-dashboards!: + +:fileset_ex!: +:default_convert_timezone!: + +:modulename!: diff --git a/x-pack/filebeat/module/rabbitmq/_meta/fields.yml b/x-pack/filebeat/module/rabbitmq/_meta/fields.yml new file mode 100644 index 000000000000..af823334ce03 --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/_meta/fields.yml @@ -0,0 +1,9 @@ +- key: rabbitmq + title: "RabbitMQ" + description: > + RabbitMQ Module + fields: + - name: rabbitmq + type: group + description: > + fields: diff --git a/x-pack/filebeat/module/rabbitmq/fields.go b/x-pack/filebeat/module/rabbitmq/fields.go new file mode 100644 index 000000000000..d1f37b31ba77 --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/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 rabbitmq + +import ( + "github.com/elastic/beats/libbeat/asset" +) + +func init() { + if err := asset.SetFields("filebeat", "rabbitmq", asset.ModuleFieldsPri, AssetRabbitmq); err != nil { + panic(err) + } +} + +// AssetRabbitmq returns asset data. +// This is the base64 encoded gzipped contents of module/rabbitmq. +func AssetRabbitmq() string { + return "eJx0kMFuhSAURPd8xcS9xrgkjbsuXbTpD6BcKRGFAqb17xttNeLz3eWc5Mzk5hho4fCibXUcvxgQdTTEkb1vUfOWMUBS6Lx2UduJo2YAsGM0Vs6GGNBrMjLwjeaYxEiJd724OOJQ3s7uP7kxp6azzVh1ZHeyp8K/OyYbq9BrQ+GEr53nXqdlku/dAy3f1l9ZsuDjk/DqjZgUnLcdhYAHGf2I0a0/fymLqqqKsma/AQAA///y5GyB" +} diff --git a/x-pack/filebeat/module/rabbitmq/log/_meta/fields.yml b/x-pack/filebeat/module/rabbitmq/log/_meta/fields.yml new file mode 100644 index 000000000000..ba6eb5466291 --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/log/_meta/fields.yml @@ -0,0 +1,9 @@ +- name: log + type: group + description: > + RabbitMQ log files + fields: + - name: pid + type: keyword + description: The Erlang process id + example: <0.222.0> diff --git a/x-pack/filebeat/module/rabbitmq/log/config/log.yml b/x-pack/filebeat/module/rabbitmq/log/config/log.yml new file mode 100644 index 000000000000..c25012ab3158 --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/log/config/log.yml @@ -0,0 +1,19 @@ +type: log +paths: +{{ range $i, $path := .paths }} + - {{$path}} +{{ end }} +exclude_files: [".gz$"] + +# If the line doesn't start with a timestamp, consider it a continuation of the previous line +# From https://www.elastic.co/guide/en/beats/filebeat/current/_examples_of_multiline_configuration.html#_timestamps +# ideally, this would be the same pattern (`DATESTAMP`) used in `processors.grok.patterns` +multiline: + pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}' + negate: true + match: after + +processors: +{{ if .convert_timezone }} + - add_locale: ~ +{{ end }} \ No newline at end of file diff --git a/x-pack/filebeat/module/rabbitmq/log/ingest/pipeline.yml b/x-pack/filebeat/module/rabbitmq/log/ingest/pipeline.yml new file mode 100644 index 000000000000..a69e4bd831df --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/log/ingest/pipeline.yml @@ -0,0 +1,28 @@ +--- +description: Pipeline for parsing RabbitMQ logs +processors: +- grok: + field: message + pattern_definitions: + GREEDYMULTILINE: "(.|\n)*" + ERL_PID: "\\<%{INT}+\\.%{INT}+\\.%{INT}+\\>" + patterns: + - "%{DATESTAMP:timestamp} \\[%{WORD:log.level}\\] %{ERL_PID:rabbitmq.log.pid} + %{GREEDYMULTILINE:message}" + ignore_missing: true +- date: + field: timestamp + target_field: "@timestamp" + formats: + - yy-MM-dd HH:mm:ss.SSS + ignore_failure: true + #{< if .convert_timezone >} + timezone: "{{ event.timezone }}" + #{< end >} +- remove: + field: + - timestamp +on_failure: +- set: + field: error.message + value: "{{ _ingest.on_failure_message }}" \ No newline at end of file diff --git a/x-pack/filebeat/module/rabbitmq/log/manifest.yml b/x-pack/filebeat/module/rabbitmq/log/manifest.yml new file mode 100644 index 000000000000..da9f7d150b95 --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/log/manifest.yml @@ -0,0 +1,19 @@ +module_version: 1.0 + +var: + - name: paths + default: + - ${RABBITMQ_LOGS:/var/log/rabbitmq/rabbit@localhost.log*} + os.darwin: + - ${RABBITMQ_LOGS:/usr/local/var/log/rabbitmq/rabbit@localhost.log*} + os.windows: + #- '%APPDATA%\RabbitMQ\log\rabbit@localhost.log*' + - name: convert_timezone + default: true + # if ES < 6.1.0, this flag switches to false automatically when evaluating the + # pipeline + min_elasticsearch_version: + version: 6.1.0 + value: false +ingest_pipeline: ingest/pipeline.yml +input: config/log.yml diff --git a/x-pack/filebeat/module/rabbitmq/log/test/test.log b/x-pack/filebeat/module/rabbitmq/log/test/test.log new file mode 100644 index 000000000000..91a0d3a63e47 --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/log/test/test.log @@ -0,0 +1,78 @@ +2019-04-03 11:13:15.076 [info] <0.8.0> Log file opened with Lager +2019-04-03 11:13:15.510 [info] <0.222.0> + Starting RabbitMQ 3.7.14 on Erlang 21.3.2 + Copyright (C) 2007-2019 Pivotal Software, Inc. + Licensed under the MPL. See https://www.rabbitmq.com/ +2019-04-03 11:13:15.512 [info] <0.222.0> + node : rabbit@localhost + home dir : /Users/jfsiii + config file(s) : (none) + cookie hash : 1FLKC2GJUcbFjO6klcgs8Q== + log(s) : /usr/local/var/log/rabbitmq/rabbit@localhost.log + : /usr/local/var/log/rabbitmq/rabbit@localhost_upgrade.log + database dir : /usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost +2019-04-12 10:00:53.458 [info] <0.1398.0> RabbitMQ is asked to stop... +2019-04-12 10:00:53.550 [info] <0.1398.0> Stopping RabbitMQ applications and their dependencies in the following order: + rabbitmq_management + rabbitmq_stomp + rabbitmq_amqp1_0 + rabbitmq_mqtt + amqp_client + rabbitmq_web_dispatch + cowboy + cowlib + rabbitmq_management_agent + rabbit + mnesia + rabbit_common + sysmon_handler + os_mon + amqp10_common +2019-04-12 10:00:53.550 [info] <0.1398.0> Stopping application 'rabbitmq_management' +2019-04-12 10:00:54.553 [warning] <0.490.0> RabbitMQ HTTP listener registry could not find context rabbitmq_management_tls +2019-04-12 10:00:54.555 [info] <0.43.0> Application rabbitmq_management exited with reason: stopped +2019-04-12 10:00:54.567 [info] <0.1398.0> Stopping application 'rabbit' +2019-04-12 10:00:54.567 [info] <0.286.0> Peer discovery backend rabbit_peer_discovery_classic_config does not support registration, skipping unregistration. +2019-04-12 10:00:54.568 [info] <0.419.0> stopped TCP listener on 127.0.0.1:5672 +2019-04-12 10:00:54.569 [info] <0.324.0> Closing all connections in vhost '/' on node 'rabbit@localhost' because the vhost is stopping +2019-04-12 10:00:54.579 [info] <0.374.0> Stopping message store for directory '/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_persistent' +2019-04-12 10:00:54.588 [info] <0.374.0> Message store for directory '/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_persistent' is stopped +2019-04-12 10:00:54.589 [info] <0.371.0> Stopping message store for directory '/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_transient' +2019-04-12 10:00:54.598 [info] <0.371.0> Message store for directory '/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_transient' is stopped +2019-04-12 10:00:54.606 [info] <0.43.0> Application rabbit exited with reason: stopped +2019-04-12 10:00:54.615 [info] <0.1398.0> Successfully stopped RabbitMQ and its dependencies +2019-04-12 10:00:54.615 [info] <0.1398.0> Halting Erlang VM with the following applications: + ranch + ssl + public_key + sasl + inets + asn1 + crypto + jsx + xmerl + recon + lager + goldrush + compiler + syntax_tools + stdlib + kernel +2019-04-12 10:01:01.031 [info] <0.8.0> Server startup complete; 6 plugins started. + * rabbitmq_stomp + * rabbitmq_management + * rabbitmq_web_dispatch + * rabbitmq_amqp1_0 + * rabbitmq_mqtt + * rabbitmq_management_agent +2019-04-12 10:11:15.094 [info] <0.1345.0> accepting AMQP connection <0.1345.0> (127.0.0.1:64875 -> 127.0.0.1:5672) +2019-04-12 10:11:15.101 [info] <0.1345.0> connection <0.1345.0> (127.0.0.1:64875 -> 127.0.0.1:5672): user 'guest' authenticated and granted access to vhost '/' +2019-04-12 10:19:14.450 [error] <0.1345.0> Error on AMQP connection <0.1345.0> (127.0.0.1:64875 -> 127.0.0.1:5672, vhost: '/', user: 'guest', state: running), channel 0: + operation none caused a connection exception connection_forced: [240,159,145, + 139,240,159, + 143,190,240, + 159,144,135, + 240,159,164, + 163] +2019-04-12 10:19:14.450 [info] <0.1902.0> Closing connection <0.1345.0> because <<240,159,145,139,240,159,143,190,240,159,144,135,240,159,164,163>> +2019-04-12 10:19:14.451 [info] <0.1345.0> closing AMQP connection <0.1345.0> (127.0.0.1:64875 -> 127.0.0.1:5672, vhost: '/', user: 'guest') diff --git a/x-pack/filebeat/module/rabbitmq/log/test/test.log-expected.json b/x-pack/filebeat/module/rabbitmq/log/test/test.log-expected.json new file mode 100644 index 000000000000..01bb39566ef1 --- /dev/null +++ b/x-pack/filebeat/module/rabbitmq/log/test/test.log-expected.json @@ -0,0 +1,370 @@ +[ + { + "@timestamp": "2019-04-03T11:13:15.076Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 0, + "message": "Log file opened with Lager", + "rabbitmq.log.pid": "<0.8.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-03T11:13:15.510Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.level": "info", + "log.offset": 66, + "message": "\n Starting RabbitMQ 3.7.14 on Erlang 21.3.2\n Copyright (C) 2007-2019 Pivotal Software, Inc.\n Licensed under the MPL. See https://www.rabbitmq.com/", + "rabbitmq.log.pid": "<0.222.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-03T11:13:15.512Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.level": "info", + "log.offset": 255, + "message": " \n node : rabbit@localhost\n home dir : /Users/jfsiii\n config file(s) : (none)\n cookie hash : 1FLKC2GJUcbFjO6klcgs8Q==\n log(s) : /usr/local/var/log/rabbitmq/rabbit@localhost.log\n : /usr/local/var/log/rabbitmq/rabbit@localhost_upgrade.log\n database dir : /usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost", + "rabbitmq.log.pid": "<0.222.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:53.458Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 645, + "message": "RabbitMQ is asked to stop...", + "rabbitmq.log.pid": "<0.1398.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:53.550Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.level": "info", + "log.offset": 716, + "message": "Stopping RabbitMQ applications and their dependencies in the following order:\n rabbitmq_management\n rabbitmq_stomp\n rabbitmq_amqp1_0\n rabbitmq_mqtt\n amqp_client\n rabbitmq_web_dispatch\n cowboy\n cowlib\n rabbitmq_management_agent\n rabbit\n mnesia\n rabbit_common\n sysmon_handler\n os_mon\n amqp10_common", + "rabbitmq.log.pid": "<0.1398.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:53.550Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 1100, + "message": "Stopping application 'rabbitmq_management'", + "rabbitmq.log.pid": "<0.1398.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.553Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "warning", + "log.offset": 1185, + "message": "RabbitMQ HTTP listener registry could not find context rabbitmq_management_tls", + "rabbitmq.log.pid": "<0.490.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.555Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 1308, + "message": "Application rabbitmq_management exited with reason: stopped", + "rabbitmq.log.pid": "<0.43.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.567Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 1408, + "message": "Stopping application 'rabbit'", + "rabbitmq.log.pid": "<0.1398.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.567Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 1480, + "message": "Peer discovery backend rabbit_peer_discovery_classic_config does not support registration, skipping unregistration.", + "rabbitmq.log.pid": "<0.286.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.568Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 1637, + "message": "stopped TCP listener on 127.0.0.1:5672", + "rabbitmq.log.pid": "<0.419.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.569Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 1717, + "message": "Closing all connections in vhost '/' on node 'rabbit@localhost' because the vhost is stopping", + "rabbitmq.log.pid": "<0.324.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.579Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 1852, + "message": "Stopping message store for directory '/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_persistent'", + "rabbitmq.log.pid": "<0.374.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.588Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 2049, + "message": "Message store for directory '/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_persistent' is stopped", + "rabbitmq.log.pid": "<0.374.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.589Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 2248, + "message": "Stopping message store for directory '/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_transient'", + "rabbitmq.log.pid": "<0.371.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.598Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 2444, + "message": "Message store for directory '/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_transient' is stopped", + "rabbitmq.log.pid": "<0.371.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.606Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 2642, + "message": "Application rabbit exited with reason: stopped", + "rabbitmq.log.pid": "<0.43.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.615Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 2729, + "message": "Successfully stopped RabbitMQ and its dependencies", + "rabbitmq.log.pid": "<0.1398.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:00:54.615Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.level": "info", + "log.offset": 2822, + "message": "Halting Erlang VM with the following applications:\n ranch\n ssl\n public_key\n sasl\n inets\n asn1\n crypto\n jsx\n xmerl\n recon\n lager\n goldrush\n compiler\n syntax_tools\n stdlib\n kernel", + "rabbitmq.log.pid": "<0.1398.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:01:01.031Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.level": "info", + "log.offset": 3090, + "message": "Server startup complete; 6 plugins started.\n * rabbitmq_stomp\n * rabbitmq_management\n * rabbitmq_web_dispatch\n * rabbitmq_amqp1_0\n * rabbitmq_mqtt\n * rabbitmq_management_agent", + "rabbitmq.log.pid": "<0.8.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:11:15.094Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 3305, + "message": "accepting AMQP connection <0.1345.0> (127.0.0.1:64875 -> 127.0.0.1:5672)", + "rabbitmq.log.pid": "<0.1345.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:11:15.101Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 3420, + "message": "connection <0.1345.0> (127.0.0.1:64875 -> 127.0.0.1:5672): user 'guest' authenticated and granted access to vhost '/'", + "rabbitmq.log.pid": "<0.1345.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:19:14.450Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.flags": [ + "multiline" + ], + "log.level": "error", + "log.offset": 3580, + "message": "Error on AMQP connection <0.1345.0> (127.0.0.1:64875 -> 127.0.0.1:5672, vhost: '/', user: 'guest', state: running), channel 0:\n operation none caused a connection exception connection_forced: [240,159,145,\n 139,240,159,\n 143,190,240,\n 159,144,135,\n 240,159,164,\n 163]", + "rabbitmq.log.pid": "<0.1345.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:19:14.450Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 4211, + "message": "Closing connection <0.1345.0> because <<240,159,145,139,240,159,143,190,240,159,144,135,240,159,164,163>>", + "rabbitmq.log.pid": "<0.1902.0>", + "service.type": "rabbitmq" + }, + { + "@timestamp": "2019-04-12T10:19:14.451Z", + "ecs.version": "1.0.0", + "event.dataset": "rabbitmq.log", + "event.module": "rabbitmq", + "event.timezone": "+00:00", + "fileset.name": "log", + "input.type": "log", + "log.level": "info", + "log.offset": 4359, + "message": "closing AMQP connection <0.1345.0> (127.0.0.1:64875 -> 127.0.0.1:5672, vhost: '/', user: 'guest')", + "rabbitmq.log.pid": "<0.1345.0>", + "service.type": "rabbitmq" + } +] \ No newline at end of file diff --git a/x-pack/filebeat/modules.d/rabbitmq.yml.disabled b/x-pack/filebeat/modules.d/rabbitmq.yml.disabled new file mode 100644 index 000000000000..eac820cd3906 --- /dev/null +++ b/x-pack/filebeat/modules.d/rabbitmq.yml.disabled @@ -0,0 +1,14 @@ +# Module: rabbitmq +# Docs: https://www.elastic.co/guide/en/beats/filebeat/master/filebeat-module-rabbitmq.html + +#- module: rabbitmq + # All logs + #log: + #enabled: true + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: ["/var/log/rabbitmq/rabbit@localhost.log*"] + + # Convert the timestamp to UTC. Requires Elasticsearch >= 6.1. + #var.convert_timezone: false From 88660dce775151b01872188fa37c276d2d91c7cd Mon Sep 17 00:00:00 2001 From: Alex K <8418476+fearful-symmetry@users.noreply.github.com> Date: Fri, 17 May 2019 08:49:56 -0400 Subject: [PATCH 50/59] [metricbeat] Add linux sockstat data to socket_summary metricset (#12050) * add sockstat data to socket_summary --- metricbeat/docs/fields.asciidoc | 34 +++++ metricbeat/module/system/fields.go | 2 +- .../system/socket_summary/_meta/fields.yml | 14 ++ .../socket_summary/_meta/testdata/sockstat | 6 + .../system/socket_summary/socket_summary.go | 19 ++- .../system/socket_summary/sockstat_linux.go | 134 ++++++++++++++++++ .../socket_summary/sockstat_linux_test.go | 37 +++++ .../system/socket_summary/sockstat_other.go | 28 ++++ 8 files changed, 268 insertions(+), 6 deletions(-) create mode 100644 metricbeat/module/system/socket_summary/_meta/testdata/sockstat create mode 100644 metricbeat/module/system/socket_summary/sockstat_linux.go create mode 100644 metricbeat/module/system/socket_summary/sockstat_linux_test.go create mode 100644 metricbeat/module/system/socket_summary/sockstat_other.go diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 044af1ca15eb..d810c35196e4 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -25959,6 +25959,18 @@ All TCP connections +*`system.socket.summary.tcp.memory`*:: ++ +-- +type: integer + +format: bytes + +Memory used by TCP sockets in bytes, based on number of allocated pages and system page size. Corresponds to limits set in /proc/sys/net/ipv4/tcp_mem. Only available on Linux. + + +-- + [float] == all fields @@ -25966,6 +25978,16 @@ All TCP connections +*`system.socket.summary.tcp.all.orphan`*:: ++ +-- +type: integer + +A count of all orphaned tcp sockets. Only available on Linux. + + +-- + *`system.socket.summary.tcp.all.count`*:: + -- @@ -26023,6 +26045,18 @@ All UDP connections +*`system.socket.summary.udp.memory`*:: ++ +-- +type: integer + +format: bytes + +Memory used by UDP sockets in bytes, based on number of allocated pages and system page size. Corresponds to limits set in /proc/sys/net/ipv4/udp_mem. Only available on Linux. + + +-- + [float] == all fields diff --git a/metricbeat/module/system/fields.go b/metricbeat/module/system/fields.go index 27b315c5c450..f2cb76b59b24 100644 --- a/metricbeat/module/system/fields.go +++ b/metricbeat/module/system/fields.go @@ -32,5 +32,5 @@ func init() { // AssetSystem returns asset data. // This is the base64 encoded gzipped contents of ../metricbeat/module/system. func AssetSystem() string { - return "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" + return "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" } diff --git a/metricbeat/module/system/socket_summary/_meta/fields.yml b/metricbeat/module/system/socket_summary/_meta/fields.yml index 7962365884f6..4720178b599e 100644 --- a/metricbeat/module/system/socket_summary/_meta/fields.yml +++ b/metricbeat/module/system/socket_summary/_meta/fields.yml @@ -23,11 +23,20 @@ description: > All TCP connections fields: + - name: memory + type: integer + format: bytes + description: > + Memory used by TCP sockets in bytes, based on number of allocated pages and system page size. Corresponds to limits set in /proc/sys/net/ipv4/tcp_mem. Only available on Linux. - name: all type: group description: > All TCP connections fields: + - name: orphan + type: integer + description: > + A count of all orphaned tcp sockets. Only available on Linux. - name: count type: integer description: > @@ -53,6 +62,11 @@ description: > All UDP connections fields: + - name: memory + type: integer + format: bytes + description: > + Memory used by UDP sockets in bytes, based on number of allocated pages and system page size. Corresponds to limits set in /proc/sys/net/ipv4/udp_mem. Only available on Linux. - name: all type: group description: > diff --git a/metricbeat/module/system/socket_summary/_meta/testdata/sockstat b/metricbeat/module/system/socket_summary/_meta/testdata/sockstat new file mode 100644 index 000000000000..f605ef3baba5 --- /dev/null +++ b/metricbeat/module/system/socket_summary/_meta/testdata/sockstat @@ -0,0 +1,6 @@ +sockets: used 249 +TCP: inuse 2 orphan 0 tw 0 alloc 12 mem 1 +UDP: inuse 2 mem 11 +UDPLITE: inuse 0 +RAW: inuse 0 +FRAG: inuse 0 memory 0 \ No newline at end of file diff --git a/metricbeat/module/system/socket_summary/socket_summary.go b/metricbeat/module/system/socket_summary/socket_summary.go index 6ad29a7c2108..d3c34b01f4b4 100644 --- a/metricbeat/module/system/socket_summary/socket_summary.go +++ b/metricbeat/module/system/socket_summary/socket_summary.go @@ -20,6 +20,7 @@ package socket_summary import ( "syscall" + "github.com/pkg/errors" "github.com/shirou/gopsutil/net" "github.com/elastic/beats/libbeat/common" @@ -43,6 +44,7 @@ func init() { // interface methods except for Fetch. type MetricSet struct { mb.BaseMetricSet + sockstat string } // New creates a new instance of the MetricSet. New is responsible for unpacking @@ -114,17 +116,24 @@ func calculateConnStats(conns []net.ConnectionStat) common.MapStr { // Fetch methods 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(report mb.ReporterV2) { - +func (m *MetricSet) Fetch(report mb.ReporterV2) error { // all network connections conns, err := net.Connections("inet") if err != nil { - report.Error(err) - return + return errors.Wrap(err, "error getting connections") + } + + stats := calculateConnStats(conns) + newStats, err := applyEnhancements(stats, m) + if err != nil { + m.Logger().Debugf("error applying enhancements: %s", err) + newStats = stats } report.Event(mb.Event{ - MetricSetFields: calculateConnStats(conns), + MetricSetFields: newStats, }) + + return nil } diff --git a/metricbeat/module/system/socket_summary/sockstat_linux.go b/metricbeat/module/system/socket_summary/sockstat_linux.go new file mode 100644 index 000000000000..9c6d5ac2b357 --- /dev/null +++ b/metricbeat/module/system/socket_summary/sockstat_linux.go @@ -0,0 +1,134 @@ +// 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. + +// +build linux + +package socket_summary + +import ( + "bufio" + "fmt" + "os" + "path/filepath" + + "github.com/pkg/errors" + + "github.com/elastic/beats/libbeat/common" + "github.com/elastic/beats/metricbeat/module/system" +) + +// SockStat contains data from /proc/net/sockstat +type SockStat struct { + //The count of all sockets in use on the system, in the most liberal definition. See `ss -s` and `ss -a` for more. + SocketsUsed int + //Total in use TCP sockets + TCPInUse int + //Total 'orphaned' TCP sockets + TCPOrphan int + //Sockets in TIME_WAIT + TCPTW int + //Total allocated sockets + TCPAlloc int + //Socket memory use, in pages + TCPMem int + //In use UDP sockets + UDPInUse int + //Socket memory use, in pages + UDPMem int + //UDP-Lite in use sockets + UDPLiteInUse int + //In Use raw sockets + RawInUse int + //FRAG sockets in use + FragInUse int + //Frag memory, in bytes + FragMemory int +} + +// applyEnhancements gets a list of platform-specific enhancements and apply them to our mapStr object. +func applyEnhancements(data common.MapStr, m *MetricSet) (common.MapStr, error) { + systemModule, ok := m.BaseMetricSet.Module().(*system.Module) + if !ok { + return nil, errors.New("unexpected module type") + } + dir := filepath.Join(systemModule.HostFS, "/proc/net/sockstat") + pageSize := os.Getpagesize() + + stat, err := parseSockstat(dir) + if err != nil { + return nil, errors.Wrap(err, "error getting sockstat data") + } + data.Put("tcp.all.orphan", stat.TCPOrphan) + data.Put("tcp.memory", pageSize*stat.TCPMem) + data.Put("udp.memory", pageSize*stat.UDPMem) + + return data, nil + +} + +// parseSockstat parses the ipv4 sockstat file +//see net/ipv4/proc.c +func parseSockstat(path string) (SockStat, error) { + fd, err := os.Open(path) + if err != nil { + return SockStat{}, err + } + + var ss SockStat + scanfLines := []string{ + "sockets: used %d", + "TCP: inuse %d orphan %d tw %d alloc %d mem %d", + "UDP: inuse %d mem %d", + "UDPLITE: inuse %d", + "RAW: inuse %d", + "FRAG: inuse %d memory %d", + } + scanfOut := [][]interface{}{ + {&ss.SocketsUsed}, + {&ss.TCPInUse, &ss.TCPOrphan, &ss.TCPTW, &ss.TCPAlloc, &ss.TCPMem}, + {&ss.UDPInUse, &ss.UDPMem}, + {&ss.UDPLiteInUse}, + {&ss.RawInUse}, + {&ss.FragInUse, &ss.FragMemory}, + } + + scanner := bufio.NewScanner(fd) + + iter := 0 + for scanner.Scan() { + //bail if we've iterated more times than expected + if iter >= len(scanfLines) { + return ss, nil + } + txt := scanner.Text() + count, err := fmt.Sscanf(txt, scanfLines[iter], scanfOut[iter]...) + if err != nil { + return ss, errors.Wrap(err, "error reading sockstat") + } + if count != len(scanfOut[iter]) { + return ss, fmt.Errorf("did not match fields in line %s", scanfLines[iter]) + } + + iter++ + } + + if err = scanner.Err(); err != nil { + return ss, errors.Wrap(err, "error in scan") + } + + return ss, nil +} diff --git a/metricbeat/module/system/socket_summary/sockstat_linux_test.go b/metricbeat/module/system/socket_summary/sockstat_linux_test.go new file mode 100644 index 000000000000..03d1f30afea7 --- /dev/null +++ b/metricbeat/module/system/socket_summary/sockstat_linux_test.go @@ -0,0 +1,37 @@ +// 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. + +// +build linux + +package socket_summary + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestSockstat(t *testing.T) { + out, err := parseSockstat("./_meta/testdata/sockstat") + if err != nil { + t.Fatal(err) + } + + assert.Equal(t, out.TCPMem, 1) + assert.Equal(t, out.TCPOrphan, 0) + assert.Equal(t, out.UDPMem, 11) +} diff --git a/metricbeat/module/system/socket_summary/sockstat_other.go b/metricbeat/module/system/socket_summary/sockstat_other.go new file mode 100644 index 000000000000..071b6faecca4 --- /dev/null +++ b/metricbeat/module/system/socket_summary/sockstat_other.go @@ -0,0 +1,28 @@ +// 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. + +// +build !linux + +package socket_summary + +import "github.com/elastic/beats/libbeat/common" + +//a stub function for non-linux systems +//get a list of platform-specific enhancements and apply them to our mapStr object. +func applyEnhancements(data common.MapStr, m *MetricSet) (common.MapStr, error) { + return data, nil +} From 6914806fe935093b56c55c78be29d5584e3ed0c6 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Mon, 20 May 2019 11:26:59 +0200 Subject: [PATCH 51/59] Fix goroutine leak on non-explicit finalization of log inputs (#12164) If log inputs were finished because their context, or one of their ouleters have been finished, then it wasn't stopping its harvesters, leaking resources. --- CHANGELOG.next.asciidoc | 1 + filebeat/input/log/input.go | 33 +++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f997f507de36..e4874c185ece 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -95,6 +95,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Reduce memory usage if long lines are truncated to fit `max_bytes` limit. The line buffer is copied into a smaller buffer now. This allows the runtime to release unused memory earlier. {pull}11524[11524] - Fix memory leak in Filebeat pipeline acker. {pull}12063[12063] - Fix goroutine leak caused on initialization failures of log input. {pull}12125[12125] +- Fix goroutine leak on non-explicit finalization of log input. {pull}12164[12164] *Heartbeat* diff --git a/filebeat/input/log/input.go b/filebeat/input/log/input.go index ea19c20033be..6c19762ede9a 100644 --- a/filebeat/input/log/input.go +++ b/filebeat/input/log/input.go @@ -24,6 +24,7 @@ import ( "path/filepath" "sort" "strings" + "sync" "time" "github.com/elastic/beats/filebeat/channel" @@ -68,6 +69,7 @@ type Input struct { done chan struct{} numHarvesters atomic.Uint32 meta map[string]string + stopOnce sync.Once } // NewInput instantiates a new Log @@ -146,6 +148,8 @@ func NewInput( logp.Info("Configured paths: %v", p.config.Paths) cleanupNeeded = false + go p.stopWhenDone() + return p, nil } @@ -727,14 +731,27 @@ func (p *Input) Wait() { // Stop stops all harvesters and then stops the input func (p *Input) Stop() { - // Stop all harvesters - // In case the beatDone channel is closed, this will not wait for completion - // Otherwise Stop will wait until output is complete - p.harvesters.Stop() + p.stopOnce.Do(func() { + // Stop all harvesters + // In case the beatDone channel is closed, this will not wait for completion + // Otherwise Stop will wait until output is complete + p.harvesters.Stop() + + // close state updater + p.stateOutlet.Close() + + // stop all communication between harvesters and publisher pipeline + p.outlet.Close() + }) +} - // close state updater - p.stateOutlet.Close() +// stopWhenDone takes care of stopping the input if some of the contexts are done +func (p *Input) stopWhenDone() { + select { + case <-p.done: + case <-p.stateOutlet.Done(): + case <-p.outlet.Done(): + } - // stop all communication between harvesters and publisher pipeline - p.outlet.Close() + p.Wait() } From 0495f6cc208f03db103dd2839515012134cbdbe2 Mon Sep 17 00:00:00 2001 From: Ioannis Androulidakis Date: Mon, 20 May 2019 11:31:09 +0200 Subject: [PATCH 52/59] [Metricbeat] CoreDNS module: Add Kibana Dashboard (#11619) * [Metricbeat] CoreDNS module: Add Kibana Dashboard Fixes https://github.com/elastic/beats/issues/10432. --- .../images/metricbeat_coredns_dashboard.png | Bin 0 -> 94127 bytes metricbeat/docs/modules_list.asciidoc | 2 +- .../Metricbeat-coredns-overview.json | 1371 +++++++++++++++++ metricbeat/module/coredns/module.yaml | 3 + metricbeat/module/coredns/stats/README.md | 69 + 5 files changed, 1444 insertions(+), 1 deletion(-) create mode 100644 metricbeat/docs/images/metricbeat_coredns_dashboard.png create mode 100644 metricbeat/module/coredns/_meta/kibana/7/dashboard/Metricbeat-coredns-overview.json create mode 100644 metricbeat/module/coredns/module.yaml create mode 100644 metricbeat/module/coredns/stats/README.md diff --git a/metricbeat/docs/images/metricbeat_coredns_dashboard.png b/metricbeat/docs/images/metricbeat_coredns_dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..c64aa2e93d2082775d93efe609b746a168193564 GIT binary patch literal 94127 zcmeFYRa9I{yEcjh2~Kc#3mP=I1_>J6-J#LOJ%j+kgF8WkJB_=$q;U)G4vq77*8bL7 z`yXeVi+yn}&KSFHXlB(cdFqv?-g;-aijoXE3NZ={3=F!QtduGY41y*M3|uxcBJ@d! zSNuBkPq??bHc-{XgVM>x(bC4=f)eQEWI<`+X=4ck}vI4sy{{R$rV)E+Dnk4Rs?mvzF(&2z^%RgIPNZt+Niz$01n8%VKR-t#8# zM7-?@3FlNqf@b;gDxNu$-DF?GF2?fh4oQ>bsLA2c(nOG!&=ai8EsG^b`D6eL3<|Oh zbW+-i3Ib-105%hIM^g(nPkd9f8wX+P)0PfuN*i-wYAqf` z4n-$P3u_x$Zx;(SZzXjzZ#y%7b81l$6d_LmXa@ibpb4cXz}~@Cz*Cs|uYLufzyCaD zr>6X?3D8cMT3bP53c(OXU(){V-zxt4}a5ZzWaRS;n zI#B-U)5O%#4Jb@a4XvmAPv?I&;Gf

    k?C6b|-3HSF)$IN1MtbD)jo|4Z{fHUBpM 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Г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%0DdVhB@h>k4&1DWnQcVwiq=J4Gw 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 |<> beta[] |image:./images/icon-no.png[No prebuilt dashboards] | .1+| .1+| |<> beta[] -|<> beta[] |image:./images/icon-no.png[No prebuilt dashboards] | +|<> beta[] |image:./images/icon-yes.png[Prebuilt dashboards are available] | .1+| .1+| |<> beta[] |<> |image:./images/icon-no.png[No prebuilt dashboards] | .3+| .3+| |<> diff --git a/metricbeat/module/coredns/_meta/kibana/7/dashboard/Metricbeat-coredns-overview.json b/metricbeat/module/coredns/_meta/kibana/7/dashboard/Metricbeat-coredns-overview.json new file mode 100644 index 000000000000..7a13c840488f --- /dev/null +++ b/metricbeat/module/coredns/_meta/kibana/7/dashboard/Metricbeat-coredns-overview.json @@ -0,0 +1,1371 @@ +{ + "objects": [ + { + "attributes": { + "description": "Overview of CoreDNS server metrics.", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "lucene", + "query": "" + } + } + }, + "optionsJSON": { + "darkTheme": false, + "hidePanelTitles": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": {}, + "gridData": { + "h": 10, + "i": "1", + "w": 10, + "x": 0, + "y": 0 + }, + "panelIndex": "1", + "panelRefName": "panel_0", + "version": "6.7.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 10, + "i": "2", + "w": 14, + "x": 10, + "y": 0 + }, + "panelIndex": "2", + "panelRefName": "panel_1", + "version": "6.7.0" + }, + { + "embeddableConfig": { + "vis": { + "colors": { + "NXDOMAIN": "#99440A" + } + } + }, + "gridData": { + "h": 15, + "i": "3", + "w": 19, + "x": 24, + "y": 25 + }, + "panelIndex": "3", + "panelRefName": "panel_2", + "version": "6.7.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 14, + "i": "10", + "w": 24, + "x": 0, + "y": 40 + }, + "panelIndex": "10", + "panelRefName": "panel_3", + "version": "6.7.0" + }, + { + "embeddableConfig": { + "vis": { + "colors": { + "tcp - 1": "#B7DBAB", + "udp - 1": "#5195CE" + }, + "legendOpen": true + } + }, + "gridData": { + "h": 10, + "i": "11", + "w": 19, + "x": 24, + "y": 0 + }, + "panelIndex": "11", + "panelRefName": "panel_4", + "version": "7.0.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "12", + "w": 19, + "x": 24, + "y": 10 + }, + "panelIndex": "12", + "panelRefName": "panel_5", + "version": "7.0.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "15", + "w": 24, + "x": 0, + "y": 10 + }, + "panelIndex": "15", + "panelRefName": "panel_6", + "version": "7.0.0" + }, + { + "embeddableConfig": {}, + "gridData": { + "h": 15, + "i": "16", + "w": 24, + "x": 0, + "y": 25 + }, + "panelIndex": "16", + "panelRefName": "panel_7", + "version": "7.0.0" + } + ], + "timeRestore": false, + "title": "[Metricbeat CoreDNS] Overview ECS", + "version": 1 + }, + "id": "Metricbeat-CoreDNS-Dashboard-ecs", + "migrationVersion": { + "dashboard": "7.0.0" + }, + "references": [ + { + "id": "36e08510-53c4-11e9-b466-9be470bbd327-ecs", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "a19df590-53c4-11e9-b466-9be470bbd327-ecs", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "27da53f0-53d5-11e9-b466-9be470bbd327-ecs", + "name": "panel_2", + "type": "visualization" + }, + { + "id": "277fc650-67a9-11e9-a534-715561d0bf42", + "name": "panel_3", + "type": "visualization" + }, + { + "id": "86177430-728d-11e9-b0d0-414c3011ddbb", + "name": "panel_4", + "type": "visualization" + }, + { + "id": "a58345f0-7298-11e9-b0d0-414c3011ddbb", + "name": "panel_5", + "type": "visualization" + }, + { + "id": "57c74300-7308-11e9-b0d0-414c3011ddbb", + "name": "panel_6", + "type": "visualization" + }, + { + "id": "4804eaa0-7315-11e9-b0d0-414c3011ddbb", + "name": "panel_7", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2019-05-10T11:25:44.629Z", + "version": "WzE3MzcsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "exists": { + "field": "coredns.stats.panic.count" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "coredns.stats.panic.count", + "negate": false, + "type": "exists", + "value": "exists" + } + } + ], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "lucene", + "query": "" + } + } + }, + "title": "Panic Count [Metricbeat CoreDNS] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "field": "coredns.stats.panic.count", + "percents": [ + 100 + ] + }, + "schema": "metric", + "type": "percentiles" + } + ], + "params": { + "addLegend": false, + "addTooltip": true, + "metric": { + "colorSchema": "Green to Red", + "colorsRange": [ + { + "from": 0, + "to": 10000 + } + ], + "invertColors": false, + "labels": { + "show": false + }, + "metricColorMode": "None", + "percentageMode": false, + "style": { + "bgColor": false, + "bgFill": "#000", + "fontSize": 60, + "labelColor": false, + "subText": "" + }, + "useRanges": false + }, + "type": "metric" + }, + "title": "Panic Count [Metricbeat CoreDNS] ECS", + "type": "metric" + } + }, + "id": "36e08510-53c4-11e9-b466-9be470bbd327-ecs", + "migrationVersion": { + "visualization": "7.0.0" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-05-10T07:46:22.258Z", + "version": "WzE1MjcsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "exists": { + "field": "coredns.stats.dns.request.do.count" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "coredns.stats.dns.request.do.count", + "negate": false, + "type": "exists", + "value": "exists" + } + } + ], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "lucene", + "query": "" + } + } + }, + "title": "DO Count [Metricbeat CoreDNS] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "customLabel": "DO Count", + "field": "coredns.stats.dns.request.do.count", + "percents": [ + 100 + ] + }, + "schema": "metric", + "type": "percentiles" + } + ], + "params": { + "addLegend": false, + "addTooltip": true, + "metric": { + "colorSchema": "Green to Red", + "colorsRange": [ + { + "from": 0, + "to": 10000 + } + ], + "invertColors": false, + "labels": { + "show": false + }, + "metricColorMode": "None", + "percentageMode": false, + "style": { + "bgColor": false, + "bgFill": "#000", + "fontSize": 60, + "labelColor": false, + "subText": "" + }, + "useRanges": false + }, + "type": "metric" + }, + "title": "DO Count [Metricbeat CoreDNS] ECS", + "type": "metric" + } + }, + "id": "a19df590-53c4-11e9-b466-9be470bbd327-ecs", + "migrationVersion": { + "visualization": "7.0.0" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-05-10T07:46:22.258Z", + "version": "WzE1MjgsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "lucene", + "query": "" + } + } + }, + "title": "Responses by Rcode [Metricbeat CoreDNS] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "customLabel": "Response per rcode", + "field": "coredns.stats.dns.response.rcode.count" + }, + "schema": "metric", + "type": "avg" + }, + { + "enabled": true, + "id": "5", + "params": { + "customLabel": "server", + "field": "coredns.stats.server", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "row": true, + "size": 5 + }, + "schema": "split", + "type": "terms" + }, + { + "enabled": true, + "id": "3", + "params": { + "customInterval": "2h", + "drop_partials": false, + "extended_bounds": {}, + "field": "@timestamp", + "interval": "auto", + "min_doc_count": 1, + "timeRange": { + "from": "now-15m", + "to": "now" + }, + "useNormalizedEsInterval": true + }, + "schema": "segment", + "type": "date_histogram" + }, + { + "enabled": true, + "id": "4", + "params": { + "field": "coredns.stats.rcode", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "group", + "type": "terms" + }, + { + "enabled": true, + "id": "6", + "params": { + "field": "coredns.stats.zone", + "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": { + "show": true, + "truncate": 100 + }, + "position": "bottom", + "scale": { + "type": "linear" + }, + "show": true, + "style": {}, + "title": {}, + "type": "category" + } + ], + "grid": { + "categoryLines": false, + "style": { + "color": "#eee" + } + }, + "legendPosition": "right", + "seriesParams": [ + { + "data": { + "id": "1", + "label": "Response per rcode" + }, + "drawLinesBetweenPoints": true, + "interpolate": "linear", + "lineWidth": 1, + "mode": "normal", + "show": "true", + "showCircles": true, + "type": "line", + "valueAxis": "ValueAxis-1" + } + ], + "times": [], + "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": "Response per rcode" + }, + "type": "value" + } + ] + }, + "title": "Responses by Rcode [Metricbeat CoreDNS] ECS", + "type": "line" + } + }, + "id": "27da53f0-53d5-11e9-b466-9be470bbd327-ecs", + "migrationVersion": { + "visualization": "7.0.0" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-05-10T07:46:22.258Z", + "version": "WzE1MjksMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "lucene", + "query": "" + } + } + }, + "title": " Cache Hits, Misses [Metricbeat CoreDNS] ECS", + "uiStateJSON": { + "vis": { + "colors": { + "Average coredns.stats.dns.cache.misses.count": "#E24D42", + "Hits": "#9AC48A", + "Misses": "#EA6460" + } + } + }, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "customLabel": "Hits", + "field": "coredns.stats.dns.cache.hits.count" + }, + "schema": "metric", + "type": "max" + }, + { + "enabled": true, + "id": "2", + "params": { + "customInterval": "2h", + "drop_partials": false, + "extended_bounds": {}, + "field": "@timestamp", + "interval": "auto", + "min_doc_count": 0, + "timeRange": { + "from": "now-30m", + "to": "now" + }, + "useNormalizedEsInterval": true + }, + "schema": "segment", + "type": "date_histogram" + }, + { + "enabled": true, + "id": "3", + "params": { + "customLabel": "Misses", + "field": "coredns.stats.dns.cache.misses.count" + }, + "schema": "metric", + "type": "max" + }, + { + "enabled": true, + "id": "4", + "params": { + "customLabel": "server", + "field": "coredns.stats.server", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "row": true, + "size": 5 + }, + "schema": "split", + "type": "terms" + } + ], + "params": { + "addLegend": true, + "addTimeMarker": false, + "addTooltip": true, + "categoryAxes": [ + { + "id": "CategoryAxis-1", + "labels": { + "show": true, + "truncate": 100 + }, + "position": "bottom", + "scale": { + "type": "linear" + }, + "show": true, + "style": {}, + "title": {}, + "type": "category" + } + ], + "grid": { + "categoryLines": false, + "style": { + "color": "#eee" + } + }, + "legendPosition": "right", + "seriesParams": [ + { + "data": { + "id": "1", + "label": "Hits" + }, + "drawLinesBetweenPoints": true, + "mode": "normal", + "show": "true", + "showCircles": true, + "type": "line", + "valueAxis": "ValueAxis-1" + }, + { + "data": { + "id": "3", + "label": "Misses" + }, + "drawLinesBetweenPoints": true, + "mode": "normal", + "show": true, + "showCircles": true, + "type": "line", + "valueAxis": "ValueAxis-2" + } + ], + "times": [], + "type": "line", + "valueAxes": [ + { + "id": "ValueAxis-1", + "labels": { + "filter": false, + "rotate": 0, + "show": true, + "truncate": 100 + }, + "name": "LeftAxis-1", + "position": "left", + "scale": { + "defaultYExtents": false, + "mode": "normal", + "setYExtents": false, + "type": "linear" + }, + "show": true, + "style": {}, + "title": { + "text": "Hits" + }, + "type": "value" + }, + { + "id": "ValueAxis-2", + "labels": { + "filter": false, + "rotate": 0, + "show": true, + "truncate": 100 + }, + "name": "RightAxis-1", + "position": "right", + "scale": { + "mode": "normal", + "type": "linear" + }, + "show": true, + "style": {}, + "title": { + "text": "Misses" + }, + "type": "value" + } + ] + }, + "title": " Cache Hits, Misses [Metricbeat CoreDNS] ECS", + "type": "line" + } + }, + "id": "277fc650-67a9-11e9-a534-715561d0bf42", + "migrationVersion": { + "visualization": "7.0.0" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-05-10T07:46:22.258Z", + "version": "WzE1MzAsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Requests by Zone [Metricbeat CoreDNS] ECS", + "uiStateJSON": { + "vis": { + "legendOpen": true + } + }, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "aggregate": "max", + "customLabel": "Request count", + "field": "coredns.stats.dns.request.count", + "size": 1, + "sortField": "@timestamp", + "sortOrder": "desc" + }, + "schema": "metric", + "type": "top_hits" + }, + { + "enabled": true, + "id": "2", + "params": { + "customLabel": "server", + "field": "coredns.stats.server", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "_key", + "otherBucket": false, + "otherBucketLabel": "Other", + "row": true, + "size": 5 + }, + "schema": "split", + "type": "terms" + }, + { + "enabled": true, + "id": "4", + "params": { + "customLabel": "zone", + "field": "coredns.stats.zone", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "_key", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + }, + { + "enabled": true, + "id": "5", + "params": { + "customLabel": "protocol", + "field": "coredns.stats.proto", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "_key", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "group", + "type": "terms" + }, + { + "enabled": true, + "id": "6", + "params": { + "customLabel": "family", + "field": "coredns.stats.family", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "_key", + "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": 200 + }, + "position": "left", + "scale": { + "type": "linear" + }, + "show": true, + "style": {}, + "title": {}, + "type": "category" + } + ], + "grid": { + "categoryLines": false + }, + "legendPosition": "right", + "orderBucketsBySum": false, + "seriesParams": [ + { + "data": { + "id": "1", + "label": "Request count" + }, + "drawLinesBetweenPoints": true, + "mode": "stacked", + "show": true, + "showCircles": true, + "type": "histogram", + "valueAxis": "ValueAxis-1" + } + ], + "times": [], + "type": "histogram", + "valueAxes": [ + { + "id": "ValueAxis-1", + "labels": { + "filter": true, + "rotate": 75, + "show": true, + "truncate": 100 + }, + "name": "BottomAxis-1", + "position": "bottom", + "scale": { + "mode": "normal", + "type": "linear" + }, + "show": true, + "style": {}, + "title": { + "text": "Request count" + }, + "type": "value" + } + ] + }, + "title": "Requests by Zone [Metricbeat CoreDNS] ECS", + "type": "horizontal_bar" + } + }, + "id": "86177430-728d-11e9-b0d0-414c3011ddbb", + "migrationVersion": { + "visualization": "7.0.0" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-05-10T07:46:22.258Z", + "version": "WzE1MzEsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Requests by Type [Metricbeat CoreDNS] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "aggregate": "max", + "customLabel": "Requests", + "field": "coredns.stats.dns.request.type.count", + "size": 1, + "sortField": "@timestamp", + "sortOrder": "desc" + }, + "schema": "metric", + "type": "top_hits" + }, + { + "enabled": true, + "id": "2", + "params": { + "customLabel": "server", + "field": "coredns.stats.server", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "_key", + "otherBucket": false, + "otherBucketLabel": "Other", + "row": true, + "size": 5 + }, + "schema": "split", + "type": "terms" + }, + { + "enabled": true, + "id": "3", + "params": { + "customInterval": "2h", + "drop_partials": false, + "extended_bounds": {}, + "field": "@timestamp", + "interval": "auto", + "min_doc_count": 1, + "timeRange": { + "from": "now-15m", + "to": "now" + }, + "useNormalizedEsInterval": true + }, + "schema": "segment", + "type": "date_histogram" + }, + { + "enabled": true, + "id": "4", + "params": { + "field": "coredns.stats.zone", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "_key", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "group", + "type": "terms" + }, + { + "enabled": true, + "id": "5", + "params": { + "field": "coredns.stats.type", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "_key", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "group", + "type": "terms" + } + ], + "params": { + "addLegend": true, + "addTimeMarker": false, + "addTooltip": true, + "categoryAxes": [ + { + "id": "CategoryAxis-1", + "labels": { + "show": true, + "truncate": 100 + }, + "position": "bottom", + "scale": { + "type": "linear" + }, + "show": true, + "style": {}, + "title": {}, + "type": "category" + } + ], + "grid": { + "categoryLines": false + }, + "legendPosition": "right", + "seriesParams": [ + { + "data": { + "id": "1", + "label": "Requests" + }, + "drawLinesBetweenPoints": true, + "mode": "normal", + "show": "true", + "showCircles": true, + "type": "line", + "valueAxis": "ValueAxis-1" + } + ], + "times": [], + "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": "Requests" + }, + "type": "value" + } + ] + }, + "title": "Requests by Type [Metricbeat CoreDNS] ECS", + "type": "line" + } + }, + "id": "a58345f0-7298-11e9-b0d0-414c3011ddbb", + "migrationVersion": { + "visualization": "7.0.0" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-05-10T07:46:22.258Z", + "version": "WzE1MzIsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Avg Request Duration (cumulative) [Metricbeat CoreDNS] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [], + "params": { + "axis_formatter": "number", + "axis_position": "left", + "axis_scale": "normal", + "default_index_pattern": "metricbeat-*", + "id": "61ca57f0-469d-11e7-af02-69e470af7417", + "index_pattern": "", + "interval": "auto", + "series": [ + { + "axis_position": "right", + "chart_type": "line", + "color": "#68BC00", + "fill": "0.1", + "filter": "", + "formatter": "number", + "id": "61ca57f1-469d-11e7-af02-69e470af7417", + "label": "Avg Request Duration (ms)", + "line_width": 1, + "metrics": [ + { + "agg_with": "max", + "field": "coredns.stats.dns.request.duration.ns.sum", + "id": "61ca57f2-469d-11e7-af02-69e470af7417", + "order": "desc", + "order_by": "@timestamp", + "size": 1, + "type": "sum" + }, + { + "agg_with": "max", + "field": "coredns.stats.dns.request.duration.ns.count", + "id": "f6c82d30-7307-11e9-aba0-4f43d70788c6", + "order": "desc", + "order_by": "@timestamp", + "size": 1, + "type": "sum" + }, + { + "id": "1d9de350-7308-11e9-aba0-4f43d70788c6", + "script": "params.sum / params.count / 1e6", + "type": "calculation", + "variables": [ + { + "field": "61ca57f2-469d-11e7-af02-69e470af7417", + "id": "20eee310-7308-11e9-aba0-4f43d70788c6", + "name": "sum" + }, + { + "field": "f6c82d30-7307-11e9-aba0-4f43d70788c6", + "id": "2e4139f0-7308-11e9-aba0-4f43d70788c6", + "name": "count" + } + ] + } + ], + "point_size": 1, + "separate_axis": 0, + "split_filters": [ + { + "color": "#68BC00", + "filter": "", + "id": "505e0670-7309-11e9-aba0-4f43d70788c6", + "label": "" + } + ], + "split_mode": "terms", + "stacked": "none", + "steps": 0, + "terms_field": "coredns.stats.zone", + "terms_order_by": "61ca57f2-469d-11e7-af02-69e470af7417", + "value_template": "{{value}} ms" + } + ], + "show_grid": 1, + "show_legend": 1, + "time_field": "@timestamp", + "type": "timeseries" + }, + "title": "Avg Request Duration (cumulative) [Metricbeat CoreDNS] ECS", + "type": "metrics" + } + }, + "id": "57c74300-7308-11e9-b0d0-414c3011ddbb", + "migrationVersion": { + "visualization": "7.0.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2019-05-10T11:07:14.131Z", + "version": "WzE3MzQsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Avg Request Size (cumulative) [Metricbeat CoreDNS] ECS", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [], + "params": { + "axis_formatter": "number", + "axis_position": "left", + "axis_scale": "normal", + "default_index_pattern": "metricbeat-*", + "id": "61ca57f0-469d-11e7-af02-69e470af7417", + "index_pattern": "", + "interval": "auto", + "series": [ + { + "axis_position": "right", + "chart_type": "line", + "color": "rgba(228,155,238,1)", + "fill": "0.1", + "formatter": "number", + "id": "61ca57f1-469d-11e7-af02-69e470af7417", + "label": "Avg Request Size (bytes)", + "line_width": 1, + "metrics": [ + { + "field": "coredns.stats.dns.request.size.bytes.sum", + "id": "61ca57f2-469d-11e7-af02-69e470af7417", + "type": "sum" + }, + { + "field": "coredns.stats.dns.request.size.bytes.count", + "id": "98fe65e0-7314-11e9-8e06-d9a616f1e6f2", + "type": "sum" + }, + { + "id": "ab81ee30-7314-11e9-8e06-d9a616f1e6f2", + "script": "params.sum / params.count", + "type": "calculation", + "variables": [ + { + "field": "61ca57f2-469d-11e7-af02-69e470af7417", + "id": "aeed53c0-7314-11e9-8e06-d9a616f1e6f2", + "name": "sum" + }, + { + "field": "98fe65e0-7314-11e9-8e06-d9a616f1e6f2", + "id": "b84dd700-7314-11e9-8e06-d9a616f1e6f2", + "name": "count" + } + ] + } + ], + "point_size": 1, + "separate_axis": 0, + "split_mode": "terms", + "stacked": "none", + "terms_field": "coredns.stats.zone", + "value_template": "{{value}} bytes" + } + ], + "show_grid": 1, + "show_legend": 1, + "time_field": "@timestamp", + "type": "timeseries" + }, + "title": "Avg Request Size (cumulative) [Metricbeat CoreDNS] ECS", + "type": "metrics" + } + }, + "id": "4804eaa0-7315-11e9-b0d0-414c3011ddbb", + "migrationVersion": { + "visualization": "7.0.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2019-05-10T11:18:05.129Z", + "version": "WzE3MzUsMV0=" + } + ], + "version": "7.0.0" +} diff --git a/metricbeat/module/coredns/module.yaml b/metricbeat/module/coredns/module.yaml new file mode 100644 index 000000000000..62788cbf16d0 --- /dev/null +++ b/metricbeat/module/coredns/module.yaml @@ -0,0 +1,3 @@ +dashboards: + - id: Metricbeat-CoreDNS-Dashboard + file: Metricbeat-coredns-overview.json diff --git a/metricbeat/module/coredns/stats/README.md b/metricbeat/module/coredns/stats/README.md new file mode 100644 index 000000000000..87fa17dc9eba --- /dev/null +++ b/metricbeat/module/coredns/stats/README.md @@ -0,0 +1,69 @@ +# CoreDNS Stats + +## Version history + +- May 2019, `v1.5.0` + +## Resources + +- https://github.com/coredns/coredns/tree/master/plugin/metrics +- https://coredns.io/manual/configuration/ + +## Setup environment for manual tests + +Write this contents to `corefile` + +``` +# Zone1 +domain.elastic:1053 { + log + errors + auto + reload 10s + cache 4 + + prometheus :9153 + + hosts { + 127.0.0.1 my.domain.elastic + 192.168.0.1 theirs.domain.elastic + fallthrough + } +} + +# Zone2 +.:1053 { + log + errors + prometheus :9153 + cache 4 + + forward . 8.8.8.8 8.8.4.4 +} +``` + +It creates 2 zones listening on port 1053, prometheus metrics can be gathered at port 9153 +Requests for `my.domain.elastic` and `theirs.domain.elastic` will be resolved locally +Any other request will be forwarded to google's DNSs. +Cache plugin is activated + +For manual testing you can open a number of terminals and use `watch` with any of these commands: + +``` +dig @localhost -p 1053 TXT apache.org + +dig @localhost -p 1053 A google.com + +dig @localhost -p 1053 MX google.com + +dig @localhost -p 1053 A my.domain.elastic + +dig @localhost -p 1053 A theirs.domain.elastic +tcp + +``` + +Metrics can be manually retrieved using + +``` +curl localhost:9153/metrics +``` From 9c848a97a1906aa68a986ce0da0620501e02d0f9 Mon Sep 17 00:00:00 2001 From: Pablo Mercado Date: Mon, 20 May 2019 12:42:02 +0200 Subject: [PATCH 53/59] [Libbeat][Metricbeat]Add IgnoreAllErrors to schema.Conv object (#12089) * schema conv option for ignore all errors Co-Authored-By: Jaime Soriano Pastor --- CHANGELOG-developer.next.asciidoc | 1 + CHANGELOG.next.asciidoc | 1 + libbeat/common/schema/schema.go | 21 ++++-- libbeat/common/schema/schema_test.go | 88 ++++++++++++++++++++++++ metricbeat/module/rabbitmq/queue/data.go | 2 +- 5 files changed, 108 insertions(+), 5 deletions(-) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 24f8c38455b9..5d2db76c716c 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -39,4 +39,5 @@ The list below covers the major changes between 7.0.0-rc2 and master only. - Update urllib3 version to 1.24.2 {pull}11930[11930] - Add libbeat/common/cleanup package. {pull}12134[12134] - Only Load minimal template if no fields are provided. {pull}12103[12103] +- Add new option `IgnoreAllErrors` to `libbeat.common.schema` for skipping fields that failed while converting. {pull}12089[12089] - Deprecate setup cmds for `template` and `ilm-policy`. Add new setup cmd for `index-management`. {pull}12132[12132] \ No newline at end of file diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index e4874c185ece..f4e68455c88a 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -119,6 +119,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Avoid generating hints-based configuration with empty hosts when no exposed port is suitable for the hosts hint. {issue}8264[8264] {pull}12086[12086] - Fixed a socket leak in the postgresql module under Windows when SSL is disabled on the server. {pull}11393[11393] - Change some field type from scaled_float to long in aws module. {pull}11982[11982] +- Fixed RabbitMQ `queue` metricset gathering when `consumer_utilisation` is set empty at the metrics source {pull}12089[12089] *Packetbeat* diff --git a/libbeat/common/schema/schema.go b/libbeat/common/schema/schema.go index 491da93d3c38..fe9cd7945882 100644 --- a/libbeat/common/schema/schema.go +++ b/libbeat/common/schema/schema.go @@ -20,6 +20,8 @@ package schema import ( "github.com/joeshaw/multierror" + "github.com/elastic/beats/libbeat/logp" + "github.com/elastic/beats/libbeat/common" ) @@ -39,10 +41,11 @@ type Mapper interface { // A Conv object represents a conversion mechanism from the data map to the event map. type Conv struct { - Func Converter // Convertor function - Key string // The key in the data map - Optional bool // Whether to ignore errors if the key is not found - Required bool // Whether to provoke errors if the key is not found + Func Converter // Convertor function + Key string // The key in the data map + Optional bool // Whether to ignore errors if the key is not found + Required bool // Whether to provoke errors if the key is not found + IgnoreAllErrors bool // Ignore any value conversion error } // Converter function type @@ -57,6 +60,10 @@ func (conv Conv) Map(key string, event common.MapStr, data map[string]interface{ err.Optional = conv.Optional err.Required = conv.Required } + if conv.IgnoreAllErrors { + logp.Debug("schema", "ignoring error for key %q: %s", key, err) + return nil + } return multierror.Errors{err} } event[key] = value @@ -142,6 +149,12 @@ func Required(c Conv) Conv { return c } +// IgnoreAllErrors set the enable all errors flag +func IgnoreAllErrors(c Conv) Conv { + c.IgnoreAllErrors = true + return c +} + // setOptions adds the optional flags to the Conv object func SetOptions(c Conv, opts []SchemaOption) Conv { for _, opt := range opts { diff --git a/libbeat/common/schema/schema_test.go b/libbeat/common/schema/schema_test.go index 188e416af29a..58299c3d5d20 100644 --- a/libbeat/common/schema/schema_test.go +++ b/libbeat/common/schema/schema_test.go @@ -20,6 +20,7 @@ package schema import ( "testing" + "github.com/pkg/errors" "github.com/stretchr/testify/assert" "github.com/elastic/beats/libbeat/common" @@ -83,3 +84,90 @@ func TestOptions(t *testing.T) { assert.Equal(t, conv.Key, "test") assert.Equal(t, conv.Optional, true) } + +func TestSchemaCases(t *testing.T) { + + var errFunc = func(key string, data map[string]interface{}) (interface{}, error) { + return nil, errors.New("test error") + } + var noopFunc = func(key string, data map[string]interface{}) (interface{}, error) { return data[key], nil } + + var testCases = []struct { + name string + schema Schema + source map[string]interface{} + + expectedErrorMessage string + expectedOutput common.MapStr + }{ + { + name: "standard schema conversion case", + schema: Schema{ + "outField": Conv{ + Key: "inField", + Func: noopFunc, + IgnoreAllErrors: true, + }, + }, + source: map[string]interface{}{ + "inField": "10", + }, + + expectedOutput: common.MapStr{ + "outField": "10", + }, + }, + { + name: "error at conversion case", + schema: Schema{ + "outField": Conv{ + Key: "inField", + Func: errFunc, + Optional: true, + }, + }, + source: map[string]interface{}{ + "doesntMatter": "", + }, + + expectedErrorMessage: "test error", + expectedOutput: common.MapStr{}, + }, + { + name: "ignore error at conversion case", + schema: Schema{ + "outField": Conv{ + Key: "inField", + Func: errFunc, + Optional: true, + IgnoreAllErrors: true, + }, + }, + source: map[string]interface{}{ + "doesntMatter": "", + }, + + expectedOutput: common.MapStr{}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + + event, errs := tc.schema.Apply(tc.source) + + if errs != nil { + errorMessage := errs.Error() + if tc.expectedErrorMessage == "" { + t.Errorf("unexpected error ocurred: %s", errorMessage) + } + assert.Contains(t, errorMessage, tc.expectedErrorMessage) + } else if tc.expectedErrorMessage != "" { + t.Errorf("exepected error message %q was not returned", tc.expectedErrorMessage) + } + + assert.Equal(t, tc.expectedOutput, event) + + }) + } +} diff --git a/metricbeat/module/rabbitmq/queue/data.go b/metricbeat/module/rabbitmq/queue/data.go index be042509fdd9..2ebae73a138d 100644 --- a/metricbeat/module/rabbitmq/queue/data.go +++ b/metricbeat/module/rabbitmq/queue/data.go @@ -45,7 +45,7 @@ var ( "consumers": s.Object{ "count": c.Int("consumers"), "utilisation": s.Object{ - "pct": c.Int("consumer_utilisation", s.Optional), + "pct": c.Int("consumer_utilisation", s.IgnoreAllErrors), }, }, "messages": s.Object{ From 313e6d16bec56d0acf799ab06cd2072dabde65bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20P=C3=A9rez-Aradros=20Herce?= Date: Mon, 20 May 2019 16:30:26 +0200 Subject: [PATCH 54/59] Add `container` input, deprecate `docker` in favor of it (#12162) Add `container` input, deprecate `docker` in favor of it This change adds a new container input for better support of CRI based scenarios. `docker` input was acting as a catch all input for all container related cases, but its config options were very opinionated towards Docker, with some issues: * `containers.ids` setting was good to abstract logs path, but we have seen many cases were logs are not under default location, or follow a different path pattern (ie CRI logs). * `containers.*` settings have shown counter intuitive for many users, in many cases we have seen people writing `container.*` instead, ending up in a config error. * Some existing settings (`combine_partials`, `cri.parse_flags`) were introduced as a way to offer a backwards compatible upgrades, but it doesn't really make sense to disable them, as they handle actual format behaviors. This new `container` input offers the same wrapper to read log files from containers with the following changes: * It exposes `paths` as the `log` input, instead of `containers.ids` and `containers.path`. * `parse_flags` and `combine_partials` are hardcoded, as there is no good reason to disable them. * `stream` selector is still available, under root settings. * It allows to select the log format (also atodetect it), giving room for future format changes. `format` can be `auto` (default), `docker` and `CRI`. Example configurations: Get Docker logs: ``` filebeat.inputs: - type: container paths: - /var/lib/docker/containers/*/*.log ``` Get Kubernetes logs: ``` filebeat.inputs: - type: container paths: - /var/log/pods/*/*/*.log # this could also be used: #- /var/log/containers/*.log ``` Previous `docker` input is deprecated in favor of this, to be removed in 8.0 --- CHANGELOG.next.asciidoc | 3 + filebeat/autodiscover/builder/hints/config.go | 2 +- filebeat/docs/filebeat-options.asciidoc | 3 + filebeat/docs/inputs/input-container.asciidoc | 64 ++++++++++++++++ filebeat/docs/inputs/input-docker.asciidoc | 4 +- filebeat/harvester/util.go | 11 +-- filebeat/include/list.go | 1 + filebeat/input/container/config.go | 58 +++++++++++++++ filebeat/input/container/input.go | 74 +++++++++++++++++++ filebeat/input/docker/config.go | 2 - filebeat/input/docker/input.go | 44 +++-------- filebeat/input/log/config.go | 2 +- filebeat/input/log/harvester.go | 6 +- filebeat/tests/files/logs/cri.log | 1 + filebeat/tests/system/test_container.py | 68 +++++++++++++++++ libbeat/reader/readjson/docker_json.go | 27 ++++--- libbeat/reader/readjson/docker_json_test.go | 24 ++++-- 17 files changed, 328 insertions(+), 66 deletions(-) create mode 100644 filebeat/docs/inputs/input-container.asciidoc create mode 100644 filebeat/input/container/config.go create mode 100644 filebeat/input/container/input.go create mode 100644 filebeat/tests/files/logs/cri.log create mode 100644 filebeat/tests/system/test_container.py diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f4e68455c88a..f3e9438e7dee 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -180,6 +180,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add support to new MongoDB additional diagnostic information {pull}11952[11952] - New module `palo_alto` for Palo Alto Networks PAN-OS logs. {pull}11999[11999] - Add RabbitMQ module. {pull}12032[12032] +- Add new `container` input. {pull}12162[12162] *Heartbeat* @@ -220,6 +221,8 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d *Filebeat* +- `docker` input is deprecated in favour `container`. {pull}12162[12162] + *Heartbeat* *Journalbeat* diff --git a/filebeat/autodiscover/builder/hints/config.go b/filebeat/autodiscover/builder/hints/config.go index cae7aa2192cd..aaf8901022d5 100644 --- a/filebeat/autodiscover/builder/hints/config.go +++ b/filebeat/autodiscover/builder/hints/config.go @@ -26,7 +26,7 @@ type config struct { func defaultConfig() config { rawCfg := map[string]interface{}{ - "type": "docker", + "type": "container", "containers": map[string]interface{}{ "paths": []string{ // To be able to use this builder with CRI-O replace paths with: diff --git a/filebeat/docs/filebeat-options.asciidoc b/filebeat/docs/filebeat-options.asciidoc index c87e68fe05a4..b7adb5d1d6f5 100644 --- a/filebeat/docs/filebeat-options.asciidoc +++ b/filebeat/docs/filebeat-options.asciidoc @@ -44,6 +44,7 @@ You can configure {beatname_uc} to use the following inputs: * <<{beatname_lc}-input-log>> * <<{beatname_lc}-input-stdin>> +* <<{beatname_lc}-input-container>> * <<{beatname_lc}-input-redis>> * <<{beatname_lc}-input-udp>> * <<{beatname_lc}-input-docker>> @@ -57,6 +58,8 @@ include::inputs/input-log.asciidoc[] include::inputs/input-stdin.asciidoc[] +include::inputs/input-container.asciidoc[] + include::inputs/input-redis.asciidoc[] include::inputs/input-udp.asciidoc[] diff --git a/filebeat/docs/inputs/input-container.asciidoc b/filebeat/docs/inputs/input-container.asciidoc new file mode 100644 index 000000000000..fcd3051f1ae7 --- /dev/null +++ b/filebeat/docs/inputs/input-container.asciidoc @@ -0,0 +1,64 @@ +:type: container + +[id="{beatname_lc}-input-{type}"] +=== Container input + +++++ +Container +++++ + +Use the `container` input to read containers log files. + +This input searches for container logs under the given path, and parse them into +common message lines, extracting timestamps too. Everything happens before line +filtering, multiline, and JSON decoding, so this input can be used in +combination with those settings. + +Example configuration: + +["source","yaml",subs="attributes"] +---- +{beatname_lc}.inputs: +- type: container + paths: <1> + - '/var/lib/docker/containers/*/*.log' +---- + +<1> `paths` is required. All other settings are optional. + +==== Configuration options + +The `container` input supports the following configuration options plus the +<<{beatname_lc}-input-{type}-common-options>> described later. + +===== `stream` + +Reads from the specified streams only: `all`, `stdout` or `stderr`. The default +is `all`. + +===== `format` + +Use the given format when reading the log file: `auto`, `docker` or `cri`. The +default is `auto`, it will automatically detect the format. To disable +autodetection set any of the other options. + + +The following input configures {beatname_uc} to read the `stdout` stream from +all containers under the default Kubernetes logs path: + +[source,yaml] +---- +- type: container + stream: stdout + paths: + - "/var/log/containers/*.log" +---- + +include::../inputs/input-common-harvester-options.asciidoc[] + +include::../inputs/input-common-file-options.asciidoc[] + +[id="{beatname_lc}-input-{type}-common-options"] +include::../inputs/input-common-options.asciidoc[] + +:type!: diff --git a/filebeat/docs/inputs/input-docker.asciidoc b/filebeat/docs/inputs/input-docker.asciidoc index c801fbb6d856..7949ce90db66 100644 --- a/filebeat/docs/inputs/input-docker.asciidoc +++ b/filebeat/docs/inputs/input-docker.asciidoc @@ -7,6 +7,8 @@ Docker ++++ +deprecated[7.2.0, Use `container` input instead.] + Use the `docker` input to read logs from Docker containers. This input searches for container logs under its path, and parse them into @@ -103,4 +105,4 @@ include::../inputs/input-common-file-options.asciidoc[] [id="{beatname_lc}-input-{type}-common-options"] include::../inputs/input-common-options.asciidoc[] -:type!: +:type!: \ No newline at end of file diff --git a/filebeat/harvester/util.go b/filebeat/harvester/util.go index cd22f7f71fda..e885aab3881b 100644 --- a/filebeat/harvester/util.go +++ b/filebeat/harvester/util.go @@ -21,11 +21,12 @@ import "github.com/elastic/beats/libbeat/common/match" // Contains available input types const ( - LogType = "log" - StdinType = "stdin" - RedisType = "redis" - UdpType = "udp" - DockerType = "docker" + LogType = "log" + StdinType = "stdin" + RedisType = "redis" + UdpType = "udp" + DockerType = "docker" + ContainerType = "container" ) // MatchAny checks if the text matches any of the regular expressions diff --git a/filebeat/include/list.go b/filebeat/include/list.go index 4f2f68929302..6876c7a1a620 100644 --- a/filebeat/include/list.go +++ b/filebeat/include/list.go @@ -21,6 +21,7 @@ package include import ( // Import packages that need to register themselves. + _ "github.com/elastic/beats/filebeat/input/container" _ "github.com/elastic/beats/filebeat/input/docker" _ "github.com/elastic/beats/filebeat/input/log" _ "github.com/elastic/beats/filebeat/input/redis" diff --git a/filebeat/input/container/config.go b/filebeat/input/container/config.go new file mode 100644 index 000000000000..b6a23f52a135 --- /dev/null +++ b/filebeat/input/container/config.go @@ -0,0 +1,58 @@ +// 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 container + +import ( + "fmt" + "strings" +) + +var defaultConfig = config{ + Stream: "all", + Format: "auto", +} + +type config struct { + // Stream can be all, stdout or stderr + Stream string `config:"stream"` + + // Format can be auto, cri, json-file + Format string `config:"format"` +} + +// Validate validates the config. +func (c *config) Validate() error { + if !stringInSlice(c.Stream, []string{"all", "stdout", "stderr"}) { + return fmt.Errorf("invalid value for stream: %s, supported values are: all, stdout, stderr", c.Stream) + } + + if !stringInSlice(strings.ToLower(c.Format), []string{"auto", "docker", "cri"}) { + return fmt.Errorf("invalid value for format: %s, supported values are: auto, docker, cri", c.Format) + } + + return nil +} + +func stringInSlice(str string, list []string) bool { + for _, v := range list { + if v == str { + return true + } + } + return false +} diff --git a/filebeat/input/container/input.go b/filebeat/input/container/input.go new file mode 100644 index 000000000000..656b93b47fd1 --- /dev/null +++ b/filebeat/input/container/input.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. + +package container + +import ( + "github.com/elastic/beats/filebeat/channel" + "github.com/elastic/beats/filebeat/input" + "github.com/elastic/beats/filebeat/input/log" + "github.com/elastic/beats/libbeat/common" + + "github.com/pkg/errors" +) + +func init() { + err := input.Register("container", NewInput) + if err != nil { + panic(err) + } +} + +// NewInput creates a new container input +func NewInput( + cfg *common.Config, + outletFactory channel.Connector, + context input.Context, +) (input.Input, error) { + // Wrap log input with custom docker settings + config := defaultConfig + if err := cfg.Unpack(&config); err != nil { + return nil, errors.Wrap(err, "reading container input config") + } + + err := cfg.Merge(common.MapStr{ + "docker-json.partial": true, + "docker-json.cri_flags": true, + + // Allow stream selection (stdout/stderr/all) + "docker-json.stream": config.Stream, + + // Select file format (auto/cri/docker) + "docker-json.format": config.Format, + + // Set symlinks to true as CRI-O paths could point to symlinks instead of the actual path. + "symlinks": true, + }) + if err != nil { + return nil, errors.Wrap(err, "update input config") + } + + // Add stream to meta to ensure different state per stream + if config.Stream != "all" { + if context.Meta == nil { + context.Meta = map[string]string{} + } + context.Meta["stream"] = config.Stream + } + + return log.NewInput(cfg, outletFactory, context) +} diff --git a/filebeat/input/docker/config.go b/filebeat/input/docker/config.go index 2f0b1323c7eb..8a79f57f68b6 100644 --- a/filebeat/input/docker/config.go +++ b/filebeat/input/docker/config.go @@ -44,8 +44,6 @@ type containers struct { IDs []string `config:"ids"` Path string `config:"path"` - Paths []string `config:"paths"` - // Stream can be all, stdout or stderr Stream string `config:"stream"` } diff --git a/filebeat/input/docker/input.go b/filebeat/input/docker/input.go index 458745e66dd9..c174e5aa1f0f 100644 --- a/filebeat/input/docker/input.go +++ b/filebeat/input/docker/input.go @@ -25,6 +25,7 @@ import ( "github.com/elastic/beats/filebeat/input" "github.com/elastic/beats/filebeat/input/log" "github.com/elastic/beats/libbeat/common" + "github.com/elastic/beats/libbeat/common/cfgwarn" "github.com/elastic/beats/libbeat/logp" "github.com/pkg/errors" @@ -45,25 +46,18 @@ func NewInput( ) (input.Input, error) { logger := logp.NewLogger("docker") + cfgwarn.Deprecate("8.0.0", "'docker' input deprecated. Use 'container' input instead.") + // Wrap log input with custom docker settings config := defaultConfig if err := cfg.Unpack(&config); err != nil { return nil, errors.Wrap(err, "reading docker input config") } - // Docker input should make sure that no callers should ever pass empty strings as container IDs or paths + // Docker input should make sure that no callers should ever pass empty strings as container IDs // Hence we explicitly make sure that we catch such things and print stack traces in the event of // an invocation so that it can be fixed. - var ids, paths []string - for _, p := range config.Containers.Paths { - if p != "" { - paths = append(paths, p) - } else { - logger.Error("Docker paths can't be empty for Docker input config") - logger.Debugw("Empty path for Docker logfile was received", logp.Stack("stacktrace")) - } - } - + var ids []string for _, containerID := range config.Containers.IDs { if containerID != "" { ids = append(ids, containerID) @@ -73,23 +67,12 @@ func NewInput( } } - if len(ids) == 0 && len(paths) == 0 { - return nil, errors.New("Docker input requires at least one entry under 'containers.ids' or 'containers.paths'") - } - - // IDs + Path and Paths are mutually exclusive. Ensure that only one of them are set in a given configuration - if len(ids) != 0 && len(paths) != 0 { - return nil, errors.New("can not provide both 'containers.ids' and 'containers.paths' in the same input config") + if len(ids) == 0 { + return nil, errors.New("Docker input requires at least one entry under 'containers.ids''") } - if len(ids) != 0 { - for idx, containerID := range ids { - cfg.SetString("paths", idx, path.Join(config.Containers.Path, containerID, "*.log")) - } - } else { - for idx, p := range paths { - cfg.SetString("paths", idx, p) - } + for idx, containerID := range ids { + cfg.SetString("paths", idx, path.Join(config.Containers.Path, containerID, "*.log")) } if err := checkStream(config.Containers.Stream); err != nil { @@ -108,13 +91,8 @@ func NewInput( return nil, errors.Wrap(err, "update input config") } - if err := cfg.SetBool("docker-json.force_cri_logs", -1, config.CRIForce); err != nil { - return nil, errors.Wrap(err, "update input config") - } - - if len(paths) != 0 { - // Set symlinks to true as CRI-O paths could point to symlinks instead of the actual path. - if err := cfg.SetBool("symlinks", -1, true); err != nil { + if config.CRIForce { + if err := cfg.SetString("docker-json.format", -1, "cri"); err != nil { return nil, errors.Wrap(err, "update input config") } } diff --git a/filebeat/input/log/config.go b/filebeat/input/log/config.go index 9a0f0d8dcb7c..78669b4c107e 100644 --- a/filebeat/input/log/config.go +++ b/filebeat/input/log/config.go @@ -109,7 +109,7 @@ type config struct { DockerJSON *struct { Stream string `config:"stream"` Partial bool `config:"partial"` - ForceCRI bool `config:"force_cri_logs"` + Format string `config:"format"` CRIFlags bool `config:"cri_flags"` } `config:"docker-json"` } diff --git a/filebeat/input/log/harvester.go b/filebeat/input/log/harvester.go index eb85420ec440..23cf62d26e43 100644 --- a/filebeat/input/log/harvester.go +++ b/filebeat/input/log/harvester.go @@ -154,9 +154,7 @@ func (h *Harvester) open() error { switch h.config.Type { case harvester.StdinType: return h.openStdin() - case harvester.LogType: - return h.openFile() - case harvester.DockerType: + case harvester.LogType, harvester.DockerType, harvester.ContainerType: return h.openFile() default: return fmt.Errorf("Invalid harvester type: %+v", h.config) @@ -577,7 +575,7 @@ func (h *Harvester) newLogFileReader() (reader.Reader, error) { if h.config.DockerJSON != nil { // Docker json-file format, add custom parsing to the pipeline - r = readjson.New(r, h.config.DockerJSON.Stream, h.config.DockerJSON.Partial, h.config.DockerJSON.ForceCRI, h.config.DockerJSON.CRIFlags) + r = readjson.New(r, h.config.DockerJSON.Stream, h.config.DockerJSON.Partial, h.config.DockerJSON.Format, h.config.DockerJSON.CRIFlags) } if h.config.JSON != nil { diff --git a/filebeat/tests/files/logs/cri.log b/filebeat/tests/files/logs/cri.log new file mode 100644 index 000000000000..b469e1b8e3d3 --- /dev/null +++ b/filebeat/tests/files/logs/cri.log @@ -0,0 +1 @@ +2017-09-12T22:32:21.212861448Z stdout F 2017-09-12 22:32:21.212 [INFO][88] table.go 710: Invalidating dataplane cache diff --git a/filebeat/tests/system/test_container.py b/filebeat/tests/system/test_container.py new file mode 100644 index 000000000000..deb5cb12aab8 --- /dev/null +++ b/filebeat/tests/system/test_container.py @@ -0,0 +1,68 @@ +from filebeat import BaseTest +import socket +import os + + +class Test(BaseTest): + """ + Test filebeat with the container input + """ + + def test_container_input(self): + """ + Test container input + """ + input_raw = """ +- type: container + paths: + - {}/logs/*.log +""" + self.render_config_template( + input_raw=input_raw.format(os.path.abspath(self.working_dir)), + inputs=False, + ) + + os.mkdir(self.working_dir + "/logs/") + self.copy_files(["logs/docker.log"], + target_dir="logs") + + filebeat = self.start_beat() + + self.wait_until(lambda: self.output_has(lines=21)) + + filebeat.check_kill_and_wait() + + output = self.read_output() + assert len(output) == 21 + assert output[0]["message"] == "Fetching main repository github.com/elastic/beats..." + for o in output: + assert o["stream"] == "stdout" + + def test_container_input_cri(self): + """ + Test container input with CRI format + """ + input_raw = """ +- type: container + paths: + - {}/logs/*.log +""" + self.render_config_template( + input_raw=input_raw.format(os.path.abspath(self.working_dir)), + inputs=False, + ) + + os.mkdir(self.working_dir + "/logs/") + self.copy_files(["logs/cri.log"], + target_dir="logs") + + filebeat = self.start_beat() + + self.wait_until(lambda: self.output_count(lambda x: x >= 1)) + self.wait_until(lambda: self.log_contains("End of file reached")) + + filebeat.check_kill_and_wait() + + output = self.read_output() + assert len(output) == 1 + assert output[0]["stream"] == "stdout" diff --git a/libbeat/reader/readjson/docker_json.go b/libbeat/reader/readjson/docker_json.go index bdea5177fd93..d104ad7cf212 100644 --- a/libbeat/reader/readjson/docker_json.go +++ b/libbeat/reader/readjson/docker_json.go @@ -21,6 +21,7 @@ import ( "bytes" "encoding/json" "runtime" + "strings" "time" "github.com/pkg/errors" @@ -38,12 +39,11 @@ type DockerJSONReader struct { // join partial lines partial bool - // Force log format: json-file | cri - forceCRI bool - // parse CRI flags criflags bool + parseLine func(message *reader.Message, msg *logLine) error + stripNewLine func(msg *reader.Message) } @@ -56,15 +56,23 @@ type logLine struct { } // New creates a new reader renaming a field -func New(r reader.Reader, stream string, partial bool, forceCRI bool, CRIFlags bool) *DockerJSONReader { +func New(r reader.Reader, stream string, partial bool, format string, CRIFlags bool) *DockerJSONReader { reader := DockerJSONReader{ stream: stream, partial: partial, reader: r, - forceCRI: forceCRI, criflags: CRIFlags, } + switch strings.ToLower(format) { + case "docker", "json-file": + reader.parseLine = reader.parseDockerJSONLog + case "cri": + reader.parseLine = reader.parseCRILog + default: + reader.parseLine = reader.parseAuto + } + if runtime.GOOS == "windows" { reader.stripNewLine = stripNewLineWin } else { @@ -92,7 +100,7 @@ func (p *DockerJSONReader) parseCRILog(message *reader.Message, msg *logLine) er if len(log) < split { return errors.New("invalid CRI log format") } - ts, err := time.Parse(time.RFC3339, string(log[i])) + ts, err := time.Parse(time.RFC3339Nano, string(log[i])) if err != nil { return errors.Wrap(err, "parsing CRI timestamp") } @@ -155,12 +163,7 @@ func (p *DockerJSONReader) parseDockerJSONLog(message *reader.Message, msg *logL return nil } -func (p *DockerJSONReader) parseLine(message *reader.Message, msg *logLine) error { - if p.forceCRI { - return p.parseCRILog(message, msg) - } - - // If froceCRI isn't set, autodetect file type +func (p *DockerJSONReader) parseAuto(message *reader.Message, msg *logLine) error { if len(message.Content) > 0 && message.Content[0] == '{' { return p.parseDockerJSONLog(message, msg) } diff --git a/libbeat/reader/readjson/docker_json_test.go b/libbeat/reader/readjson/docker_json_test.go index a89c83419917..f83d9b38b9fe 100644 --- a/libbeat/reader/readjson/docker_json_test.go +++ b/libbeat/reader/readjson/docker_json_test.go @@ -33,7 +33,7 @@ func TestDockerJSON(t *testing.T) { input [][]byte stream string partial bool - forceCRI bool + format string criflags bool expectedError bool expectedMessage reader.Message @@ -206,12 +206,22 @@ func TestDockerJSON(t *testing.T) { name: "Force CRI with JSON logs", input: [][]byte{[]byte(`{"log":"1:M 09 Nov 13:27:36.276 # User requested shutdown...\n","stream":"stdout"}`)}, stream: "all", - forceCRI: true, + format: "cri", expectedError: true, expectedMessage: reader.Message{ Bytes: 82, }, }, + { + name: "Force JSON with CRI logs", + input: [][]byte{[]byte(`2017-09-12T22:32:21.212861448Z stdout 2017-09-12 22:32:21.212 [INFO][88] table.go 710: Invalidating dataplane cache`)}, + stream: "all", + format: "docker", + expectedError: true, + expectedMessage: reader.Message{ + Bytes: 115, + }, + }, { name: "Force CRI log no tags", input: [][]byte{[]byte(`2017-09-12T22:32:21.212861448Z stdout 2017-09-12 22:32:21.212 [INFO][88] table.go 710: Invalidating dataplane cache`)}, @@ -222,7 +232,7 @@ func TestDockerJSON(t *testing.T) { Ts: time.Date(2017, 9, 12, 22, 32, 21, 212861448, time.UTC), Bytes: 115, }, - forceCRI: true, + format: "cri", criflags: false, }, { @@ -235,7 +245,7 @@ func TestDockerJSON(t *testing.T) { Ts: time.Date(2017, 9, 12, 22, 32, 21, 212861448, time.UTC), Bytes: 117, }, - forceCRI: true, + format: "cri", criflags: true, }, { @@ -252,7 +262,7 @@ func TestDockerJSON(t *testing.T) { Ts: time.Date(2017, 10, 12, 13, 32, 21, 232861448, time.UTC), Bytes: 163, }, - forceCRI: true, + format: "cri", criflags: true, }, { @@ -269,7 +279,7 @@ func TestDockerJSON(t *testing.T) { Bytes: 164, }, partial: true, - forceCRI: true, + format: "cri", criflags: true, }, { @@ -290,7 +300,7 @@ func TestDockerJSON(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { r := &mockReader{messages: test.input} - json := New(r, test.stream, test.partial, test.forceCRI, test.criflags) + json := New(r, test.stream, test.partial, test.format, test.criflags) message, err := json.Next() if test.expectedError { From d3ef979fd0ebb08fb28c525508796e9c334e7899 Mon Sep 17 00:00:00 2001 From: Christoph Wurm Date: Mon, 20 May 2019 12:29:52 -0700 Subject: [PATCH 55/59] [Auditbeat] Fix formatting of config files on macOS and Windows (#12148) Fixes formatting of auditbeat.yml and auditbeat.reference.yml across platforms. --- CHANGELOG.next.asciidoc | 1 + auditbeat/docs/modules/auditd.asciidoc | 1 + auditbeat/module/auditd/_meta/config.yml.tmpl | 1 + .../file_integrity/_meta/config.yml.tmpl | 23 ++++++++++--------- .../module/system/_meta/config.yml.tmpl | 12 +++++----- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f3e9438e7dee..e85dcb6a479f 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -82,6 +82,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Process dataset: Fixed a memory leak under Windows. {pull}12100[12100] - Login dataset: Fix re-read of utmp files. {pull}12028[12028] - Package dataset: Fixed a crash inside librpm after Auditbeat has been running for a while. {issue}12147[12147] {pull}12168[12168] +- Fix formatting of config files on macOS and Windows. {pull}12148[12148] *Filebeat* diff --git a/auditbeat/docs/modules/auditd.asciidoc b/auditbeat/docs/modules/auditd.asciidoc index d8221159386a..8868fc75b5a2 100644 --- a/auditbeat/docs/modules/auditd.asciidoc +++ b/auditbeat/docs/modules/auditd.asciidoc @@ -298,5 +298,6 @@ auditbeat.modules: #-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -k access #-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -k access + ---- diff --git a/auditbeat/module/auditd/_meta/config.yml.tmpl b/auditbeat/module/auditd/_meta/config.yml.tmpl index be1e73d152ef..fae5d6a09250 100644 --- a/auditbeat/module/auditd/_meta/config.yml.tmpl +++ b/auditbeat/module/auditd/_meta/config.yml.tmpl @@ -41,4 +41,5 @@ ## Unauthorized access attempts. #-a always,exit -F arch=b{{call .ArchBits .GOARCH}} -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -k access #-a always,exit -F arch=b{{call .ArchBits .GOARCH}} -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -k access + {{ end }} diff --git a/auditbeat/module/file_integrity/_meta/config.yml.tmpl b/auditbeat/module/file_integrity/_meta/config.yml.tmpl index 0784375155c7..b8902d70f60a 100644 --- a/auditbeat/module/file_integrity/_meta/config.yml.tmpl +++ b/auditbeat/module/file_integrity/_meta/config.yml.tmpl @@ -1,9 +1,9 @@ -{{ if .Reference -}} +{{- if .Reference -}} # The file integrity module sends events when files are changed (created, # updated, deleted). The events contain file metadata and hashes. {{ end -}} - module: file_integrity - {{ if eq .GOOS "darwin" -}} + {{- if eq .GOOS "darwin" }} paths: - /bin - /usr/bin @@ -11,33 +11,34 @@ - /sbin - /usr/sbin - /usr/local/sbin - {{ else if eq .GOOS "windows" -}} +{{ else if eq .GOOS "windows" }} paths: - C:/windows - C:/windows/system32 - C:/Program Files - C:/Program Files (x86) - {{ else -}} +{{ else }} paths: - /bin - /usr/bin - /sbin - /usr/sbin - /etc - {{- end }} -{{ if .Reference }} +{{ end -}} + +{{- if .Reference }} # List of regular expressions to filter out notifications for unwanted files. # Wrap in single quotes to workaround YAML escaping rules. By default no files # are ignored. - {{ if eq .GOOS "darwin" -}} + {{- if eq .GOOS "darwin" }} exclude_files: - '\.DS_Store$' - '\.swp$' - {{ else if eq .GOOS "windows" -}} + {{- else if eq .GOOS "windows" }} exclude_files: - '(?i)\.lnk$' - '(?i)\.swp$' - {{ else -}} + {{- else }} exclude_files: - '(?i)\.sw[nop]$' - '~$' @@ -46,10 +47,10 @@ # List of regular expressions used to explicitly include files. When configured, # Auditbeat will ignore files unless they match a pattern. - {{ if eq .GOOS "windows" -}} + {{- if eq .GOOS "windows" }} #include_files: #- '\\\.ssh($|\\)' - {{ else -}} + {{- else }} #include_files: #- '/\.ssh($|/)' {{- end }} diff --git a/x-pack/auditbeat/module/system/_meta/config.yml.tmpl b/x-pack/auditbeat/module/system/_meta/config.yml.tmpl index 47583a5bd52d..67aacb6a6865 100644 --- a/x-pack/auditbeat/module/system/_meta/config.yml.tmpl +++ b/x-pack/auditbeat/module/system/_meta/config.yml.tmpl @@ -7,14 +7,14 @@ - module: system datasets: - host # General host information, e.g. uptime, IPs - {{ if eq .GOOS "linux" -}} + {{- if eq .GOOS "linux" }} - login # User logins, logouts, and system boots. - {{- end }} - {{ if ne .GOOS "windows" -}} + {{- end -}} + {{- if ne .GOOS "windows" }} - package # Installed, updated, and removed packages {{- end }} - process # Started and stopped processes - {{ if eq .GOOS "linux" -}} + {{- if eq .GOOS "linux" }} - socket # Opened and closed sockets - user # User information {{- end }} @@ -28,11 +28,11 @@ # The state.period can be overridden for any dataset. # host.state.period: 12h - {{ if ne .GOOS "windows" -}} + {{- if ne .GOOS "windows" }} # package.state.period: 12h {{- end }} # process.state.period: 12h - {{ if eq .GOOS "linux" -}} + {{- if eq .GOOS "linux" }} # socket.state.period: 12h # user.state.period: 12h {{- end }} From eca4b19c889672cf33941706f0365540716f5ba4 Mon Sep 17 00:00:00 2001 From: Michal Pristas Date: Tue, 21 May 2019 12:54:07 +0200 Subject: [PATCH 56/59] [libbeat] Escape BOM on JsonReader before trying to decode line (#11661) * fix json bom + testing --- CHANGELOG.next.asciidoc | 1 + filebeat/input/log/harvester.go | 7 --- libbeat/reader/readfile/encode.go | 3 +- libbeat/reader/readfile/encode_test.go | 73 ++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 libbeat/reader/readfile/encode_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index e85dcb6a479f..a4f0aac6954c 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -64,6 +64,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Not hiding error in case of http failure using elastic fetcher {pull}11604[11604] - Relax validation of the X-Pack license UID value. {issue}11640[11640] - Fix a parsing error with the X-Pack license check on 32-bit system. {issue}11650[11650] +- Escape BOM on JsonReader before trying to decode line {pull}11661[11661] - Fix ILM policy always being overwritten. {pull}11671[11671] - Fix template always being overwritten. {pull}11671[11671] - Fix matching of string arrays in contains condition. {pull}11691[11691] diff --git a/filebeat/input/log/harvester.go b/filebeat/input/log/harvester.go index 23cf62d26e43..469ae109da9d 100644 --- a/filebeat/input/log/harvester.go +++ b/filebeat/input/log/harvester.go @@ -29,7 +29,6 @@ package log import ( - "bytes" "errors" "fmt" "io" @@ -283,12 +282,6 @@ func (h *Harvester) Run() error { return nil } - // Strip UTF-8 BOM if beginning of file - // As all BOMS are converted to UTF-8 it is enough to only remove this one - if h.state.Offset == 0 { - message.Content = bytes.Trim(message.Content, "\xef\xbb\xbf") - } - // Get copy of state to work on // This is important in case sending is not successful so on shutdown // the old offset is reported diff --git a/libbeat/reader/readfile/encode.go b/libbeat/reader/readfile/encode.go index 920d9a209209..ada4ae91947b 100644 --- a/libbeat/reader/readfile/encode.go +++ b/libbeat/reader/readfile/encode.go @@ -18,6 +18,7 @@ package readfile import ( + "bytes" "io" "time" @@ -53,7 +54,7 @@ func (r EncoderReader) Next() (reader.Message, error) { // Creating message object return reader.Message{ Ts: time.Now(), - Content: c, + Content: bytes.Trim(c, "\xef\xbb\xbf"), Bytes: sz, }, err } diff --git a/libbeat/reader/readfile/encode_test.go b/libbeat/reader/readfile/encode_test.go new file mode 100644 index 000000000000..36d3df433ec5 --- /dev/null +++ b/libbeat/reader/readfile/encode_test.go @@ -0,0 +1,73 @@ +// 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 readfile + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/elastic/beats/libbeat/reader/readfile/encoding" +) + +func TestEncodeLines(t *testing.T) { + testCases := map[string]struct { + Input []byte + Output []string + }{ + "simple": {[]byte("testing simple line\n"), []string{"testing simple line\n"}}, + "multiline": {[]byte("testing\nmultiline\n"), []string{"testing\n", "multiline\n"}}, + "bom-on-first": {[]byte("\xef\xbb\xbftesting simple line\n"), []string{"testing simple line\n"}}, + "bom-on-each": {[]byte("\xef\xbb\xbftesting\n\xef\xbb\xbfmultiline\n"), []string{"testing\n", "multiline\n"}}, + "bom-in-the-middle": {[]byte("testing simple \xef\xbb\xbfline\n"), []string{"testing simple \xef\xbb\xbfline\n"}}, + } + + bufferSize := 1000 + encFactory, ok := encoding.FindEncoding("plain") + if !ok { + t.Fatal("failed to initiate encoding") + } + + for name, testCase := range testCases { + t.Run(name, func(t *testing.T) { + r := bytes.NewReader(testCase.Input) + codec, err := encFactory(r) + assert.Nil(t, err, "failed to initialize encoding: %v", err) + + config := Config{ + Codec: codec, + BufferSize: bufferSize, + Terminator: LineFeed, + } + er, err := NewEncodeReader(r, config) + assert.Nil(t, err, "failed to create new encoder: %v", err) + + var output []string + for { + msg, err := er.Next() + if err != nil { + break + } + output = append(output, string(msg.Content)) + } + + assert.Equal(t, testCase.Output, output) + }) + } +} From da783fe6e1eb5840bddc9a5e0ee644afd37f1533 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Tue, 21 May 2019 08:55:50 -0400 Subject: [PATCH 57/59] Set beat ID in registries after loading meta file (#12180) * Reset beat ID in registries in case loaded from meta file * Set, not reset * Adding CHANGELOG entry --- CHANGELOG.next.asciidoc | 1 + libbeat/cmd/instance/beat.go | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index a4f0aac6954c..377e06bd948f 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -74,6 +74,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Replace wmi queries with win32 api calls as they were consuming CPU resources {issue}3249[3249] and {issue}11840[11840] - Fix queue.spool.write.flush.events config type. {pull}12080[12080] - Fixed a memory leak when using the add_process_metadata processor under Windows. {pull}12100[12100] +- Fixed Beat ID being reported by GET / API. {pull}12180[12180] *Auditbeat* diff --git a/libbeat/cmd/instance/beat.go b/libbeat/cmd/instance/beat.go index 77436a6cfc9e..737de0d12de5 100644 --- a/libbeat/cmd/instance/beat.go +++ b/libbeat/cmd/instance/beat.go @@ -168,7 +168,6 @@ func Run(settings Settings, bt beat.Creator) error { monitoring.NewString(registry, "version").Set(b.Info.Version) monitoring.NewString(registry, "beat").Set(b.Info.Beat) monitoring.NewString(registry, "name").Set(b.Info.Name) - monitoring.NewString(registry, "uuid").Set(b.Info.ID.String()) monitoring.NewString(registry, "hostname").Set(b.Info.Hostname) // Add additional info to state registry. This is also reported to monitoring @@ -176,7 +175,6 @@ func Run(settings Settings, bt beat.Creator) error { serviceRegistry := stateRegistry.NewRegistry("service") monitoring.NewString(serviceRegistry, "version").Set(b.Info.Version) monitoring.NewString(serviceRegistry, "name").Set(b.Info.Beat) - monitoring.NewString(serviceRegistry, "id").Set(b.Info.ID.String()) beatRegistry := stateRegistry.NewRegistry("beat") monitoring.NewString(beatRegistry, "name").Set(b.Info.Name) monitoring.NewFunc(stateRegistry, "host", host.ReportInfo, monitoring.Report) @@ -368,6 +366,13 @@ func (b *Beat) launch(settings Settings, bt beat.Creator) error { return err } + // Set Beat ID in registry vars, in case it was loaded from meta file + infoRegistry := monitoring.GetNamespace("info").GetRegistry() + monitoring.NewString(infoRegistry, "uuid").Set(b.Info.ID.String()) + + serviceRegistry := monitoring.GetNamespace("state").GetRegistry().GetRegistry("service") + monitoring.NewString(serviceRegistry, "id").Set(b.Info.ID.String()) + svc.BeforeRun() defer svc.Cleanup() From 2ce9c8e47a1d9c9325534618bde65d4c0b293d6c Mon Sep 17 00:00:00 2001 From: Nicolas Ruflin Date: Tue, 21 May 2019 15:00:17 +0200 Subject: [PATCH 58/59] [Filebeat] Move dashboards from 8 to 7 directory (#12217) The CoreDNS and Envoyproxy dashboard were in the 8 instead of 7 directory. This PR fixes this. --- .../kibana/{8 => 7}/dashboard/Coredns-Overview-Dashboard.json | 0 .../kibana/{8 => 7}/dashboard/Filebeat-Envoyproxy-Overview.json | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename x-pack/filebeat/module/coredns/_meta/kibana/{8 => 7}/dashboard/Coredns-Overview-Dashboard.json (100%) rename x-pack/filebeat/module/envoyproxy/_meta/kibana/{8 => 7}/dashboard/Filebeat-Envoyproxy-Overview.json (100%) diff --git a/x-pack/filebeat/module/coredns/_meta/kibana/8/dashboard/Coredns-Overview-Dashboard.json b/x-pack/filebeat/module/coredns/_meta/kibana/7/dashboard/Coredns-Overview-Dashboard.json similarity index 100% rename from x-pack/filebeat/module/coredns/_meta/kibana/8/dashboard/Coredns-Overview-Dashboard.json rename to x-pack/filebeat/module/coredns/_meta/kibana/7/dashboard/Coredns-Overview-Dashboard.json diff --git a/x-pack/filebeat/module/envoyproxy/_meta/kibana/8/dashboard/Filebeat-Envoyproxy-Overview.json b/x-pack/filebeat/module/envoyproxy/_meta/kibana/7/dashboard/Filebeat-Envoyproxy-Overview.json similarity index 100% rename from x-pack/filebeat/module/envoyproxy/_meta/kibana/8/dashboard/Filebeat-Envoyproxy-Overview.json rename to x-pack/filebeat/module/envoyproxy/_meta/kibana/7/dashboard/Filebeat-Envoyproxy-Overview.json From 2c9a5aafc1c38dc93ce5d72320e5affed387bf73 Mon Sep 17 00:00:00 2001 From: Pier-Hugues Pellerin Date: Tue, 21 May 2019 14:28:13 -0400 Subject: [PATCH 59/59] adjust doc --- x-pack/filebeat/modules.d/palo_alto.yml.disabled | 2 +- x-pack/filebeat/modules.d/rabbitmq.yml.disabled | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/filebeat/modules.d/palo_alto.yml.disabled b/x-pack/filebeat/modules.d/palo_alto.yml.disabled index f8d6fc2adb71..24bf92ea1762 100644 --- a/x-pack/filebeat/modules.d/palo_alto.yml.disabled +++ b/x-pack/filebeat/modules.d/palo_alto.yml.disabled @@ -1,5 +1,5 @@ # Module: palo_alto -# Docs: https://www.elastic.co/guide/en/beats/filebeat/master/filebeat-module-palo_alto.html +# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.x/filebeat-module-palo_alto.html - module: palo_alto pan_os: diff --git a/x-pack/filebeat/modules.d/rabbitmq.yml.disabled b/x-pack/filebeat/modules.d/rabbitmq.yml.disabled index eac820cd3906..1c064b1c3101 100644 --- a/x-pack/filebeat/modules.d/rabbitmq.yml.disabled +++ b/x-pack/filebeat/modules.d/rabbitmq.yml.disabled @@ -1,5 +1,5 @@ # Module: rabbitmq -# Docs: https://www.elastic.co/guide/en/beats/filebeat/master/filebeat-module-rabbitmq.html +# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.x/filebeat-module-rabbitmq.html #- module: rabbitmq # All logs

    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�-fcQ5uZ~AD~0-9NfoV-Vr2Q~~^ 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 z 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%0A+E`CB;6v6Hn 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∨NkLG$Vgus7EP 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

    U7&#>cgQosC$1+{Bq8H12H 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