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

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建使用ELK平台,您需要按照以下步骤进行操作: 1. 安装和配置Elasticsearch:首先,您需要安装Elasticsearch。您可以从官方网站下载适用于您的操作系统的包,并按照官方文档中的指南进行安装。安装完成后,您需要进行一些基本的配置,如设置集群名称和节点名称。 2. 安装和配置Logstash:Logstash 是一个用于数据收集、处理和传输的工具。您可以从官方网站下载适用于您的操作系统的包,并按照官方文档中的指南进行安装。安装完成后,您需要配置Logstash来定义输入、过滤器和输出,以便从不同的数据源收集日志数据并将其发送到Elasticsearch。 3. 安装和配置Kibana:Kibana 是一个用于数据可视化和分析的工具。您可以从官方网站下载适用于您的操作系统的包,并按照官方文档中的指南进行安装。安装完成后,您需要配置Kibana来连接到Elasticsearch,并创建可视化仪表板、图表和搜索查询等。 4. 配置和优化ELK集群:一旦您完成了Elasticsearch、Logstash和Kibana的安装和配置,您可以开始进行集群配置和优化。您可以调整Elasticsearch集群的硬件资源分配,配置索引和搜索的优化参数,以满足您的需求。 5. 生产环境使用:在将ELK平台投入生产环境之前,您需要确保您的日志数据源正确地发送到Logstash,并且通过Kibana可以正确地进行搜索和可视化。您还应该设置适当的安全性措施,如访问控制和身份验证,以保护您的数据。 以上是搭建使用ELK平台的一般步骤。具体操作可能因环境和需求而有所不同,建议您参考官方文档以获取更详细的指南和最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值