大数据_Elastic Stack


构建在开源基础之上,Elastic Stack 让您能够安全可靠地获取任何来源、任何格式的数据,并且实时地对数据进行搜索、分析和可视化。

官方网站:https://www.elastic.co/cn/products/
在这里插入图片描述

Beats

Beats 是一个面向轻量型采集器的平台,这些采集器可从边缘机器向 Logstash 和 Elasticsearch 发送数据。
在这里插入图片描述

Filebeat - 日志文件

当您要面对成百上千、甚至成千上万的服务器、虚拟机和容器生成的日志时,请告别 SSH 吧。Filebeat 将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。

架构

在这里插入图片描述
1、汇总、“tail -f” 和搜索
启动 Filebeat 后,打开 Logs UI,直接在 Kibana 中观看对您的文件进行 tail 操作的过程。通过搜索栏按照服务、应用程序、主机、数据中心或者其他条件进行筛选,以跟踪您的全部汇总日志中的异常行为。
2、性能稳健,不错过任何检测信号
无论在任何环境中,随时都潜伏着应用程序中断的风险。Filebeat 能够读取并转发日志行,如果出现中断,还会在一切恢复正常后,从中断前停止的位置继续开始。
3、Filebeat 让简单的事情简单化
Filebeat 内置有多种模块(auditd、Apache、NGINX、System、MySQL 等等),可针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点,是因为它将自动默认路径(因操作系统而异)与 Elasticsearch 采集节点管道的定义和 Kibana 仪表板组合在一起。不仅如此,数个 Filebeat 模块还包括预配置的 Machine Learning 任务。
4、容器就绪和云端就绪
通过 Elastic Stack,可以轻松地监测容器和云服务。在 Kubernetes、Docker 或云端部署中部署 Filebeat,即可获得所有的日志流:信息十分完整,包括日志流的 pod、容器、节点、VM、主机以及自动关联时用到的其他元数据。此外,Beats Autodiscover 功能可检测到新容器,并使用恰当的 Filebeat 模块对这些容器进行自适应监测。
5、它不会导致您的管道过载
当将数据发送到 Logstash 或 Elasticsearch 时,Filebeat 使用背压敏感协议,以应对更多的数据量。如果 Logstash 正在忙于处理数据,则会告诉 Filebeat 减慢读取速度。一旦拥堵得到解决,Filebeat 就会恢复到原来的步伐并继续传输数据。
6、输送至 Elasticsearch 或 Logstash,在 Kibana 中实现可视化
Filebeat 是 Elastic Stack 的一部分,因此能够与 Logstash、Elasticsearch 和 Kibana 无缝协作。无论您要使用 Logstash 转换或充实日志和文件,还是在 Elasticsearch 中随意处理一些数据分析,亦或在 Kibana 中构建和分享仪表板,Filebeat 都能轻松地将您的数据发送至最关键的地方。

部署

mkdir /es/beats
tar -xvf filebeat-6.5.4-linux-x86_64.tar.gz 
cd filebeat-6.5.4-linux-x86_64

运行

Filebeat目前支持两种prospector类型:log和stdin。

./filebeat -e -c stdbeat.yml -d "publish"   # 运行,并指定配置文件
#参数说明 
-e: 输出到标准输出,默认输出到syslog和logs下 
-c: 指定配置文件 
-d: 输出debug信息,一般生产环境不需要

示例一:实时读取控制台最新输入信息,并进行控制台最新输出

#创建如下配置文件 stdbeat.yml 
filebeat.inputs: 
- type: stdin   # 控制台输入
  enabled: true 
output.console:   # 控制台输出
  pretty: true  
  enable: true   

#启动filebeat 
./filebeat -e -c stdbeat.yml   # 运行,并指定配置文件

#输入hello运行结果如下: 
hello

方式二:实时监测指定日志文件内容(行内容),并进行控制台实时输出

#创建如下配置文件 logbeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /es/beats/logs/*.log
output.console:
  pretty: true
  enable: true
  
