csv - 从 CSV 文件输入数据到 logstash

标签 csv elasticsearch logstash-grok logstash-configuration

我有一个 csv 文件,包含以下标题:

"PacketId","MACAddress","Date","PacketLength","SourceIP","SourcePort","DestIP","DestPort"

我想使用 LogStash 将数据索引到 ElasticSearch,但无法为其编写过滤器。

filter {
    grok {
        match => message => "%{IP:SourceIP}"
    }
    }

上面的过滤器很好地提取了 SourceIP 字段,但是我该如何编写 grok 模式来为所有字段提取它。

最佳答案

让下面的CSV文件:

1,00-14-22-01-23-45,13/09/2015,32,128.248.1.43,9980,128.248.23.13,9880
1,01-74-02-84-13-98,14/09/2015,64,128.248.1.94,9280,128.248.13.84,9380

您必须在此处设置 Logstash 配置:

input {
    file {
        path => "/path/of/your/csv/test.csv"
        sincedb_path => "/path/of/your/csv/test.idx"
        start_position => "beginning"
    }
}

filter {
    csv {
        separator => ","
        columns => ["PacketId","MACAddress","Date","PacketLength","SourceIP","SourcePort","DestIP","DestPort"]
    }
}

output {
    stdout {
        codec => rubydebug      
    }
}

你会得到输出结果:

{
         "message" => [
        [0] "1,00-14-22-01-23-45,13/09/2015,32,128.248.1.43,9980,128.248.23.13,9880"
    ],
        "@version" => "1",
      "@timestamp" => "2015-09-14T20:11:28.976Z",
            "host" => "MyHost.local",
            "path" => "/path/of/your/csv/test.csv",
        "PacketId" => "1",
      "MACAddress" => "00-14-22-01-23-45",
            "Date" => "13/09/2015",
    "PacketLength" => "32",
        "SourceIP" => "128.248.1.43",
      "SourcePort" => "9980",
          "DestIP" => "128.248.23.13",
        "DestPort" => "9880"
}
{
         "message" => [
        [0] "1,01-74-02-84-13-98,14/09/2015,64,128.248.1.94,9280,128.248.13.84,9380"
    ],
        "@version" => "1",
      "@timestamp" => "2015-09-14T20:11:28.978Z",
            "host" => "MyHost.local",
            "path" => "/path/of/your/csv/test.csv",
        "PacketId" => "1",
      "MACAddress" => "01-74-02-84-13-98",
            "Date" => "14/09/2015",
    "PacketLength" => "64",
        "SourceIP" => "128.248.1.94",
      "SourcePort" => "9280",
          "DestIP" => "128.248.13.84",
        "DestPort" => "9380"
}

问候, 阿兰

关于csv - 从 CSV 文件输入数据到 logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551318/

相关文章:

real-time - 刷新Elastic Search索引/实时搜索

logstash.conf 输入过滤器路径的正则表达式

amazon-s3 - Logstash:使用 s3 时如何使用过滤器来匹配文件名

ElasticSearch:检查嵌套对象数组是否为空

elasticsearch - 在 Elasticsearch 中,在哪里生成 keystore 并在 readonlyrest 插件中添加身份验证?

python - 使用 Tensorflow 中具有多个 .csv 的大型数据集的时间序列数据的 LSTM 输入管道

mysql - 在python中执行executemany命令时获取KeyError

parsing - 如何使用 Java 中的 Grok 进行解析 .. 有没有可用的示例。?

excel - XML -> 使用编码 UTF-8 的 XSLT 不适用于 Microsoft Excel - 为什么?

postgresql - 如何将文本文件中的数据导入 postgres 数据库?