elk高并发架构

ELK部署Redis+Keepalived高可用环境 可以配置多个端口的kibana,每个系统单独开一个kibana端口号,比如财务系统kibana使用5601端。由于维护的业务系统比较多,每个系统下的业务日志在kibana界面展示的访问权限只给该系统相关人员。口、租赁系统kibana使用5602,然后nginx做代理访问配置。每个系统的业务日志单独在其对应的端口的kibana界面里展示。注意:主从节点需要安装psmisc(提供killall命令)先装psmisc-22.20-17.el7.x86_64。这里通过nginx的访问验证配置来实现。........ 阅读详情

1.前言

普通的elk架构只适合数据量小的情景,而且也不安全,在瞬时数据量大的情况下可能会导致logstash崩溃,从而导致数据的丢失,对于数据安全有较高要求,可以在架构中加入消息队列,既可以防止瞬时的大流量并发,也可以防止在logstash挂掉的情况下数据的丢失

2.架构

给每个需要收集日志的主机部署filebeat服务,filebeat统一将日志输出到kafka集群对应的topic中,再由logstash去主动消费kafka集群topic中的日志数据,由于是logstash主动去消费,就不会发生logstash顶不住大并发数据量而崩溃的问题,但是如果数据量大,logstash消费不过来会导致kafka的消息堆积,一旦kafka堆积过多导致崩溃,所以logstash的数量也是很重要的,logstash消费后的数据写入到elasticsearch集群中,elasticsearch使用集群模式,可以保证数据的安全与高可用,最后再通过kibana展示数据

对于这个架构可能会有一些疑点,因为kafka的特殊性,主题的数据被消费后是不会立刻被删除的,所以使用多个logstash节点去消费主题会不会导致重复消费,logstash单节点宕机的情况下,kafka的主题还在写入数据,logstash恢复后会不会消费挂掉期间主题产生的数据,是否是从头消费导致重复消费以前的数据

已通过试验证明,试验中auto_offset_reset 配置为latest模式,logstash单节点宕机恢复后,会根据宕机之前offset的偏移量继续去消费主题中的数据,所以即使在宕机期间topic产生的数据,在logstash恢复后会继续去消费

已通过试验证明,试验中所有logstash节点都配置相同的消费者组,logstash配置多个节点也不会产生重复消费的情况,且每个logstash节点都是有消费topic数据的,每个logstash节点消费的数据量都差不多,相差不大,类似于负载均衡效果

3.主机信息

nameipserivceport
A10.1.60.114zookeeper、kafka、logstash、elasticsearch2181、2888、3888、9092、9200、9300
B10.1.60.115zookeeper、kafka、logstash、elasticsearch、kibana2181、2888、3888、9092、9200、9300、5601
C10.1.60.118zookeeper、kafka、logstash、elasticsearch2181、2888、3888、9092、9200、9300

3.架构搭建 

zookeeper集群搭建(kafka需要使用zookeeper)

参考:zookeeper集群搭建_Apex Predator的博客-优快云博客

kafka集群搭建 

参考:kafka集群搭建_Apex Predator的博客-优快云博客

elasticsearch集群搭建 

参考:elasticsearch集群搭建_Apex Predator的博客-优快云博客

kibana部署 

安装kibana需要部署java环境,7版本以上的要使用jdk 11版本以上

 参考:jdk1.8环境配置_Apex Predator的博客-优快云博客

在官网下载kibana的安装包,本次搭建选择了7.17.10版本

Past Releases of Elastic Stack Software | Elastic

新建目录,将安装包上传到主机中并解压更改名称

mkdir /opt/kibana

cd /opt/kibana

tar -zxvf kibana-7.17.10-linux-x86_64.tar.gz

mv kibana-7.17.10-linux-x86_64 kibana

ls /opt/kibana

 编辑kibana配置文件

vi /opt/kibana/kibana/config/kibana.yml

