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 为 beats
  beats {
    port => "9900"
  }
}
 
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
 
  mutate {
    convert => {
      "bytes" => "integer"
    }
  }
 
  geoip {
    source => "clientip"
  }
 
  # 修改了 useragent
  useragent {
    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: log
  enabled: true
  paths:
    - /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: log
  enabled: true
  paths:
    - /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 => false
			index => "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: log
  enabled: true
  paths:
    - /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 => false
			index => "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/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
  index.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 logs
  error:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

  # Slow logs
  slowlog:
    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 logs
  error:
    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 logs
  slowlog:
    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);,查看结果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Delphi7通过VB6之COM对象调用FreeBASIC写的DLL功能

VB6写ActiveX COM组件比较方便,不仅PowerBASIC与VB6兼容性好,Delphi7与VB6兼容性也不错,但二者与FreeBASIC兼容性在字符串处理上差距比较大,FreeBASIC是C化的语言,可直接使用C指令。下面还是以实现MKI/CVI, MKL/CVL, M…

iOS开发-实现二维码扫一扫Scan及识别图片中二维码功能

iOS开发-实现二维码扫一扫Scan及识别图片中二维码功能 在iOS开发中,会遇到扫一扫功能,扫一扫是使用摄像头扫码二维码或者条形码,获取对应二维码或条形码内容字符串。通过获得的字符串进行跳转或者打开某个页面开启下一步的业务逻辑。 https…

布局性能优化:安卓开发者不可错过的性能优化技巧

作者:麦客奥德彪 当我们开发Android应用时,布局性能优化是一个必不可少的过程。一个高效的布局能够提高用户体验,使应用更加流畅、响应更加迅速,而低效的布局则会导致应用的运行变得缓慢,甚至出现卡顿、崩溃等问题&…

npm ERR! code ERESOLVEnpm ERR! ERESOLVE unable to resolve dependency tree

拉取项目到本地 执行 npm install 报错 遇到这个问题首先确认的就是版本是不是太高了,降一下版本。或者通过yarn命令替代npm install命令安装,同理,启动也可以采用yarn dev 启动代替npm run dev 下面教大家用一个NVM工具,这个工…

SSL握手协议相关概念

下图为握手协议的流程图,具体的解释参考博客: 【下】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS_tenfyguo的博客-CSDN博客 下面梳理一下SSL协议中的一些细节。首先是相关名词:证书、…

深度学习基础知识笔记

深度学习要解决的问题 1 深度学习要解决的问题2 应用领域3 计算机视觉任务4 视觉任务中遇到的问题5 得分函数6 损失函数7 前向传播整体流程8 返向传播计算方法1 梯度下降 9 神经网络整体架构11 神经元个数对结果的影响12 正则化和激活函数1 正则化2 激活函数 13 神经网络过拟合…

前端开发常见效果

目录 css实现图像填充文字 css实现手风琴效果 css实现网站变灰色 elementUi的导航栏效果 css实现滚动吸附效果 鼠标经过&#xff0c;元素内部放大 css实现图像填充文字 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta c…

5.2 互联网通信安全

数据参考&#xff1a;CISP官方 目录 一、什么是互联网通信安全二、为什么要关注互联网通信安全三、电子邮件应用安全四、即时通讯应用安全 一、什么是互联网通信安全 1、互联网通信应用的概念 通信的进化史 互联网通信技术&#xff08;OSI七层模型&#xff09; 互联网应…

Effective Java笔记(29)优先考虑泛型

一般来说 &#xff0c;将集合声 明参数化&#xff0c;以及使用 JDK 所提供的泛型方法&#xff0c;这些都不太困难 。编写自己的泛型会比较困难一些&#xff0c;但是值得花些时间去学习如何编写 。 以简单的&#xff08;玩具&#xff09;堆校实现为例 &#xff1a; // Object -…

创新引领城市进化:人工智能和大数据塑造智慧城市新面貌

人工智能和大数据等前沿技术正以惊人的速度融入智慧城市的方方面面&#xff0c;为城市的发展注入了强大的智慧和活力。这些技术的应用不仅令城市管理更高效、居民生活更便捷&#xff0c;还为可持续发展和创新奠定了坚实的基础。 在智慧城市中&#xff0c;人工智能技术正成为城市…

