日志分析有哪些益处?
改善客户体验(并降低客户流失率):查看用户如何与应用程序进行交互,以做出更好的决策,以便吸引用户与应用程序保持交互,并让他们能更轻松地浏览界面。 减少资源使用和延迟:找出组织中有哪些地方的资源未得到优化,并解决性能问题。 识别客户行为:客户对什么方面感兴趣?哪些客户最活跃?他们访问的目标位置有哪些?日志提供了一个收集信息的机会,以便于您打造个性化的销售和营销材料。 发现可疑活动:不法分子会在您的组织中留下蛛丝马迹。通过分析他们的行为,有助于防微杜渐而禁于未然。 遵守审计要求:对于需要遵守各项标准和法规的公司来说,审计已经成了家常便饭。使用日志分析有助于确保审计成功。
安装 Logstash
1.1 先在本地⽬录创建好,logstash.conf
Vim /home/lanwon/docker/logstash/pipeline/logstash.conf
input {#创建TCP服务接收⽅式tcp {mode => "server"host => "0.0.0.0"port => 5044codec => json_lines}}output {# 输出到doris be的http服务http {follow_redirects => truekeepalive => falsehttp_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"}
描述:
⽬前因为 logstash 不⽀持 http 跳转,需要配置 be 地址,不能⽤ fe 地址 headers 中 Authorization 是 http basic auth,⽤命令 echo -n 'username:password' | base64
来计算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: 1000000pipeline.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简单部署
## FEdocker 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## BEdocker 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 = OLAPDUPLICATE KEY(`@timestamp`)DISTRIBUTED BY RANDOM BUCKETS 1PROPERTIES ("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>
描述:
{IP}:{端⼝}此处填写logstash的TCP服务的IP和端⼝
里的内容为⾃定义字段,这个可以对应到数据库的表字段
3.3 启动Spring boot服务
服务器启动成功,下⾯是服务产⽣的⽇志

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

4. ⽇志分析
可以找⼀些BI⼯具针对该表进⾏⼀些图标配置展示

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