server.port: 5601   #配置监听端口
server.host: "0.0.0.0"   #配置访问地址
server.name: "kibana"   #kibana名称
elasticsearch.hosts: ["http://10.1.60.114:9200","http://10.1.60.115:9200","http://10.1.60.118:9200"]    #配置elasticsearch集群地址
i18n.locale: "zh-CN"     #更改界面为中文模式

kibana不能使用root用户启动,所以需要创建启动kibana服务用户

groupadd kibana

useradd kibana -g kibana -p kibana

授予权限给kibana目录

chown -R kibana.kibana /opt/kibana/kibana

切换用户启动kibana服务

su kibana

nohup /opt/kibana/kibana/bin/kibana > /opt/kibana/kibana/kibana.log &

查看kibana服务是否正常

netstat -tlpn |grep 5601

logstash部署 

安装logstash服务也需要java环境,因为和es在同一台机器上,就不需要再部署java环境了

在官网下载Logstash的安装包,本次搭建选择了7.17.10版本

Past Releases of Elastic Stack Software | Elastic

新建目录,将安装包上传到主机中并解压更改名称

mkdir /opt/logstash

cd /opt/logstatsh

tar -zxvf logstash-7.17.10-linux-x86_64.tar.gz

mv logstash-7.17.10-linux-x86_64 logstatsh

ls /opt/logstash

filebeat部署

在官网下载filebeat的安装包,本次搭建选择了7.17.10版本

Past Releases of Elastic Stack Software | Elastic

新建目录,将安装包上传到主机中并解压更改名称

mkdir /opt/filebeat

cd /opt/filebeat

tar -zxvf filebeat-7.17.10-linux-x86_64.tar.gz

mv filebeat-7.17.10-linux-x86_64 filebeat

ls /opt/filebeat

 4.服务配置

先配置filebeat收集nginx日志

vi /opt/filebeat/filebeat/filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
     - /var/log/nginx/access.log    #配置收集日志的路径
  fields:                         #为该日志定义一个字段,供后面调用
     topic: nginx-access-log
  tail_files: true

- type: log

  enabled: true
  paths:
    - /var/log/nginx/error.log
  fields:
     topic: nginx-error-log
  tail_files: true

# ------------------------------ kafka Output -------------------------------
output.kafka:
  enabled: true 
  hosts: ["10.1.60.112:9092","10.1.60.114:9092","10.1.60.115:9092"]   #kafka集群地址
  topic: '%{[fields][topic]}'    #调用前面的日志字段,来自动写入对应的主题

先不启动filebeat,等启动了logstash再启动filebeat

编辑logstash配置文件

input {
  kafka {
    bootstrap_servers => "10.1.60.112:9092,10.1.60.114:9092,10.1.60.115:9092"
    client_id => "nginx"
    group_id => "nginx"    #配置消费者组,避免重复消费的关键
    auto_offset_reset => "latest"    #配置偏移策略,latest当消费者发现分区的偏移量无效或不存在时,将从分区的最新可用偏移量开始消费。这意味着消费者将只消费从订阅时刻之后发布的消息,之前的消息将被忽略,earliest当消费者发现分区的偏移量无效或不存在时,将从分区的最早可用偏移量开始消费。这意味着消费者将从分区的开头开始消费消息,无论之前是否有消费记录
    consumer_threads => 1   #配置消费线程
    decorate_events => true
    topics => ["nginx-access-log","nginx-error-log"]  #配置kafka存储数据的主题
    codec => json    #将kafka数据格式转换成json格式
  }
}

filter {
  if [fields][topic] == "nginx-access-log" {   #通过判断主题名称去将指定主题中的日志转化为结构化日志
    grok {
      match => {
        "message" => "%{IP:ip} - (%{USERNAME:remote_user}|-) \[%{HTTPDATE:timestamp}\] \"%{WORD:request_method} %{URIPATHPARAM:request_url} HTTP/%{NUMBER:http_version}\" %{NUMBER:http_status} %{NUMBER:bytes} \"(%{DATA:referrer}|-)\" \"%{DATA:http_agent}\" \"(%{DATA:forwarded}|-)\""
      }
    }
  }
  else if [fields][topic] == "nginx-error-log" {
    grok {
      match => {
        "message" => "%{DATA:timestamp} \[%{WORD:severity}\] %{NUMBER:pid}#%{NUMBER:tid}: %{GREEDYDATA:prompt}"
      }
    }
  }
}

