ELK7.x日志系统搭建 4. 结合kafka集群完成日志系统
时间:2022-07-22
本文章向大家介绍ELK7.x日志系统搭建 4. 结合kafka集群完成日志系统,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
ELK7.x日志系统搭建 4. 结合kafka集群完成日志系统
总体架构说明
环境说明
host |
hostname |
运行软件 |
---|---|---|
192.168.179.123 |
node-5 |
kafka、zookeeper、es、logstash、filebeat |
192.168.179.124 |
node-4 |
kafka、zookeeper、es、kibana、filebeat |
192.168.179.125 |
node-3 |
kafka、zookeeper |
以上是我的节点及机器上安装的相关软件,东西会比较多,但是运行都离不开我们上面的架构图。
日志系统各个模块配置
我这里写出跟日志系统相关的配置,es
、kibana
这个就不贴了,前面有的。zookeeper
、kafka
配置好集群就可以啦。可以从 kafka高可用集群搭建 这篇文章里面找到搭建配置
logstash配置
新建一个 kafka
的 logstash
配置
- vi conf.d/kafka.conf
input{
kafka {
codec => json
topics => "kafka_topic"
bootstrap_servers => "192.168.179.123:9092,192.168.179.124:9092,192.168.179.125:9092"
}
}
output{
if [fields][logsource] == "nginx" { # 根据filebeat里面的fields -> logsource 来确定是什么服务的日志
elasticsearch{
hosts => ["192.168.179.124:9200", "192.168.179.123:9200"] #elasticsearch服务器地址
user => "elastic"
password => "${ES_PWD}"
index =>"kafka-nginx-log-%{+YYYY.MM.dd}.log"
}
}
if [fields][logsource] == "mysql" {
elasticsearch{
hosts => ["192.168.179.124:9200", "192.168.179.123:9200"] #elasticsearch服务器地址
user => "elastic"
password => "${ES_PWD}"
index =>"kafka-mysql-log-%{+YYYY.MM.dd}.log"
}
}
}
filebeat配置
vi filebeat.yml (node-5的配置)
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/test-filebeat.log
fields: # 自定义字段,可以用于区分日志
logsource: mysql
output.kafka:
hosts: ["192.168.179.123:9092","192.168.179.124:9092","192.168.179.125:9092"]
topic: "kafka_topic"
partition.round_robin: # 开启kafka的partition分区
reachable_only: false
required_acks: 1
compression: gzip #压缩格式
max_message_bytes: 1000000 #压缩格式字节大小
vi filebeat.yml (node-4的配置)
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
fields:
logsource: nginx
output.kafka:
hosts: ["192.168.179.123:9092","192.168.179.124:9092","192.168.179.125:9092"]
topic: "kafka_topic"
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip
max_message_bytes: 1000000
启动模块
- 完成好各个阶段的配置后,我们逐步对模块进行启动
# 对es节点进行启动 (node-4、node-5)
su - elastic -c "/home/test/elasticsearch-7.6.0/bin/elasticsearch -d"
# 启动kibana (node-4)
sudo nohup ./bin/kibana --allow-root
# 启动kafka集群 (node-4、node-5)
./bin/zookeeper-server-start.sh -daemon ./config/zookeeper.properties
./bin/kafka-server-start.sh -daemon ./config/server.properties
# 创建用于消息传输的kafka topic
./bin/kafka-topics.sh --create --bootstrap-server 192.168.179.123:9092,192.168.179.124:9092,192.168.179.125:9092 --replication-factor 3 --partitions 1 --topic kafka_topic
# 查看topic是否正常
./bin/kafka-topics.sh --describe --bootstrap-server 192.168.179.123:9092,192.168.179.124:9092,192.168.179.125:9092 --topic kafka_topic
# 启动filebeat (node-4、node-5)
./filebeat -e -c filebeat.yml
这个时候 filebeat
开始对日志进行收集,然后传输到 kafka
的 topic
,我们利用 kafkatool
查看一下 kafka_topic
数据
已经可以看到有数据进来了,然后我们启动 logstash
对 kafka_topic
进行消费,输出到我们的 es
集群
sudo ./bin/logstash -f ./conf.d/kafka.conf
logstash
正常启动后,已经可以通过 kibana
查看到索引信息了, filebeat
配置了 [fields][logsource]
用来创建不同应用的索引。我们这里有 nginx
和 mysql
的索引,我们可视化看看
kibana查看索引
总结
我知道这个 日志系统
待优化的地方很多,这只是我们简单搭建起来,让大家对日志系统有一个整体的认识,到这,日志系统的搭建就完结了。希望大家继续学习呀!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 中Failed to read key from keystore解决办法
- Android圆角按钮的制作方法
- Android计时器控件Chronometer应用实例
- Android 中利用 ksoap2 调用 WebService的示例代码
- Android自定义View展示Wifi信号强弱指示方法示例
- android事件分发机制的实现原理
- Android 在子线程中更新UI的几种方法示例
- WebView设置WebViewClient的方法
- Android星级评分条的实现代码
- Android模仿美团顶部的滑动菜单实例代码
- android实现按钮获取焦点延迟加载
- Devtools 老师傅养成[1] - Chrome Devtools介绍
- Android4.4开发之电池低电量告警提示原理与实现方法分析
- 浅谈android性能优化之启动过程(冷启动和热启动)
- Android拖动条的实现代码