#启动filebeat
./filebeat -e -c logbeat.yml

#/es/beats/logs下创建a.log文件,并输入如下内容
hello
world

方式三:为输出添加自定义标签和字段,以便后期处理

#创建如下配置文件 logbeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /es/beats/logs/*.log
  tags: ["web"]    #添加自定义tag,便于后续的处理
  fields:  #添加自定义字段
    key: value
  fields_under_root: true  #true为自定义字段在根节点否则在子节点中 
output.console:
  pretty: true
  enable: true
  
#启动filebeat
./filebeat -e -c logbeat.yml

#/es/beats/logs下创建a.log文件,并输入如下内容
hello
world

方式三:实时监测指定日志文件内容(行内容),并实时输出到ES

#创建如下配置文件 logbeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /es/beats/logs/*.log
  tags: ["web"]    #添加自定义tag,便于后续的处理
  fields:  #添加自定义字段
    key: value
  fields_under_root: true  #true为自定义字段在根节点否则在子节点中 
setup.template.settings:
  index.number_of_shards: 3 #指定索引的分区数
output.elasticsearch: #指定ES的配置
  hosts: ["192.168.1.100:9200","192.168.1.100:9201","192.168.1.100:9202"]

#启动filebeat
./filebeat -e -c logbeat.yml

#/es/beats/logs下创建a.log文件,并输入如下内容
hello
world

ES查看数据:
在这里插入图片描述

模块

前面要想实现日志数据的读取以及处理都是自己手动配置的,其实,在Filebeat中,有大量的Module,可以简化我 们的配置,直接就可以使用。

官方网站:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html
在这里插入图片描述
示例一:Redis
实时获取Redis运行输出的日志数据到ES中。

1、启动和禁用

./filebeat modules enable redis #启动
./filebeat modules disable redis #禁用

在这里插入图片描述
2、修改redis.yml配置文件

cd modules.d/ 
vim redis.yml

- module: redis  
# Main logs  
  log: 
  	enabled: true 
    # Set custom paths for the log files. If left empty,    
    # Filebeat will choose the paths depending on your OS.    
    var.paths: ["/data/redis-data/node01/*.log","/data/redis-data/node02/*.log","/data/redis-data/node03/*.log"]   # reids日志文件位置
  #Slow logs, retrieved via the Redis API (SLOWLOG)  
  slowlog:    
    enabled: false
    # The Redis hosts to connect to.    
    # var.hosts: ["localhost:6379"]
    
    # Optional, the password to use when connecting to Redis.    
    # var.password:

3、 编写配置文件redisbeat.yml