output {
#  stdout{
#    codec => rubydebug
#  }
  elasticsearch {
    hosts => ["http://10.1.60.114:9200","http://10.1.60.115:9200","http://10.1.60.118:9200"]
    index => "%{[@metadata][kafka][topic]}-%{+YYYY.MM.dd}"   #通过主题名称和时间去规定索引的名称,使用主题的变量去自动获取不同主题的数据
  }
}

关于多节点logstash的配置,配置文件也是和以上的相同即可,只是kafka的client_id项需要配置不同的值,这里我没有配置日志过滤,需要过滤的可以参照以下链接中的文章去配置,grok的说明也可以看以下的文章去理解

mutate使用:mutate使用(日志过滤)_Apex Predator的博客-优快云博客

grok使用: grok使用(将日志结构化)_Apex Predator的博客-优快云博客

启动所有logstash服务

 nohup /opt/logstash/logstash/bin/logstash -f /opt/logstash/logstash/config/logstash.conf > /opt/logstash/logstash/logstash.log &

启动所有filebeat服务

 nohup /opt/filebeat/filebeat/filebeat -e -c /opt/filebeat/filebeat/filebeat.yml > /opt/filebeat/filebeat/filebeat.log &

5.生成日志查看效果

访问nginx服务,需要访问filebeat收集的nginx日志的服务

 安装压测工具,使用压测工具去测试

yum -y install httpd-tools

ab -n 20 -c 4 10.1.60.114/

 使用kibana查看是否生成对应的索引与收集的日志数量是否正确

因为我是已经使用过了,所以本身是有数据的,但是新的话,会看到创建了这个索引,并且收集到了20条日志数据

也可以观察kafka的topic数据情况

 查看日志数据也可以发现,日志是没有问题的

Elastic Stack 8.16.0 日志收集平台的搭建 本篇分享了Elastisearch、Logstash、Kibana 和 Filebeat 8.16.0 的安装,以及介绍了安装过程中的注意事项 阅读详情

相关推荐

Linux 大型网站高并发架构及自动化运维项目

目录:/054 2019年最新 Linux 大型网站高并发架构及自动化运维项目 ┣━━笔记 ┃ ┣━━6.site-站点.zip ┃ ┗━━笔记软件下载地址.txt ┣━━5.7KEEPALIVED ┃ ┣━━121.KEEPALIVED-1.avi ┃ ┣━━122.KEEPALIVED-2.avi ┃ ┣━━123.KEEPALIVED-3.avi ┃ ┣━━124.KEE...

qq_52288111的博客 337

基于 Docker 的 ELK 高可用集群架构

ELK 高可用集群架构部署。

RAB 2830

Docker实战(九):Docker安装ELK环境

Docker安装ELK环境

birdben的博客 1万+

大数据实操篇 No.15-Elasticsearch集群高可用部署(含Elasticsearch head+Kibana)

第1章 ELK简介 ELK(Elasticsearch、Logstash、Kibana)提供了一整套日志分析解决方案,其中elasticsearch是开源分布式搜索引擎。Logstash是一个开源的日志采集工具。Kibana也是开源的数据分析可视化工具。三者结合,Logstash采集系统日志信息后,上传到Elasticsearch中,kibana在利用Elasticsearch分布式高效的检索引擎,将数据可视化的展示到Web界面上。 对于一些中小型的系统,可以用ELK快速搭建一套日志分析系统。本篇文章为

pezynd的专栏 2067

Keepalived 实现 Kibana 的高可用

Keepalived 通过虚拟ip绑定物理机网络接口的方式实现目标服务的高可用代理,被代理的服务上都需要安装 Keepalived。实际ip: 192.168.122.118、192.168.122.119。虚拟ip: 192.168.122.135。使用上述命令,会看到有且只有一个机器的网卡绑定了虚拟ip。进入解压好的keepalived目录。