分享一组天气组件

先看效果&#xff1a; CSS部分代码&#xff08;查看更多&#xff09;&#xff1a; <style>:root {--bg-color: #E9F5FA;--day-text-color: #4DB0D3;/* 多云 */--cloudy-background: #4DB0D3;--cloudy-temperature: #E6DF95;--cloudy-content: #D3EBF4;/* 晴 */--sunny-b…

TypeScript 中【class类】与 【 接口 Interfaces】的联合搭配使用解读

导读&#xff1a; 前面章节&#xff0c;我们讲到过 接口&#xff08;Interface&#xff09;可以用于对「对象的形状&#xff08;Shape&#xff09;」进行描述。 本章节主要介绍接口的另一个用途&#xff0c;对类的一部分行为进行抽象。 类配合实现接口 实现&#xff08;impleme…

中科亿海微RAM使用

引言 FPGA&#xff08;Field Programmable Gate Array&#xff0c;现场可编程门阵列&#xff09;是一种可编程逻辑设备&#xff0c;能够根据特定应用的需求进行配置和重新编程。在FPGA中&#xff0c;RAM&#xff08;Random Access Memory&#xff0c;随机存取存储器&#xff09…

Maven在IDEA2021版本中全局配置(一次配置处处生效)

前言 我们在开发中&#xff0c;Maven是必不可少的&#xff0c;但是每次都需要设置一遍Maven的仓库和settings.xml。真的是心累&#xff0c;今天教大家全局配置一下。再也不要每次项目都配了&#xff0c;Maven还经常出问题。 解决方案 友情提示&#xff1a;小编的IDEA版本为2…

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中)

你可以使用 Jersey 和 CXF 这些来写一个 Rest 或 SOAP 服务的java客服端。 你也可以直接使用 Apache HttpClient 来实现。但是 Feign 的目的是尽量的减少资源和代码来实现和 HTTP API 的连接。 *通过自定义的编码解码器以及错误处理&#xff0c;你可以编写任何基于文本的 HTT…

改进DevSecOps框架的 5 大关键技术

Markets and Markets的一项研究显示&#xff0c;全球DevOps的市场规模从2017年的29亿美元增加到2023年的103.1亿美元&#xff0c;预测期的年复合增长率(CAGR)为24.7%。人们对DevOps越来越感兴趣&#xff0c;因为DevOps不仅能够压缩软件的交付周期&#xff0c;还能提高交付的速度…

c++QT文件操作

1 介绍 QT的文件操作来源于其抽象基类QIODevice&#xff0c;中用于处理输入输出设备。提供了统一的接口来处理不同类型的数据源&#xff0c;如文件、套接字、缓冲区等。QIODevice 主要用于读取和写入数据&#xff0c;无论数据来自何种源头&#xff0c;都可以通过 QIODevice 统一…

HDFS中snapshot快照机制

HDFS中snapshot快照机制 介绍作用功能实现相关命令和操作相关命令 介绍 snapshot是数据存储的某一时刻的状态记录&#xff0c;备份&#xff08;backup&#xff09;则是数据存储的某一个时刻的副本HDFS snapshot快照是整个文件系统或某个目录在某个时刻的镜像&#xff0c;该镜像…

安路FPGA的赋值报错——移位处理,加括号

authordaisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 在使用移位符号用来当作除以号使用时&#xff0c;发现如下问题 其中 cnt_8K 为偶数和奇数时输出的数据不一样 reg [10:0] cnt_8K; reg [10:0] ram1_addra; always(posedge clk_16M) begin if(ram_out_flag )begin if(…

20230811导出Redmi Note12Pro 5G手机的录音机APP的录音

20230811导出Redmi Note12Pro 5G手机的录音机APP的录音 2023/8/11 10:54 redmi note12 pro 录音文件 位置 貌似必须导出录音&#xff0c;录音的源文件不知道存储到哪里了&#xff01; 参考资料&#xff1a; https://jingyan.baidu.com/article/b87fe19e9aa79b1319356842.html 红…