【个人技术经验及开发技巧分享】 【个人技术经验及开发技巧分享】
首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载

Louis

首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载
  • 开发杂货

  • 线上排查

  • 技巧备忘

  • 部署指南

    • Nginx安装
    • Nginx Https证书安装
    • ElasticSearch安装
    • Kibana安装
    • SkyWalking链路追踪
    • Zookeeper安装
    • RabbitMQ安装
    • Kafka集群搭建
    • Kafka Manager安装
    • MySQL安装
    • Canal数据同步
    • Redis高可用集群搭建
    • XXL-JOB本地部署
    • ELk+Filebeat部署
      • 0 前言
      • 1 Logstash
        • 1.1 简介
        • 1.2 安装
        • 1.3 配置
        • 1.4 启动
      • 2 FileBeat
        • 2.1 简介
        • 2.2 工作原理
        • 2.3 安装
        • 2.4 配置
        • 2.5 启动
    • Nacos源码本地运行
  • 技术应用
  • 部署指南
luoxiaofeng
2022-06-05
目录

ELk+Filebeat部署

# 0 前言

Logstash依赖于JVM,在启动的时候大家也很容易就能发现它的启动速度很慢很慢,但logstash的好处是支持很多类型的插件,支持对数据做预处理。 而Filebeat很轻量,前身叫 logstash-forward ,是使用 Golang 开发的,所以不需要有java依赖,也很轻量,占用资源很小,但功能也很少,不支持对数据做预处理。 因此一般都是将 filebeat + logstash 组合使用,在每个节点部署filbeat,然后将监控的日志推送到数据缓冲层或直接推送到logstash集群内。

FileBeat和Logstash配合,实现背压机制。

image-20220607180133872

# 1 Logstash

# 1.1 简介

Logstash是一个开源的数据采集引擎。它可以动态地将不同来源的数据统一采集,并按照指定的数据格式进行处理后,将数据加载到其他的目的地。最开始,Logstash主要是针对日志采集,但后来Logstash开发了大量丰富的插件,所以,它可以做更多的海量数据的采集。

它可以处理各种类型的日志数据,例如: Apache的web log 、Java的 log4j 日志数据,或者是系统、网络、防火墙的日志等等。它也可以很容易的和Elastic Stack的 Beats 组件整合,也可以很方便的和 关系型数据库 、 NoSQL数据库 、 MQ 等整合。

经典架构

image-20220607180541440

# 1.2 安装

安装Logstash只需要将Logstash压缩包解压到系统就可以。

Logstash官方下载地址

https://www.elastic.co/cn/downloads/past-releases/logstash-7-6-1

tar -xvzf logstash-7.6.1.tar.gz -C /louis
1

# 1.3 配置

cp logstash-sample.conf logstash-filebeat2es.conf

vi logstash-filebeat2es.conf
1
2
3
input {
   #从filebeat取数据,端口与filebeat配置文件一致
   beats {
     host => "0.0.0.0"
     port => 5044
   }
}
filter {
    #只对nginx的json日志做json解析,系统message为其他格式,无需处理
    if [filetype] == "log_nginxjson"{
      json {
         source => "message"
         remove_field => ["beat","offset","tags","prospector"] #移除字段,不需要采集
      }
      date {
        match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] #匹配timestamp字段
        target => "@timestamp"  #将匹配到的数据写到@timestamp字段中
      }
  }
}

output {
       # 输出es,这的filetype就是在filebeat那边新增的自定义字段名
       if [filetype] == "log_nginxjson" {
         elasticsearch {
            hosts => ["localhost:9200"]
            index => "nginx-%{+YYYY.MM.dd}"
        }
       } else if [filetype] == "log_system" {
         elasticsearch {
            hosts => ["localhost:9200"]
            index => "msg-%{+YYYY.MM.dd}"
        }
       }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 1.4 启动

启动Logstash之前先启动ElasticSearch。

cd /louis/logstash-7.6.1

bin/logstash -f config/logstash-filebeat2es.conf
1
2
3

# 2 FileBeat

# 2.1 简介

FileBeat专门用于转发和收集日志数据的轻量级采集工具。它可以为作为代理安装在服务器上,FileBeat监视指定路径的日志文件,收集日志数据,并将收集到的日志转发到Elasticsearch或者Logstash。

# 2.2 工作原理

启动FileBeat时,会启动一个或者多个输入 (Input) ,这些Input监控指定的日志数据位置。FileBeat会针对每一个文件启动一个 Harvester(收割机) 。 Harvester 读取每一个文件的日志,将新的日志发送到libbeat,libbeat将数据收集到一起,并将数据发送给输出 (Output) 。

image-20220607162351158

# 2.3 安装

安装FileBeat只需要将FileBeat压缩包解压到系统就可以。

FileBeat官方下载地址

https://www.elastic.co/cn/downloads/past-releases/filebeat-7-6-1

tar -xvzf filebeat-7.6.1-linux-x86_64.tar.gz -C /louis

cd /louis

mv filebeat-7.6.1-linux-x86_64/ filebeat-7.6.1
1
2
3
4
5

# 2.4 配置

FileBeats配置文件主要分为两个部分。 input 和 output 。一个是用来输入数据的,一个是用来输出数据的。

cd /louis/filebeat-7.6.1

cat filebeat.yml
1
2
3
filebeat.inputs:
- type: log
  enabled: false
  paths:
    - /var/log/*.log
1
2
3
4
5
image-20220607174227916
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  #username: "elastic"
  #password: "changeme"

#----------------------------- Logstash output --------------------------------
#output.logstash:
  # The Logstash hosts
  #hosts: ["localhost:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
image-20220607174640527

FileBeats配置

cp filebeat.yml filebeat-2logstash.yml

vi filebeat-2logstash.yml
1
2
3

同时监控 nginx 的 access 日志以及系统的 messages 日志,并且分别新增一个字段 filetype(自定义的) 来做区分,输出到localhost的5044端口,由 logstash 消费:

filebeat.inputs:
- type: log
  enabled: true
  backoff: "1s"
  tail_files: false
  paths:
    - /usr/local/nginx/logs/access.log
  fields:
    filetype: log_nginxjson
  fields_under_root: true
- type: log
  enabled: true
  backoff: "1s"
  tail_files: false
  paths:
    - /var/log/messages
  fields:
    filetype: log_system
  fields_under_root: true
output.logstash:
  enabled: true
  hosts: ["localhost:5044"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 2.5 启动

先启动 logstash ,不然的话 filebeat 会找不到 logstash 的5044端口。

cd /louis/filebeat-7.6.1

./filebeat -e -c filebeat-2logstash.yml 
1
2
3

查看es,发现已新增索引nginx-年月日。

image-20220607202935693

XXL-JOB本地部署
Nacos源码本地运行

← XXL-JOB本地部署 Nacos源码本地运行→

最近更新
01
SpringBoot
10-21
02
Spring
10-20
03
Sentinel
10-14
更多文章>
Copyright © 2022-2023 Louis | 粤ICP备2022060093号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式