lmj3732018的博客 4350

Elasticsearch+Kibana+HA高可用部署

内容概要: 1.支持通过脚本一件安装部署ELK 2.支持Python语言进行数据入库 3.支持通过配置文件进行HA部署 场景说明: 1.需要支持全文检索场景 2.需要支持SIEM进行数据发送 3.需要支持HA部署ELK

java程序员转型系统架构师五大步骤加四大项目

java开发三年适合转型系统架构师吗? 公开课链接:https://ke.qq.com/course/215398?flowToken=1002410 私信小编了解更多! 第一部分 架构基础 第二部分 javaEE高级 第三部分 ELK技术栈(ElasticSearch,Logstash,Kibana,垂直搜索引擎,大数据实时分析) 第四部分 亿级流量电商系统多级...

weixin_42891880的博客 1048

VMware虚拟机安装MS-DOS 7.10教程

dos安装教程dos版本7.10附下载链接。

Minecraft_xiaole的博客 1万+

elk+filebeat+kafka集群部署

elk和kafka如何配置可以去我的首页搜索即可。实现高并发,无需指定logstash。时间同步成功,实验完成。

m0_75209491的博客 1205

Unity游戏开发客户端C#基础

初级Unity客户端开发工程师 面经 之 C#篇

Sea3752的博客 2万+

【智能机器人开发全流程:硬件选型、软件架构与ROS实战,打造高效机器人系统】

通过模块化设计与ROS框架的灵活扩展,可快速搭建适应不同场景的机器人系统。实际开发中需重点关注。

dally2的博客 6040

9月13-14日上课内容 第三章 ELK日志分析系统及部署实例

接近实时集群 JAVA节点索引索(库)->类型 (表)->文档 (记录)分片和副本ELK提供了一个分布式多用户能力的全文搜索引擎ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。●:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。

m0_70766460的博客 385

OpenCV 开闭运算

开运算和闭运算是将腐蚀和膨胀按照一定的次序进行处理。 但这两者并不是可逆的,即先开后闭并不能得到原来的图像。 开运算 开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。 闭运算 闭运算与开运算相反,是先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。 cv.morphologyEx(img, op, kernel) img: 要处理的图像 op: 处理方式:若进行开运算,则设为cv.MORPH_OPEN,若进行闭

꧁༺ʚvv༒catɞ༻꧂的博客 949

2024年面试进阶必备:“阿里爸爸”高并发秒杀架构设计笔记(全彩版),ELK性能优化实战总结

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。BAT面试经验实战系列:Spring全家桶+Redis等其他相关的电子书:源码+调优面试真题:本文已被。

2401_84584817的博客 551

【UV打印机】RYPC打印软件教程(二)-软件界面概述

下图是控制软件的主操作界面.将喷绘机的操作规纳为四块,分别为参数设置,任务选择,打印控制,系统维护,对于日常打印而言,只需操作任务选择,打印控制。从而使汲及的操作相对较少,使得系统对普通用户而言简单易用.

Print World的专栏 3601

联想服务器ThinkSystemRAID阵列设置教程

关注我不迷路,全是干货! 以联想ThinkSystemSR530为例子进行示范。 开机点按【F1】 点击——【UEFI设置】 依次点击——【系统设置】——【存储】 点击——【RAID卡】 PS:本次服务器配置的是730-8i 阵列卡,按实际情况选中需要设置的阵列卡即可。 点击——【Main Menu】 点击——【Configuration Management】 点击——【Create Virtual Drive】 点击——【Select RAID Leve..

littlelotusK的博客 2万+

elk 的一些实践

elk 的一些实践

gqdw 6008

【docker】--- 详解 WSL2 中的 Ubuntu 和 Docker Desktop 的区别和关系!

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 1314

【PHP Symfony 1024企业级开发秘籍】:揭秘高并发场景下的架构设计与性能优化策略

