ELK的搭建和使用

news2024/10/3 2:21:35

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);,查看结果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sxs卡丢失数据如何找回?sxs卡数据丢失原因和修复办法分享!

说起sxs卡,你们是否有所了解呢?sxs卡具有很好的传输性能,能够存储照片和视频数据,主要被放置在索尼XDCAM EX型摄像机上。 而在使用sxs卡设备过程中,难免和其他设备一样,容易出现数据丢失情况。而如果丢失的…

不一样的新体验!太川股份联手菊风打造智能门禁可视对讲

在智能化浪潮的发展中,实时音视频等信息技术的加持使得楼宇对讲门禁的功能越发多且智能。作为安防产业的三大支柱之一,门禁对讲逐渐衍生为社区与家庭智慧化融合的“桥梁”。菊风用实时音视频技术赋能太川楼宇门禁可视对讲应用,将在兼顾稳定楼…

【C++从0到王者】第二十站:模板进阶

文章目录 前言一、typename 和 class的一些区别二、非类型模板参数1.非类型模板参数介绍2.array容器 三、模板的特化1.函数模板的特化2.类模板的特化1.全特化2.偏特化(半特化) 三、模板的分离编译四、总结 前言 在前面我们使用模板主要是为了解决两类问…

vs2022+qt6.24+Cef编译

1.QCefView源码下载地址 https://github.com/cefview/qcefview2.目录层级关系如下: 3.下载CefViewCore git pull --regit pull --recurse-submodules上面命令失败直接用下面的命令 git clone gitgithub.com:CefView/CefViewCore.git4.编译QCefView准备工作 a.准…

Java程序猿搬砖笔记(十五)

文章目录 在Java中将类作为参数传递(泛型)IDEA快捷键:查看该方法调用了哪些方法、被哪些方法调用快捷键:ctrlalth IDEA快捷键:快速从controller跳转到serviceImplIDEA快捷键:实现接口的方法IDEA 快捷键:快速包裹代码ID…

剑指offer66.构建乘积数组

我一开始的想法就是,先把所有数的乘积求出来,然后遍历数组,用这个积除以它,就是除了这个数外所有数的乘积。但是题目明确给了不能用除法,所以可不可以用位运算来实现除法呢。 class Solution {public int[] construct…

第R3周 - 天气预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 我的环境: 语言环境:Python3.10.7编译器:VScode深度学习环境:TensorFlow 2.13.0 数据集: 一、前期…

系列二、Redis简介

一、概述 # 官网 https://redis.io/ 总结:redis是一个内存型的数据库。 二、特点 Redis是一个高性能key/value内存型数据库。Redis支持丰富的数据类型。Redis支持持久化 。Redis单线程,单进程。

Jmeter 配置环境变量,简明教程专享

通过给 JMeter 配置环境变量,可以快捷的打开 JMeter: 打开终端。执行 jmeter。 配置环境变量的方法如下。 Mac 和 Linux 系统 在 ~/.bashrc 中加如下内容: export JMETER_HOMEJMeter所在目录 export PATH$JAVA_HOME/bin:$PATH:.:$JMETER…

日常BUG —— Java判空注解

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一. 问题描述 问题一: 在使用Java自带的注解NotNull、NotEmpty、NotBlank时报错,…

ubuntu 安装 cuda

ubuntu 安装 cuda 初环境与设备在官网找安装方式 本篇文章将介绍ubuntu 安装 CUDA Toolkit CUDA Toolkit 是由 NVIDIA(英伟达)公司开发的一个软件工具包,用于支持并优化 GPU(图形处理器)上的并行计算和高性能计算。它…

ISC 2023 | 赛宁网安验证评估 重磅发布

​​8月9日-10日,第十一届互联网安全大会(简称ISC 2023)在北京国家会议中心隆重举办。作为本次大会的战略合作伙伴(最高级别),赛宁网安主办 “安全验证评估论坛”,邀请邬江兴院士与业界专家共同…

企业分配给员工的微信号怎么高效管理?

很多很多公司都在发愁这几个问题: 1、拥有多个微信号,不想管理多台手机,想将所有微信号进行统一管理 2、想用软件来代替传统的营销体系,安全性上也要有保障 3、用人成本太大与公司的效益不成正比 4、多个账号发圈不方便&#xff0…

半关闭、端口复用与IO多路复用

文章目录 半关闭端口复用IO多路复用(IO多路转接)模型解决措施 sellect缺点 poll应用缺点 epoll应用工作模式 半关闭 使用close(fd);所对应的文件描述符写和读都关闭了。 端口复用 可以解决绑定失败的问题。 IO多路复用(IO多路转接&#…

网工内推 | 云计算工程师专场,六险一金,IE认证优先

01 铠源科技 招聘岗位:云计算工程师 职责描述: 1.具备虚拟化、桌面云、存储、服务器、数据中心、大数据、相关产品的工程项目交付或协助项目交付能力; 2.具备与客户有效沟通技术方案、项目计划和进度等,获得客户支持和认可&#…

开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用

开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用 TextGen: Implementation of Text Generation models 1.介绍 TextGen实现了多种文本生成模型,包括&a…

深度解析:使用Postman调试微信支付接口的完美指南

前期准备 在使用 Postman 调试微信支付接口之前,你需要做好以下准备: 安装 Postman 客户端应用,或使用网页版;成为 微信支付商户;已申请 商户API私钥。 当你已经具备这三个条件,就可以进入微信支付接口调…

【视频】使用OBS将MP4推流至腾讯云直播

1、下载OBS OBS官网:https://obsproject.com/ OBS支持Win、Mac、Linux,如果下载速度很慢,建议使用迅雷下载 2、OBS推流设置 2.1 添加场景 默认会有一个“场景”,如果想继续添加可以点击“+”按钮 2.2 添加媒体源 1)点击“来源”窗口中“+”按钮 2)支持的媒体源如…

mysql高级(尚硅谷-夏磊)

目录 内容介绍 Linux下MySQL的安装与使用 Mysql逻辑架构 Mysql存储引擎 Sql预热 索引简介 内容介绍 1、Linux下MySQL的安装与使用 2、逻辑架构 3、sql预热 Linux下MySQL的安装与使用 1、docker安装docker run -d \-p 3309:3306 \-v /atguigu/mysql/mysql8/conf:/etc/my…

IP网络广播系统草坪音箱景区系统防水石头,草坪音箱的应用

IP网络广播系统草坪音箱景区系统防水石头,草坪音箱的应用 SV-7045V是深圳锐科达电子有限公司的一款防水网络草坪音箱,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,可达到功率20W。常用场景:公园ip草坪音箱&…