filebeat.inputs: 
- type: log  
  enabled: true  
  paths:
    - /es/log/*.log 

# output.console:  # 输出到控制台
  # pretty: true  
  # enable: true 
filebeat.config.modules:  
  path: ${path.config}/modules.d/*.yml   # 读取之前修改的reids.yml文件
  reload.enabled: false
setup.template.settings:  
  index.number_of_shards: 3 
output.elasticsearch: # 指定ES的配置
  hosts: ["192.168.1.100:9200","192.168.1.100:9201","192.168.1.100:9202"]

4、启动

./filebeat -e -c redisbeat.yml

5、启动redis服务示例

docker create --name redis-node01 -v /data/redis-data/node01:/data -p 6379:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf --loglevel debug --logfile nodes-node-01.log
docker create --name redis-node02 -v /data/redis-data/node02:/data -p 6380:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf --loglevel debug --logfile nodes-node-02.log
docker create --name redis-node03 -v /data/redis-data/node03:/data -p 6381:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-03.conf --loglevel debug --logfile nodes-node-03.log

Metricbeat - 指标

轻量型指标采集器:
用于从系统和服务收集指标。Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据,从 CPU 到内存,从 Redis 到 Nginx,不一而足。

查看官网:https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modules.html

功能

1、系统级监控,更简洁
将 Metricbeat 部署到您的所有 Linux、Windows 和 Mac 主机,并将它连接到 Elasticsearch 就大功告成了:您可以获取系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据,还可针对系统上的每个进程获得与 top 命令类似的统计数据。
2、单个二进制文件提供多种模块
Metricbeat 提供多种内部模块,这些模块可从多项服务(诸如 Apache、Jolokia、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus 等等)中收集指标。安装简单,完全零依赖性。只需在配置文件中启用您所需的模块即可。
3、容器就绪
通过 Elastic Stack,您能够轻松地监测容器。将 Metricbeat 部署到同一台主机上的一个单独容器后,它将收集与主机上运行的其他每一个容器相关的统计数据。在收集统计数据时,它直接从 proc 文件系统读取 cgroup 信息,这就意味着它无需特权即可访问 Docker API,并且同样适用于其他 Runtime。针对 Docker 的 Autodiscovery 让事情进一步简化,您只需指定一个条件即可开启 Metricbeat 模块。
4、不错过任何检测信号
将指标通过假脱机传输方式输送至磁盘,这样您的数据管道再也不会错过任何一个数据点,即使发生中断(例如网络问题),也勿需担心。Metricbeat 会保留传入的数据,并在重新上线后将这些指标输送至 Elasticsearch 或 Logstash。

组成

Metricbeat有2部分组成,一部分是Module,另一部分为Metricset。
Module 收集的对象,如:mysql、redis、操作系统等;
Metricset 收集指标的集合,如:cpu、memory、network等;

部署

tar -xvf metricbeat-6.5.4-linux-x86_64.tar.gz
cd metricbeat-6.5.4-linux-x86_64

运行

1、收集系统指标到ES

vim metricbeat.yml
# 修改配置文件
metricbeat.config.modules:
  path: ${path.config}/modules.d/*.yml  
  reload.enabled: false 
setup.template.settings:  
  index.number_of_shards: 3  
  index.codec: best_compression 
setup.kibana: 
# 存储到ES
output.elasticsearch:  
  hosts: ["192.168.1.7:9200","192.168.1.7:9201","192.168.1.7:9202"] 
processors:  
  - add_host_metadata: ~  
  - add_cloud_metadata: ~ 

# 启动,控制台输出信息
./metricbeat -e

模块

查看
./metricbeat modules list
在这里插入图片描述
示例一:启动Redis模块–Redis指标数据输出到ES
./metricbeat modules enable redis

#修改redis module配置 
vim modules.d/redis.yml
- module: redis  
  metricsets:    
    - info  
  #  - keyspace  
  period: 10s
  
  # Redis hosts  
  hosts: ["192.168.1.7:6379","192.168.1.7:6380","192.168.1.7:6381"]
  
  # Network type to be used for redis connection. Default: tcp  
  # network: tcp
  # Max number of concurrent connections. Default: 10  
  # maxconn: 10
  # Redis AUTH password. Empty by default.  
  # password: foobared

# 启动 
./metricbeat -e

Kibana

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以 使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对 数据进行多元化的分析和呈现。

官网:https://www.elastic.co/cn/products/kibana

安装

安装方式一:安装包

# 解压安装包 
tar -xvf kibana-6.5.4-linux-x86_64.tar.gz
# 修改配置文件 
vim config/kibana.yml
server.host: "192.168.1.7"  
# 对外暴露服务的地址 
elasticsearch.url: "http://192.168.1.7:9200"  # 配置Elasticsearch

# 启动 
./bin/kibana
# 通过浏览器进行访问 
http://192.168.1.7:5601/app/kibana

安装方式二:docker安装

# 拉取镜像 
docker pull kibana:6.5.4
# 创建配置文件 
vim kibana.yml 
server.host: "192.168.1.7" 
elasticsearch.url: "http://192.168.1.7:9200"
# 创建容器 
docker create --name kibana --net host -v /es/beats/kibanadocker/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:6.5.4
# 启动容器 ,并查看日志
docker start kibana && docker logs -f kibana

简单使用

1、数据探索
探索ES中的数据
并指定了ES(里面是有通过Beats采集的数据),再可视化平台上进行过滤展示。

2、Metricbeat 仪表盘
可以将Metricbeat的数据在Kibana中展示。
内置模板,诸如System、Apache、Jolokia、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus 等等

实现:修改metricbeat的配置文件,如下

vim metricbeat.yml
# 修改配置文件
setup.kibana:  
  host: "192.168.1.7:5601"  # 指定Kibana

# 安装仪表盘到Kibana
./metricbeat setup --dashboards

3、Filebeat 仪表盘
实现:Filebeat Redis模块的配置文件,如下

vim redisbeat.yml
# 修改配置文件
setup.kibana:  
  host: "192.168.1.7:5601"  # 指定Kibana

# 安装仪表盘到Kibana
./filebeat -c redisbeat.yml setup

Logstash

Logstash 是动态数据收集管道,拥有可扩展的插件生态系统,能够与Elasticsearch 产生强大的协同作用。
在这里插入图片描述

安装

#检查jdk环境,要求jdk1.8+ 
java -version

#解压安装包 
tar -xvf logstash-6.5.4.tar.gz

#第一个logstash示例 ,控制台输入,做出响应
bin/logstash -e 'input { stdin { } } output { stdout {} }'

示例

一、将Filebeat和Logstash整合起来,读取nginx的日志

数据流:Nginx-----日志文件-------Filebeat------Logstash------ES------Kibana

1、配置Filebeat

#vim d-nginx.yml 
filebeat.inputs: 
- type: log  
  enabled: true  
  paths: 
    - /var/log/nginx/access.log  
  tags: ["log"]  
  fields:    
    from: nginx  
  fields_under_root: false 
# 指定输出为logstash
output.logstash:  
  hosts: ["192.168.1.7:5044"]   
  
# 启动 
./filebeat -e -c d-nginx.yml 
# 说明:现在启动会报错,因为Logstash还没有启动

2、配置Logstash

vim d-pipeline.conf
# 输入如下内容: 
input {    	
      beats { 
             port => "5044" 
      } 
}

# The filter part of this file is commented out to indicate that it is 
output {
    stdout { codec => rubydebug } 
}

#启动 --config.test_and_exit 用于测试配置文件是否正确 
bin/logstash -f d-pipeline.conf --config.test_and_exit

#正式启动 --config.reload.automatic 热加载配置文件,修改配置文件后无需重新启动 
bin/logstash -f d-pipeline.conf --config.reload.automatic

3、启动
分别启动Filebeat和Logstash,刷新页面查看输出

4、日志数据处理
①修改nginx配置文件,指定输出的格式
在这里插入图片描述
②编写nginx-patterns文件

NGINX_ACCESS %{IPORHOST:remote_addr} - %{USERNAME:remote_user} \[% {HTTPDATE:time_local}\] \"%{DATA:request}\" %{INT:status} %{NUMBER:bytes_sent} \"% {DATA:http_referer}\" \"%{DATA:http_user_agent}\"

③修改Logstash d-pipeline.conf文件

input {
    beats {
            port => "5044"
    } 
}
filter {
    grok { 
           patterns_dir => "/haoke/logstash-6.5.4/nginx-patterns"
            match => { "message" => "%{NGINX_ACCESS}"}
            remove_tag => [ "_grokparsefailure" ]
            add_tag => [ "nginx_access" ]
    } 
}
# 控制台输出
# output {
    # stdout { codec => rubydebug } 
# }
# 输出到ES
output {
   elasticsearch {
         hosts => [ "192.168.1.7:9200","192.168.1.7:9201","192.168.1.7:9202" ]    
   } 
}

5、再次启动
分别启动Filebeat和Logstash,刷新页面查看输出(Json格式数据比较清晰)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值