掌握PHP Symfony 1024企业级应用开发核心技巧,解决高并发场景下的性能瓶颈。涵盖微服务架构设计、缓存优化、数据库读写分离与消息队列集成,提升系统稳定性与响应速度。适用于大型电商平台与SaaS系统,值得收藏。

CodeTrick的博客 704

RK3588 实战级 YOLOv5 Android 全解析:NPU 量化 + 多线程 + 跟踪算法,源码一次买齐

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

FJN110的博客 157

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

高并发微服务日志管理:ELK、Loki、Fluentd 终极对决与实战指南

在高并发微服务架构中,日志系统的高可用性和高吞吐量是确保系统稳定运行的关键。本文对比了ELK(Elasticsearch、Logstash、Kibana)、Loki和Fluentd等主流日志系统,探讨了它们在日志收集、存储、备份与恢复策略上的优劣,并提供了可运行的示例代码模块。通过本文,读者将能够选择适合自身业务需求的日志解决方案,并确保日志系统的高可用性与数据一致性。在高并发微服务环境中,选择合适的日志系统至关重要。

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 1787

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

互联网大厂Java求职面试:从Spring Boot到微服务架构实践

通过以上问题和答案解析,小白程序员可以学习到Spring Boot、微服务、消息队列、大数据处理等技术在电商场景中的应用,提升自己的技术能力。我会在系统中引入分布式缓存,比如Redis,结合水平扩展负载均衡,将流量分发到多个节点。可以基于用户的浏览记录、购买记录,利用Spark或Flink进行实时数据处理,同时结合机器学习算法进行推荐,比如协同过滤算法。超好吃,今天的面试表现不错,虽然还有一些需要加强的地方,但你的思路很清晰。好的,最后一个问题,这个接口需要支持高并发访问,你会采用哪些技术优化性能?

weixin_54138735的博客 483

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

互联网大厂Java面试三大回合:Lambda表达式、微服务架构与高并发核心问答解析

通过这三轮场景化问答,谢飞机对互联网大厂Java面试的核心技术点进行了全面覆盖和讲解,希望读者能从对话中把握知识要点,提升面试实战能力。

xptyyds的博客 197

运维36讲第22课:ELK 构建 MySQL 慢日志收集平台详解

想必你对 ELK、EFK 都不陌生,它们有一个共同的组件:Elasticsearch(简称ES),它是一个实时的全文搜索和分析引擎,可以提供日志数据的收集、分析、存储 3 大功能。另外一个组件 Kibana 是这套检索系统中的 Web 图形化界面系统,可视化展示在 Elasticsearch 的日志数据和结果。ELF/EFK 工具集中还有 l 和 F 这两个名称的缩写,这两个缩写代表的工具根据不同的架构和使用方式而定。L 通常是 Logstash 组件,它是一个用来搜集、分析、过滤日志的工具。

sucaiwa的博客 1117

ELk日志分析系统搭建

一、什么是ELK ​ ELK是Elasticsearch + Logstash + Kibana 这种架构的简写. ​ 这是一种日志分析平台的架构. 如果没有ELK这样的日志分析平台,我们同样可以使用shell三剑客(grep、sed、awk)来分析日志。 这种方式略显原始而简陋,虽然也能应对大多数的场景,但是当日志量变大,分析频繁的时候,仅靠人工shell 的方式来查看分析日志,就很不方便。 尤其适当使用者,对于shell不是很擅长的情况下,一个操作简单,配置方便的日志分析平台,就显得很有必要了。

@chenk的博客 6796

ELK性能优化手册:如何用Kafka处理日均TB级K8s日志(含压力测试数据)

本文详细介绍了如何通过Kafka增强ELK架构,有效处理日均TB级K8s日志。文章分析了传统ELK架构的瓶颈,提出了Kafka缓冲层的优化方案,并提供了压力测试数据和性能指标,帮助企业在高并发场景下实现高效日志处理。

z5a6b的博客 1300
上一篇: mutate使用(日志过滤)
下一篇: 压测工具ab
Apex   Predator
博客等级 码龄6年 9371粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值