La ejecución del proyecto -09 (trasero Canal de flujo)

SpringBoot acoplamiento Flume

Entre el gran procesamiento de flujo de datos, que necesitamos del comportamiento de los usuarios del proyecto, recopilados por kafkatransmitir al motor de cálculo, el cálculo y análisis. Este es uno de los archivos de registro recopilados, que necesitamos Flumepara completar el acoplamiento.

① dependen coordenadas

	  <!--引入Flume-->
        <dependency>
            <groupId>org.apache.flume</groupId>
            <artifactId>flume-ng-sdk</artifactId>
            <version>1.9.0</version>
        </dependency>

② introducción Flume dependencias del proyecto de acoplamiento

flumeProporcionar proyectos de código abierto en el sitio web oficial para que los usuarios con una 日志采集completa atracado rápido.
Dirección: https://pan.baidu.com/s/1chY1Ia7aBPtY7AVXZ_rrdQ
código de adquisición: cgi8

Este paquete de proyectos de código abierto para comel paquete capa más externa, este paquete se introduce directamente en sus propios proyectos javaen el subdirectorio directa (la primera etapa del proyecto con su propio paquete en el mismo nivel), se puede.

③ archivo de registro de configuración

Los elementos de configuración en los archivos de registro logback.xml


<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" >
        <encoder>
            <pattern>%p %c#%M %d{yyyy-MM-dd HH:mm:ss} %m%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <appender name="flume" class="com.gilt.logback.flume.FlumeLogstashV1Appender">
        <flumeAgents>
            pro1:44444, <!--这里配置集群,此处搭建的是个伪集群-->
            pro2:44444,
            pro1:44444
        </flumeAgents>
        <flumeProperties>
            connect-timeout=4000;
            request-timeout=8000
        </flumeProperties>
        <!--这里为了测试调低了,生成环境下要调高-->
        <batchSize>1</batchSize> 
        <!--每1ms发送一次这里为了测试调低了,生成环境下要调高-->
        <reportingWindow>1</reportingWindow>
        <additionalAvroHeaders>
            myHeader=myValue
        </additionalAvroHeaders>
        <application>smapleapp</application>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%p %c#%M %d{yyyy-MM-dd HH:mm:ss} %m%n</pattern>
        </layout>
    </appender>
    <!-- 控制台输出⽇志级别 -->
    <root level="ERROR">
        <appender-ref ref="STDOUT" />
    </root>
    <logger name="com.baizhi.service" level="DEBUG" additivity="false">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="flume" />
    </logger>
    <logger name="com.baizhi.interceptor" level="DEBUG" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="flume" />
    </logger>

</configuration>

④ se hace referencia en el proyecto

项目中,要对接 flume 就变的很容易了,只要是 log4j日志对象的输出,都将直接通过网络,输送到接收端。

  • Ejemplo:
package com.baizhi.interceptor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//将此组件交给工厂
@Component
public class UserInputFeatureInterceptor implements HandlerInterceptor {
    private static final Logger LOGGER = LoggerFactory.getLogger(UserInputFeatureInterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    
        //获取信息
        String name = request.getParameter("name");
        String password = request.getParameter("password");
      
        LOGGER.info("请求参数为\t"+name+"\t"+password);
        /*2020-03-29 15:56:35.783  INFO 12620 --- [nio-9999-exec-8] c.b.i.UserInputFeatureInterceptor        : 请求参数为	测试数据2	000000	 */

        return true;
    }
}

ajustes secundarios ⑤flume

En /apache-flume-1.9.0-binel directorio raíz en una confcarpeta, crear (personalizadas) example02.perprotiesarchivos , la configuración es la siguiente:

# 声明基本条件 Source Channel Sink
a1.sources = s1
a1.sinks = sk1
a1.channels = c1

#配置Source组件,从Socket中接收文本数据
a1.sources.s1.type = avro
a1.sources.s1.bind = pro2
a1.sources.s1.port = 44444

#配置Sink组件 将接收数据打印在日志控制台
a1.sinks.sk1.type = logger

#配置Channel通道,主要负责数据缓冲
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

#进行组件间的绑定
a1.sources.s1.channels = c1
a1.sinks.sk1.channel = c1

启动flume

准备接收数据

[root@pro2 apache-flume-1.9.0-bin] ./bin/flume-ng agent --conf conf/ --name a1 -conf-file conf/example02.perproties -Dflume.root.logger=INFO,console
Publicado 32 artículos originales · ganado elogios 1 · vistas 1154

Supongo que te gusta

Origin blog.csdn.net/ASYMUXUE/article/details/105182699
Recomendado
Clasificación