暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Apache Doris 日志分析实战

950
随着现代企业数字化转型的不断深化,大数据、物联网、5G 等创新技术的广泛应用加速了企业的数字化转型步伐,这使得原先的网络边界被打破,多源多样的终端设备成为了新的安全边界。
网络安全系统的防御性能与日志分析密不可分,当网络设备、操作系统以及应用程序在运行时,会产生大量的运行日志,其中蕴涵了丰富的数据价值。最大化地利用运行日志数据能够有效检测内部系统的安全风险、还原攻击路径、回溯攻击入口等,可以进一步提升系统安全性、保障企业网络安全,因此日志分析系统在其中发挥着不可或缺的作用。

日志分析有哪些益处?

有许多运营问题的答案都可以在日志中找到。团队可以利用日志获得以下益处:
  • 改善客户体验(并降低客户流失率):查看用户如何与应用程序进行交互,以做出更好的决策,以便吸引用户与应用程序保持交互,并让他们能更轻松地浏览界面。
  • 减少资源使用和延迟:找出组织中有哪些地方的资源未得到优化,并解决性能问题。
  • 识别客户行为:客户对什么方面感兴趣?哪些客户最活跃?他们访问的目标位置有哪些?日志提供了一个收集信息的机会,以便于您打造个性化的销售和营销材料
  • 发现可疑活动:不法分子会在您的组织中留下蛛丝马迹。通过分析他们的行为,有助于防微杜渐而禁于未然。
  • 遵守审计要求:对于需要遵守各项标准和法规的公司来说,审计已经成了家常便饭。使用日志分析有助于确保审计成功
Apache Doris 从2.0.0版本开始,Doris支持倒排索引,可以用来进行文本类型的全文检索、普通数值日期类型的等值范围查询,快速从海量数据中过滤出满足条件的行。在日志分析上架构变得更简单,用单一的 Doris 组件就可以完成OLAP分析及日志分析,使用上也更简单,只要会使用 MySQL 你基本就会使用 Doris ,大大降低了日志分析的使用门槛。
  1. 安装 Logstash

1.1 先在本地⽬录创建好,logstash.conf

Vim  /home/lanwon/docker/logstash/pipeline/logstash.conf

    input {
    #创建TCP服务接收⽅式
    tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 5044
    codec => json_lines
    }
    }
    output {
    # 输出到doris be的http服务
    http {
    follow_redirects => true
    keepalive => false
    http_method => "put"
    url => "http://192.168.191.136:8040/api/log_db/log_table_test/_stream_load"
    headers => [
    "format", "json",
    "strip_outer_array", "true",
    "load_to_single_tablet", "true",
    "Authorization", "Basic cm9vdDpsd0AxMjM=",
    "Expect", "100-continue"
    ]
    format => "json_batch"
    }

    描述:

    1. ⽬前因为 logstash 不⽀持 http 跳转,需要配置 be 地址,不能⽤ fe 地址
    2. headers 中 Authorization 是 http basic auth,⽤命令 echo -n 'username:password' | base64
       来计算
    3. URL中的 log_db 为库名 log_table_test 为表名

    1.2 在本地⽬录创建好,logstash.yml

    vi home/lanwon/docker/logstash/config/logstash.yml

      http.host: "0.0.0.0"
      pipeline.batch.size: 1000000
      pipeline.batch.delay: 10000

      1.3 使⽤docker安装Logstash

        docker run -d --name=logstash -p 5044:5044 -p 9600:9600 \
        -v home/lanwon/docker/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline logstash.conf \
        -v home/lanwon/docker/logstash/log:/usr/share/logstash/log \
        -v home/lanwon/docker/logstash/config/logstash.yml:/usr/share/logstash/config/logs tash.yml \ docker.elastic.co/logstash/logstash:7.17.4

        描述:

        注意 -v 的⽬录⼀定要对应前⾯2个步骤创建好的⽂件

        2. 安装 Apache Doris

        2.1 参考官⽅示例使⽤docker简单部署

          ## FE
          docker run -itd \
          --name=fe \
          --env FE_SERVERS="fe1:${当前机器的内⽹IP}:9010" \
          --env FE_ID=1 \
          -p 8030:8030 \
          -p 9030:9030 \
          -v data/fe/doris-meta:/opt/apache-doris/fe/doris-meta \
          -v /data/fe/log:/opt/apache-doris/fe/log \--net=host \
          apache/doris:2.0.0_alpha-fe-x86_64


          ## BE
          docker run -itd \
          --name=be \
          --env FE_SERVERS="fe1:${当前机器的内⽹IP}:9010" \
          --env BE_ADDR="${当前机器的内⽹IP}:9050" \
          -p 8040:8040 \
          -v /data/be/storage:/opt/apache-doris/be/storage \
          -v /data/be/log:/opt/apache-doris/be/log \
          --net=host \
          apache/doris:2.0.0_alpha-be-x86_64

          2.1 创建数据库表

            CREATE DATABASE log_db;


            USE log_db;


            ## 创建⽇志表


            CREATE TABLE log_table_test (
            `@timestamp` DATETIMEV2,
            `service_id` VARCHAR(30),
            `service_name` VARCHAR(30),
            `level` VARCHAR(10),
            `message` TEXT,
            `thread_name` varchar(20),
            `logger_name` varchar(100),
            `@version` varchar(10),
            `level_value` int,
            INDEX idx_message(`message`) USING INVERTED PROPERTIES("parser" = "chinese")
            )
            ENGINE = OLAP
            DUPLICATE KEY(`@timestamp`)
            DISTRIBUTED BY RANDOM BUCKETS 1
            PROPERTIES (
            "replication_num" = "1"
            )

            描述:

            以上简单的创建了⼀张⽇志表,具体建表根据实际应⽤场景来,建议使⽤动态分区⽅式。

            3. Logstash 与 SpringBoot 项⽬整合

            3.1 在项⽬pom.xml中添加如下依赖

              <dependency>
              <groupId>net.logstash.logback</groupId>
              <artifactId>logstash-logback-encoder</artifactId>
              <version>4.11</version>
              </dependency>

              描述:

              SpringBoot版本默认⾃带logback-core包,与logstash版本存在兼容性,SpringBoot 1.5.22版本使⽤ 4.11 即可。

              3.2 在resources⽬录下创建 logback-spring.xml

              内容如下:

                <?xml version="1.0" encoding="UTF-8"?>
                <configuration>
                <include resource="org/springframework/boot/logging/logback/base.xml" />
                <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
                <!-- 此处填写logstash的TCP服务的IP和端⼝ -->
                <destination>{IP}:{端⼝}</destination>
                <!-- ⽇志输出编码 -->
                <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
                <customFields>{"service_id":"lw_pacs_report_svn","service_name":"数据资源服务"}</customFields>
                </encoder>
                </appender>
                <root level="INFO">
                <appender-ref ref="LOGSTASH" />
                <appender-ref ref="CONSOLE" />
                </root>

                描述:

                1. {IP}:{端⼝}此处填写logstash的TCP服务的IP和端⼝

                2.  里的内容为⾃定义字段,这个可以对应到数据库的表字段

                3.3 启动Spring boot服务

                服务器启动成功,下⾯是服务产⽣的⽇志

                3.4 查看doris⽇志表数据

                查询有数据,表示⽇志已经采集成功

                4. ⽇志分析

                可以找⼀些BI⼯具针对该表进⾏⼀些图标配置展示


                文章转载自锋哥聊DORIS数仓,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论