Tengo un servidor http de escritura de archivos de registro que luego se carga en HDFS, el uso de Canal
En primer lugar quiero filtrar los datos según los datos que tengo en mi cabecera o el cuerpo. He leído que puedo hacer esto con un interceptor con regex, puede alguien explicar exactamente lo que tengo que hacer? Qué necesito para escribir código Java que anula el Canal de código?

También me gustaría tomar los datos y de acuerdo a la cabecera envía a un receptor diferente (i.e fuente=1 va a sink1 y fuente=2 va a sink2) ¿cómo se hace?

gracias,

Shimon

OriginalEl autor Shimon Benattar | 2013-07-22

2 Comentarios

  1. 11

    Usted no necesita escribir el código Java para filtrar los eventos. Uso Regex Filtrado Interceptor filtrar los eventos que el cuerpo de texto, coincide con algunos de expresión regular:

    agent.sources.logs_source.interceptors = regex_filter_interceptor
    agent.sources.logs_source.interceptors.regex_filter_interceptor.type = regex_filter
    agent.sources.logs_source.interceptors.regex_filter_interceptor.regex = <your regex>
    agent.sources.logs_source.interceptors.regex_filter_interceptor.excludeEvents = true
    

    Para eventos de ruta basada en los encabezados de uso Multiplexación Selector De Canales:

    a1.sources = r1
    a1.channels = c1 c2 c3 c4
    a1.sources.r1.selector.type = multiplexing
    a1.sources.r1.selector.header = state
    a1.sources.r1.selector.mapping.CZ = c1
    a1.sources.r1.selector.mapping.US = c2 c3
    a1.sources.r1.selector.default = c4
    

    Aquí los eventos con el encabezado de «estado»=»CZ» ir al canal «c1», «estado»=»NOSOTROS», «c2» y «c3», todos los demás – a «c4».

    Esta manera usted también puede filtrar los eventos por la cabecera – sólo específica de la ruta, el valor de encabezado para el canal, que apunta a Null Fregadero.

    wow, eventos de enrutamiento es impresionante.

    OriginalEl autor Dmitry

  2. 0

    Puede utilizar el canal de selectores de canal para simplemente de eventos de enrutamiento a los diferentes destinos. O puede encadenar varias canal de agentes para implementar complejos función de enrutamiento.
    Pero el encadenado canal de agentes será un poco difícil de mantener (el uso de los recursos y el canal de la topología).
    Usted puede tener una mirada en canal-ng router fregadero, puede proporcionar algunas de las funciones que usted desea.

    Primero, agregar campos específicos en evento encabezado por canal interceptor

    a1.sources = r1 r2
    a1.channels = c1 c2
    a1.sources.r1.channels =  c1
    a1.sources.r1.type = seq
    a1.sources.r1.interceptors = i1
    a1.sources.r1.interceptors.i1.type = static
    a1.sources.r1.interceptors.i1.key = datacenter
    a1.sources.r1.interceptors.i1.value = NEW_YORK
    a1.sources.r2.channels =  c2
    a1.sources.r2.type = seq
    a1.sources.r2.interceptors = i2
    a1.sources.r2.interceptors.i2.type = static
    a1.sources.r2.interceptors.i2.key = datacenter
    a1.sources.r2.interceptors.i2.value = BERKELEY
    

    A continuación, puedes configurar tu canal selector de canales como:

    a2.sources = r2
    a2.sources.channels = c1 c2 c3 c4
    a2.sources.r2.selector.type = multiplexing
    a2.sources.r2.selector.header = datacenter
    a2.sources.r2.selector.mapping.NEW_YORK = c1
    a2.sources.r2.selector.mapping.BERKELEY= c2 c3
    a2.sources.r2.selector.default = c4
    

    O, usted puede configurar los avro-router fregadero como:

    agent.sinks.routerSink.type = com.datums.stream.AvroRouterSink
    agent.sinks.routerSink.hostname = test_host
    agent.sinks.routerSink.port = 34541
    agent.sinks.routerSink.channel = memoryChannel
    
    # Set sink name
    agent.sinks.routerSink.component.name = AvroRouterSink
    
    # Set header name for routing
    agent.sinks.routerSink.condition = datacenter
    
    # Set routing conditions
    agent.sinks.routerSink.conditions = east,west
    agent.sinks.routerSink.conditions.east.if = ^NEW_YORK
    agent.sinks.routerSink.conditions.east.then.hostname = east_host
    agent.sinks.routerSink.conditions.east.then.port = 34542
    agent.sinks.routerSink.conditions.west.if = ^BERKELEY
    agent.sinks.routerSink.conditions.west.then.hostname = west_host
    agent.sinks.routerSink.conditions.west.then.port = 34543
    

    OriginalEl autor Yanpeng

Dejar respuesta

Please enter your comment!
Please enter your name here