Logstash перевести плагин проблема разбора CSV - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь проанализировать все столбцы файла CSV (кроме первого, очевидно). Плагин получает только второй столбец как результат фильтра. Все остальные столбцы игнорируются.

Должно быть возможно, согласно этому предложению получить из документации:

При использовании словаря CSV несколько значений в переводе должны извлекать с помощью другого фильтра, например Рассекать или KV. Обратите внимание, что резервная строка является строкой, так что при отсутствии соответствия настройка резервной копии должна отформатирован так, что фильтр может извлечь несколько значений в правильные поля.

Вот мой код logstash:

translate {
    field => "idBatch"
    dictionary_path => "D:\idBatch-description.csv"
    refresh_interval => 500
    destination => "donneesDictionnaireExterne"
    # Données par défaut en l'absence de correspondance
    fallback => "Aucune correspondance trouvée,10000"
    add_tag => [ "import_CSV_ok"]
}

# Mapper des données du dictionnaire externe
dissect {
    mapping => {
        "donneesDictionnaireExterne" => "%{descriptionBatch},%{maxDuration}"
        # EXEMPLE pour GAR01B0 : Batch d'injection Archive;86408
    }
}

Вот пример моего CSV-файла:

"GDA08A0_SupPdc","Batch de Suppression de PDC","9999"
"GDI01A0_Parsing","Moteur de parsing des etats internes","9999"

Кто-нибудь знает, почему это не работает?

1 Ответ

0 голосов
/ 02 апреля 2019

Фильтр перевода будет игнорировать все после второго столбца, вам нужно будет изменить формат вашего словаря.

Ваш словарь должен быть примерно таким.

"GDA08A0_SupPdc","Batch de Suppression de PDC;9999"
"GDI01A0_Parsing","Moteur de parsing des etats internes;9999"

Тогдаваш фильтр рассечения будет выглядеть так:

dissect {
    mapping => {
        "donneesDictionnaireExterne" => "%{descriptionBatch};%{maxDuration}"
    }
}

Вы также можете использовать фильтр mutate для удаления поля donneesDictionnaireExterne.

mutate {
    remove_field => ["donneesDictionnaireExterne"]
}

Наконец, вывод для вашего примераэто:

{
    "descriptionBatch" => "Batch de Suppression de PDC",
         "maxDuration" => "9999",
            "@version" => "1",
          "@timestamp" => 2019-04-02T02:10:45.107Z,
             "idBatch" => "GDA08A0_SupPdc",
             "message" => "{ \"idBatch\":\"GDA08A0_SupPdc\"}",
                "tags" => [
        [0] "import_CSV_ok"
    ],
                "host" => "hostname"
}
{
    "descriptionBatch" => "Moteur de parsing des etats internes",
         "maxDuration" => "9999",
            "@version" => "1",
          "@timestamp" => 2019-04-02T02:10:45.109Z,
             "idBatch" => "GDI01A0_Parsing",
             "message" => "{ \"idBatch\":\"GDI01A0_Parsing\"}",
                "tags" => [
        [0] "import_CSV_ok"
    ],
                "host" => "hostname"
}
...