ELK的搭建和使用

ELK的搭建和使用

1、什么是ELK

日志收集平台有多种组合方式:

  • ELK Stack 方式:Elasticsearch + Logstash + Filebeat + Kibana,业界最常见的架构。

在这里插入图片描述

  • Elasticsearch + Logstash + Kafka + Kibana,用上了消息中间件,但里面也有很多坑。

在这里插入图片描述

ELK Stack 的方式,这种方式对我们的代码无侵入,核心思想就是收集磁盘的日志文件,然后导入到

Elasticsearch。比如我们的应用系统通过 logback 把日志写入到磁盘文件,然后通过这一套组合的中间件就能把

日志采集起来供我们查询使用了。

ELK 不是一款软件,而是ElasticsearchLogstashKibana 三种软件产品的首字母缩写。这三者都是开源

软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信

息显示,ELK Stack 已经成为目前最流行的集中式日志解决方案。

  • Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构

    建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具

    有复杂的搜索功能。

  • Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格

    式等操作,然后存储到用户指定的位置。

  • Kibana:数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图

    表的方式展示。

2、简单的ELK架构

整体的架构图如下所示:
在这里插入图片描述

流程如下:

  • 先使用 Filebeat 把日志收集起来,然后把数据再传给 Logstash
  • 通过 Logstash 强大的数据清洗功能。
  • 最终把数据写入到 Elasticsearch 中。
  • 并由 Kibana 进行可视化。

3、安装部署

3.1 环境准备

相关软件的安装,请参考:

《Windows环境下Elasticsearch相关软件安装》

《Docker安装Elasticsearch相关软件安装》

《Linux环境下Elasticsearch相关软件安装》

3.2 配置 logstash

主要是监听某个端口来获取数据。

配置文件地址:https://www.elastic.co/guide/en/logstash/7.12/index.html

创建配置文件

$ cd /home/zhangshixing/elasticsearch/logstash-7.12.1
$ mkdir streamconf
$ cd streamconf
$ vim weblog.conf

配置文件内容如下:

