2016-09-16 2 views
0

J'ai besoin de votre aide. J'ai fluentd configuré en mode de queue pour envoyer mes journaux à un cluster elasticsearch. J'utilise un regex pour analyser chaque ligne de journal, mais pour certains champs, j'ai besoin de convertir metricValue en integer. J'ai essayé certaines choses mais ne fonctionne pas.fluentd convertir le champ en entier

Voici mon fichier fluentd conf:

<source> 
    @type tail 
    path /tmp/application.log 
    pos_file /tmp/access.log.pos 
    format multi_format 
    tag first.log 

    <pattern> 
     format /(?<app>.*)\((?<instance>.*)\) CID\((?<correlationId>.*)\) (?<level>.*) \[(?<timestamp>.*)\] \[(?<Thread>.*)\] (?<class>.*) - \[Provider:(?<providerName>.*),Curef:(?<cuRef>.*),Operation:(?<operation>.*),Reference:(?<reference>.*),Idx:(?<idx>.*)\]/ 
    </pattern> 
    <pattern> 
     format /(?<app>.*)\((?<instance>.*)\) CID\((?<correlationId>.*)\) (?<level>.*) \[(?<timestamp>.*)\] \[(?<Thread>.*)\] (?<class>.*) - (?<body>.*)/ 
    </pattern> 
    </source> 
    <match *.log> 
    @type copy 
    <store> 
     @type stdout 
    </store> 
    <store> 
     @type elasticsearch 
     host localhost 
     port 9200 
     logstash_format true 
     logstash_prefix fluentd-log 
     flush_interval 10s 
    </store> 
    </match> 

Je trouve dans la documentation fluend la syntaxe mais ne fonctionne pas (et je ne sais pas où mettre ces lignes)

types <field_name_1>:<type_name_1>,<field_name_2>:<type_name_2>,... 

Je veux convertir le champ metricValue en entier avant de l'envoyer à elasticsearch.

Merci pour votre idée.

C.C.

Répondre

1

Vous devez placer ces champs (types <field_name_1>:<type_name_1>,<field_name_2>:<type_name_2>,...) dans la section source de votre boîtier. Et si vous utilisez le plugin parser, vous devez l'insérer dans la section filter (voici un example)