- type: log
enabled: true
encoding: GB2312
paths:
- D:/IIS/www.C.com/logs/*.txt
Multiline options
multiline.pattern: ‘^\d{4}-\d{1,2}-\d{1,2}’
multiline.negate: true
multiline.match: after
fields:
topic: ‘dlbZcMySyslogs’
fields_under_root: true
调试输出
#output.console:
pretty: true
#output.file:
path: “D:/bigData”
filename: filebeat.log
-------------------------------- Kafka Output --------------------------------
output.kafka:
Boolean flag to enable or disable the output module.
enabled: true
hosts: [“192.168.1.10:9092”]
The Kafka topic used for produced events. The setting can be a format string
using any event field. To set the topic from document type use `%{[type]}`.
topic: ‘%{[topic]}’
Authentication details. Password is required if username is set.
#username: ‘’
#password: ‘’
The number of concurrent load-balanced Kafka output workers.
worker: 2
max_message_bytes: 10000000
================================= Processors =================================
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
-
add_cloud_metadata: ~
-
add_docker_metadata: ~
-
add_kubernetes_metadata: ~
-
script:
lang: javascript
id: my_filter
tag: enable
source: >
function process(event) {
var str = event.Get(“message”);
var sp = str.split(" ");
var log_datetime = sp.slice(0,2).join(" ");
var regEx = /^\d{4}-\d{2}-\d{2}$/;
var prefix_date = log_datetime.substring(0, 10);
if(prefix_date.match(regEx) != null)
{
event.Put(“server”,“221”);
log_datetime = log_datetime.replace(“,”,“.”);
log_datetime = log_datetime.replace(“'”,“”);
regEx = /^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3}$/;
if(log_datetime.match(regEx) != null)
{
event.Put(“log_datetime”,log_datetime);
event.Put(“log_index”,sp.slice(2,3).join(" “).replace(”[“,”“).replace(”]“,”"));
event.Put(“log_level”,sp.slice(3,4).join(" "));
if(str.match(/(?<=time:)\S*(?=ms)/)!=null)
{
var spTime= str.split(“time:”);
var spPre = spTime[0].split(" ");
var spNext = spTime[1].split(" ");
event.Put(“log_class”,spPre.slice(4).join(" "));
var log_execTime= spNext.slice(0,1).join(" “).replace(“ms”,”");
regEx = /^(\-|\+)?\d+(\.\d+)?$/;
if(regEx.test(log_execTime))
{
event.Put(“log_execTime”,log_execTime);
}
else
{
event.Put(“log_execTime”,“-1”);
}
event.Put(“log_message”,spNext.slice(1).join(" "));
}
else
{
event.Put(“log_class”,sp.slice(4,5).join(" "));
event.Put(“log_execTime”,“-1”);
event.Put(“log_message”,sp.slice(6).join(" "));
}
return;
}
}
event.Cancel();
}
- drop_fields:
fields: [“@timestamp”, “message”, “host”, “ecs”, “agent”, “@metadata”, “log”, “input”]
以上的配置说明:
max_procs:设置可以同时执行的最大CPU数;
queue :内部队列信息;
Filebeat inputs:日志数据源采集的入口;
其他字段如下说明:
#日志类型
- type: log
#开启
enabled: true
#编码格式,有中文必须设置
encoding: GB2312
#路径
paths:
- D:/IIS/www.A.com/logs/*.txt
#多行匹配前缀
multiline.pattern: ‘^\d{4}-\d{1,2}-\d{1,2}’
#开启多行匹配
multiline.negate: true
#开启多行之后,匹配是合并到上一条信息
multiline.match: after
#增加一个字段,用于kafka的topic的识别
fields:
topic: ‘dlbZcZGBSyslogs’
字段增加在输出json的根目录下
fields_under_root: true
//https://www.cnblogs.com/EminemJK/p/15165961.html
Kafka Output:kafka的配置信息,主要是 topic: ‘%{[topic]}’ 的设置,因为这里采集多个数据源,对于不同的topic,在数据源输入的时候,已经设置好字段如 topic: ‘dlbZcZGBSyslogs’ ,所以此处使用占位符灵活设置;
Processors:配置处理器,即对采集的日志信息进行处理,处理是按行处理,当字符串处理即可,可以使用js语法进行对字符串进行处理;Filebeat的处理器可以多种多样,具体可以看文档。
另外,在调试的时候,可以采用文件输出或Console输出来观察处理后输出的数据格式,再进行微调:
output.file:
path: “D:/bigData”
filename: filebeat.log
IIS的日志也差不多,只是微调处理逻辑就可以了,一通百通。
其他配置可以参考官网文档:h__ttps://www.elastic.co/guide/en/beats/filebeat/current/index.html
Kafka配置
Kafka没有特别的处理,在这里只是进行消息的接收,新建好主题就可以。
//个人系统
bin/kafka-topics.sh --create --zookeeper 192.168.1.10:2181 --replication-factor 1 --partitions 3 --topic dlbZcMySyslogs
//单位系统
bin/kafka-topics.sh --create --zookeeper 192.168.1.10:2181 --replication-factor 1 --partitions 3 --topic dlbZcDWSyslogs
//管理系统
bin/kafka-topics.sh --create --zookeeper 192.168.1.10:2181 --replication-factor 1 --partitions 3 --topic dlbZcZGBSyslogs
partitions 分区数的大小,取决设置了多少个消费者,这里我们有三台服务器做了Clickhouse的集群作为消费者,所以分区数设置为3,一般情况,消费者总数不应该大于分区数,每个分区只能分配一个消费者。
Clickhouse配置
Clickhouse三个分片的集群,如果你是单机的,只需要把语法相应的修改一下即可。
在每台服务器上创建kafka引擎表:
CREATE TABLE kafka_dlb_ZC_My_syslogs (
log_datetime DateTime64,
log_index String,
log_level String,
log_class String,
log_message String,
log_execTime Float32,
server String
) ENGINE = Kafka
SETTINGS kafka_broker_list = ‘192.168.1.10:9092’,
kafka_topic_list = ‘dlbZcMySyslogs’,
kafka_group_name = ‘dlbZcMySyslogs_sys’,
kafka_format = ‘JSONEachRow’,
kafka_num_consumers = 1;
创建实体表:
CREATE TABLE dlb_ZC_My_syslogs on cluster cluster_3s_1r
(
log_datetime DateTime64,
log_index String,
log_level String,
log_class String,
log_message String,
log_execTime Float32,
server String
) ENGINE = ReplicatedMergeTree(‘/clickhouse/tables/{layer}-{shard}/dlb_ZC_My_syslogs’, ‘{replica}’)
ORDER BY toDate(log_datetime)
PARTITION BY toYYYYMM(log_datetime);
//https://www.cnblogs.com/EminemJK/p/15165961.html
实体表是使用集群来创建的,如果是单机请删除 on cluster cluster_3s_1r ,修改表引擎即可。如果已经开启了zookeeper且开启复制表,在任一一台服务器运行运行一次即可。
在每台服务器上创建物化视图:
CREATE MATERIALIZED VIEW viem_dlb_ZC_My_syslogs_consumer TO dlb_ZC_My_syslogs
AS SELECT *
FROM kafka_dlb_ZC_My_syslogs;
创建分布式视图(可选,单机请忽略):
CREATE TABLE Dis_dlb_ZC_My_syslogs ON CLUSTER cluster_3s_1r
AS LogsDataBase.dlb_ZC_My_syslogs
ENGINE = Distributed(cluster_3s_1r, ‘LogsDataBase’, ‘dlb_ZC_My_syslogs’,rand());
分布式表将聚合集群中每个分片的表信息,进行执行一次。
运行
–
顺便提供一个快速运行Filebeat和卸载的bat脚本:
运行服务:
//windows server2008以上版本的服务器
cd %~dp0
.\install-service-filebeat.ps1
pause
//windows server 2008 和以下的服务器
cd %~dp0
PowerShell.exe -ExecutionPolicy RemoteSigned -File .\install-service-filebeat.ps1
pause
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)
[外链图片转存中…(img-tvdAdvXC-1713839727966)]
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
[外链图片转存中…(img-JThJClVG-1713839727966)]
[外链图片转存中…(img-EtNyq4T7-1713839727967)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!