input {  # 配置了 input 为 beatsbeats {port => "9900"}
}filter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}mutate {convert => {"bytes" => "integer"}}geoip {source => "clientip"}# 修改了 useragentuseragent {source => "user_agent"target => "useragent"}date {match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]}
}output {stdout {codec => dots {}}elasticsearch {hosts=>["192.168.94.186:9200"]# 新增了索引名字index => "apache_elastic_example"}
}

启动

$ ./bin/logstash -f /home/zhangshixing/elasticsearch/logstash-7.12.1/streamconf/weblog.conf

在这里插入图片描述

3.3 配置Filebeat

主要是监听某个数据文件的变换来获取数据。

将监听到的数据发送到配置的logstash。

配置文件地址:

https://www.elastic.co/guide/en/beats/filebeat/7.12/configuring-howto-filebeat.html

日志文件准备

/home/zhangshixing/logs/目录下放置debug.logerror.loginfo.log三个文件。

在这里插入图片描述

创建配置文件

$ cd /home/zhangshixing/elasticsearch/filebeat-7.12.1-linux-x86_64
$ vim filebeat_apache.yml

配置文件内容如下:

filebeat.inputs:
- type: logenabled: truepaths:- /home/zhangshixing/logs/*.log
output.logstash:hosts: ["192.168.94.186:9900"]
$ ./filebeat -e -c /home/zhangshixing/elasticsearch/filebeat-7.12.1-linux-x86_64/filebeat_apache.yml

在这里插入图片描述

3.4 测试

索引查看

在这里插入图片描述

在这里插入图片描述

数据读取
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.5 注意

注意下 logstash 中的 grok 过滤器,指定的 message 的格式需要和自己的日志的格式相匹配,这样才能将我们的

日志内容正确映射到 message 字段上。

例如我的 logback 的配置信息如下:

在这里插入图片描述

而我的 logstash 配置如下,和 logback 的 pettern 是一致的。

grok {match => { "message" => "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n" }}

4、ELK部署之使用redis消息队列

整体结构如下:

在这里插入图片描述

4.1 部署filebeat配置将日志数据输入到redis

这里首先需要安装redis,redis的安装请参考《Redis的安装》。

准备日志文件:
在这里插入图片描述

filebeat_redis.yml配置文件配置内容:

filebeat.inputs:
- type: logenabled: truepaths:- /home/zhangshixing/redislogs/info.log 
output.redis:hosts: ["192.168.94.186:6379"]key: "filebeat-redis"  

启动:

$ ./filebeat -e -c /home/zhangshixing/elasticsearch/filebeat-7.12.1-linux-x86_64/filebeat_redis.yml

在这里插入图片描述

redis查看:
在这里插入图片描述

4.2 部署logstash配置读入redis数据输入到ES集群中

$ mkdir redis
$ cd redis
$ vim  redis.conf

redis.conf配置文件的内容:

input {redis {host => "192.168.94.186"port => "6379"db => "0"key => "filebeat-redis"data_type => "list"}
}
output {stdout {}elasticsearch {hosts => "192.168.94.186:9200"manage_template => falseindex => "filebeat-redis-%{+YYYY.MM.dd}"}
}

启动logstash:

$ ./bin/logstash -f  /home/zhangshixing/elasticsearch/logstash-7.12.1/redis/redis.conf

在这里插入图片描述

查看索引建立情况:

$ curl -XGET "192.168.94.186:9200/_cat/indices?v"

在这里插入图片描述

查看数据:

$ curl -XGET "192.168.94.186:9200/filebeat-redis-2022.06.28/_search

在这里插入图片描述

5、Kafka+ELK 完成海量日志收集

整体结构:

在这里插入图片描述

5.1 部署filebeat配置将日志数据输入到kafka

这里首先需要安装kafka,kafka的安装请参考《Kafka的安装》。

创建两个topic

$ docker exec -it kafka /bin/sh
$ cd /opt/kafka_2.13-2.8.1
$ bin/kafka-topics.sh --zookeeper 192.168.94.186:2181 --create --topic app-log-collector --partitions 1 --replication-factor 1
$ bin/kafka-topics.sh --list --zookeeper 192.168.94.186:2181

在这里插入图片描述

# 我们可以查看一下topic情况
$ bin/kafka-topics.sh --zookeeper 192.168.94.186:2181 --topic app-log-collector --describe

在这里插入图片描述

filebeat配置文件

创建filebeat_kafka.yaml配置文件

filebeat.inputs:
- type: logenabled: truepaths:- /home/zhangshixing/kafkalogs/info.log
output.kafka:hosts: ["192.168.94.186:9092"]topic: "app-log-collector"partition.round_robin: reachable_only: true

启动

$ ./filebeat -e -c /home/zhangshixing/elasticsearch/filebeat-7.12.1-linux-x86_64/filebeat_kafka.yml

在这里插入图片描述

查看kafka后台信息

$ docker logs -f kafka

在这里插入图片描述

5.2 部署logstash配置读入kafka数据输入到ES集群中

配置文件

$ mkdir kafka
$ cd kafka
$ vim  kafka.conf
input {kafka {bootstrap_servers => "192.168.94.186:9092"topics => "app-log-collector"}
}
output {stdout {}elasticsearch {hosts => ["192.168.94.186:9200"]manage_template => falseindex => "filebeat-kafka-%{+YYYY.MM.dd}"}
}

启动

$ ./bin/logstash -f  /home/zhangshixing/elasticsearch/logstash-7.12.1/kafka/kafka.conf

在这里插入图片描述

准备日志文件

在这里插入图片描述

往日志文件中插入数据,logstash后台信息:

在这里插入图片描述

查看索引建立情况:

$ curl -XGET "192.168.94.186:9200/_cat/indices?v"

在这里插入图片描述

查看数据:

$ curl -XGET "192.168.94.186:9200/filebeat-kafka-2022.06.29/_search

在这里插入图片描述

6、基于ELK搭建mysql慢查询、错误日志监控平台

6.1 mysql开启慢日志

这里为了操作方便,使用在 windows 上的 mysql 数据库。

如果 mysql 没有开启慢日志的,要先开启:

1、 登陆 mysql,查看 mysql 是否开启慢日志

$ show variables like '%slow_query_log%';

如图所示是没有开启的:

在这里插入图片描述

在这里插入图片描述

2、开启慢查询日志,修改配置文件C:\Program Files\MySQL\MySQL Server 5.5\my.ini

[mysqld]
# 开启慢日志
slow_query_log=1
# 日志位置
slow_query_log_file=C:\ProgramData\MySQL\MySQL Server 5.5\Data\WIN-NISNE13T693-slow.log
# 设置阈值
long_query_time=3
# 输出形式
log_output=FILE

在这里插入图片描述

3、重启mysql
在这里插入图片描述

4、再次登陆查询,已经开启

在这里插入图片描述

6.2 错误日志查询

$ show variables like 'log_error';

在这里插入图片描述

6.3 Filebeat

新建配置文件

filebeat_mysql.yml配置文件:

filebeat.config.modules:path: ${path.config}/modules.d/*.ymlreload.enabled: false
setup.template.settings:index.number_of_shards: 1index.number_of_replicas: 0
output.elasticsearch:hosts: ["localhost:9200"]
setup.kibana:host: "localhost:5601"

启用mysql模块

$ .\filebeat -e -c filebeat_mysql.yml modules enable mysql

在这里插入图片描述

modules.d目录下会生成mysql.yml文件

# Module: mysql
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.x/filebeat-module-mysql.html- module: mysql# Error logserror:enabled: true# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.#var.paths:# Slow logsslowlog:enabled: true# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.#var.paths:

修改mysql module配置文件mysql.yml

# Module: mysql
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.x/filebeat-module-mysql.html- module: mysql# Error logserror:enabled: true# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.var.paths: ["C:\\ProgramData\\MySQL\\MySQL Server 5.5\\Data\\WIN-NISNE13T693.err"]# Slow logsslowlog:enabled: true# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.var.paths: ["C:\\ProgramData\\MySQL\\MySQL Server 5.5\\Data\\WIN-NISNE13T693-slow.log"]

加载kibana仪表盘

$ .\filebeat -e -c filebeat_mysql.yml setup

在这里插入图片描述

运行filebeat,注意这里不要把上述的指令中断后再执行,直接新开窗口执行,否则可能生成面板失败:

$ .\filebeat -e -c filebeat_mysql.yml

在这里插入图片描述

可视化查看

kibana主页 -> 添加数据 -> MySQL日志,中点击检查数据,如果出现成功提示则说明配置成功。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击检查数据:

在这里插入图片描述

点击MySQL 日志仪表板:

在这里插入图片描述

执行select sleep(5);,查看结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/85459.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java类型转换

总是忘,总是记混,气气气! 基本类型 4整型、2浮点型、1布尔、1字符 关键字大小取值范围包装类型byte8-27~27-1Byteshort16-215~215-1Shortint32-231~231-1Integerlong64-263~263-1Longfloat323.4e-38~3.4e38Floatdouble641.7e-38~1.7e38Dou…

HarmonyOS应用开发的新机遇与挑战

HarmonyOS 4已经于2023年8月4日在HDC2023大会上正式官宣。对广大HarmonyOS开发者而言,这次一次盛大的大会。截至目前,鸿蒙生态设备已达7亿台,HarmonyOS开发者人数超过220万。鸿蒙生态充满着新机遇,也必将带来新的挑战。 HarmonyO…

FPGA优质开源项目 – PCIE通信

本文介绍一个FPGA开源项目:PCIE通信。该工程围绕Vivado软件中提供的PCIE通信IP核XDMA IP建立。Xilinx提供了XDMA的开源驱动程序,可在Windows系统或者Linux系统下使用,因此采用XDMA IP进行PCIE通信是比较简单直接的。 本文主要介绍一下XDMA I…

三次握手与四次挥手 tcp协议特点 tcp状态转移图 TIME_WAIT 抓包

讲解 三次握手图示理解讲解 四次挥手图示理解理解 tcp协议特点tcp状态转移过程总图四次挥手状态转移过程三次挥手状态转移过程 TIME_WAIT状态存在的原因连接状态的一个测试一个面试题:抓包: 三次握手 图示理解 三次握手发生在客户端执行 connect()的时…

如何解决物流投诉问题,拥有更多的回头客?

在电商物流中,客户投诉比较多的一块通常是配送延迟或派送问题。以下是一些可能导致此类问题的原因以及解决方法: 配送员数量不足或调度不合理:电商企业可能面临配送员不足的情况,导致派送时间延长或出现派送失败等问题。解决方法…

ArcGIS Pro 基础安装与配置介绍

ArcGIS Pro ArcGIS Pro作为ESRI面向新时代的GIS产品,它在原有的ArcGIS平台上继承了传统桌面软件(ArcMap)的强大的数据管理、制图、空间分析等能力,还具有其独有的特色功能,例如二三维融合、大数据、矢量切片制作及发布…

项目实战 — 消息队列(7){虚拟主机设计(2)}

目录 一、消费消息的规则 二、消费消息的具体实现方法 🍅 1、编写消费者类(ConsumerEnv) 🍅 2、编写Consumer函数式接口(回调函数) 🍅 3、编写ConsumeerManager类 🎄定义成员变…

MySQL REGEXP_SUBSTR() 函数

MySQL 8.0 的 REGEXP_SUBSTR()函数从一个字符串获取和指定模式匹配的子串并返回。默认情况下,REGEXP_SUBSTR()函数执行不区分大小写的匹配。 REGEXP_SUBSTR() 语法如下: REGEXP_SUBSTR (expression, pattern [, position[, occurrence[, match_type]]])…

28 玻尔兹曼机

文章目录 28 玻尔兹曼机28.1 模型定义28.2 梯度推导28.3 梯度上升28.4 基于VI[平均场理论]求解后验概率 28 玻尔兹曼机 28.1 模型定义 玻尔兹曼机是一张无向图,其中的隐节点和观测节点可以有任意连接如下图: 我们给其中的节点、连线做出一些定义&#…

通过这些case,我把项目LCP时间减少了1.5s

您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ 前言 最近在做公司几个项目性能优化,整理出一些比较有用且常见的case来分享一下。 A项目优化 白屏相关 DNS预连接、资源预解析 对于公共域…

【数学建模】--聚类模型

聚类模型的定义: “物以类聚,人以群分”,所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计,分析或预测;也可以探究不…

【JavaSE】数组的定义与使用

详解数组 数组的基本概念什么是数组数组的创建及初始化数组的使用 数组是引用类型基本类型变量与引用类型变量的区别引用变量认识 null 数组的应用场景数组练习二维数组 数组的基本概念 什么是数组 数组可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。比如现实…

FOHEART H1数据手套:连接虚拟与现实,塑造智能交互新未来

在全新交互时代背景中,数据手套无疑是一种重要的科技产物。它不仅彻底改变了我们与虚拟世界的互动方式,更为我们提供了一种全新、更为直观的交互形式。 FOHEART H1数据手套结合了虚拟现实、手势识别等高新技术,用先进的传感技术和精准的数据…

Chatgpt AI newbing作画,文字生成图 BingImageCreator 二次开发,对接wxbot

开源项目 https://github.com/acheong08/BingImageCreator 获取cookie信息 cookieStore.get("_U").then(result > console.log(result.value)) pip3 install --upgrade BingImageCreator import os import BingImageCreatoros.environ["http_proxy"]…

一个概率论例题引发的思考

浙江大学版《概率论与梳理统计》一书中的,第13章第1节例2如下: 这个解释和模型比较简单易懂。接下来,第2节的例2是一个关于此模型的题目: 在我自己的理解中,此题的解法跟上一个题目一样,第二级传输后&…

Python-组合数据类型

今天要介绍的是Python的组合数据类型 整理不易,希望得到大家的支持,欢迎各位读者评论点赞收藏 感谢! 目录 知识点知识导图1、组合数据类型的基本概念1.1 组合数据类型1.2 集合类型概述1.3 序列类型概述1.4 映射类型概述 2、列表类型2.1 列表的…

网络:从socket编程的角度说明UDP和TCP的关系,http和tcp的区别

尝试从编程的角度解释各种网络协议。 UDP和TCP的关系 从Python的socket编程角度出发,UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)是两种不同的传输协议。 TCP是一种面向连接的协议&#xff0c…

OPENCV C++(八)HOG的实现

hog适合做行人的识别和车辆识别 对一定区域的形状描述方法 可以表示较大的形状 把图像分成一个一个小的区域的直方图 用cell做单位做直方图 计算各个像素的梯度强度和方向 用3*3的像素组成一个cell 3*3的cell组成一个block来归一化 提高亮度不变性 常用SVM分类器一起使用…

【Unity细节】Unity打包后UI面板消失是怎么回事

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:unity细节和bug ⭐关于物体的动画碰到其他碰撞器后停止播放的问题⭐ 文章目录 ⭐关于物体的动画碰…

纯C#使用Visionpro工具1

各个工具的程序集名称 一般分类 一般情况是去掉Tool和Cog就是命名空间,如CogBlobTool对应于Cognex.Visionpro.Blob 也有特殊情况 忘了怎么办 可以借用ToolBlock引入工具后打开高级脚本查看 了解工具类和对象