ELK7.x日志系统搭建 4. 结合kafka集群完成日志系统

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 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

以上是我的节点及机器上安装的相关软件,东西会比较多,但是运行都离不开我们上面的架构图

日志系统各个模块配置

我这里写出跟日志系统相关的配置,eskibana这个就不贴了,前面有的。zookeeperkafka 配置好集群就可以啦。可以从 kafka高可用集群搭建 这篇文章里面找到搭建配置

logstash配置

新建一个 kafkalogstash 配置

  • 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 开始对日志进行收集,然后传输到 kafkatopic ,我们利用 kafkatool 查看一下 kafka_topic 数据


已经可以看到有数据进来了,然后我们启动 logstashkafka_topic 进行消费,输出到我们的 es 集群

sudo ./bin/logstash -f ./conf.d/kafka.conf

logstash 正常启动后,已经可以通过 kibana 查看到索引信息了, filebeat 配置了 [fields][logsource] 用来创建不同应用的索引。我们这里有 nginxmysql 的索引,我们可视化看看

kibana查看索引


总结

我知道这个 日志系统 待优化的地方很多,这只是我们简单搭建起来,让大家对日志系统有一个整体的认识,到这,日志系统的搭建就完结了。希望大家继续学习呀!

目录
相关文章
|
2月前
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
241 0
|
3月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
27 0
|
2月前
|
存储 监控 关系型数据库
ELK架构监控MySQL慢日志
ELK架构监控MySQL慢日志
|
3月前
|
Prometheus 监控 Cloud Native
Prometheus VS ELK Stack:容器监控与日志管理工具的比较与选择
在容器化时代,有效的容器监控与日志管理工具对于确保应用程序的可靠性和可维护性至关重要。本文将比较两个主流工具,Prometheus和ELK Stack,探讨它们在容器监控和日志管理方面的特点、优势和适用场景,帮助读者做出明智的选择。
|
25天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
81 1
|
26天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
30天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
100 1
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
51 0