ELK------(二)Logstash的部署

1 logstash简介

Elasticsearch是当前主流的分布式大数据存储和搜索引擎,可以为用户提供强大的全文本检索能力,广泛应用于日志检索,全站搜索等领域。Logstash作为Elasicsearch常用的实时数据采集引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源,是Elastic Stack 的重要组成部分。

1.1 Logstash的原理

Logstash的数据处理过程主要包括:Inputs, Filters, Outputs 三部分, 另外在Inputs和Outputs中可以使用Codecs对数据格式进行处理。这四个部分均以插件形式存在,用户通过定义pipeline配置文件,设置需要使用的input,filter,output, codec插件,以实现特定的数据采集,数据处理,数据输出等功能

(1)Inputs:用于从数据源获取数据,常见的插件如file, syslog, redis, beats 等
(2)Filters:用于处理数据如格式转换,数据派生等,常见的插件如grok, mutate, drop, clone, geoip等[详细参考]
(3)Outputs:用于数据输出,常见的插件如elastcisearch,file, graphite, statsd等
(4)Codecs:Codecs不是一个单独的流程,而是在输入和输出等插件中用于数据转换的模块,用于对数据进行编码处理,常见的插件如json,multiline

在这里插入图片描述ogstash 的主要优势:在支持各类插件的前提下提供统一的管道进行日志处理( input-filter-output )

1.2 执行模型

  1. 每个Input启动一个线程,从对应数据源获取数据
  2. Input会将数据写入一个队列:默认为内存中的有界队列(意外停止会导致数据丢失)。为了防止数丢失Logstash提供了两个特性:
    Persistent Queues: 通过磁盘上的queue来防止数据丢失
    Dead Letter Queues: 保存无法处理的event(仅支持Elasticsearch作为输出源)
  3. Logstash会有多个pipeline worker, 每一个pipeline
    worker会从队列中取一批数据,然后执行filter和output(worker数目及每次处理的数据量均由配置确定)

2 logstash的部署

(1)安装jdk的环境:rpm -ivh jdk-8u181-linux-x64.rpm

(2)安装logstash:rpm -ivh logstash-7.6.1.rpm

(3)设置环境变量

vim .bash_profile

在这里插入图片描述

  • 使修改立刻生效:source .bash_profile

在这里插入图片描述

3 标准输入和标准输出

使用Logstash管道来测试一下安装的Logstash。Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。输入插件从数据源那里消费数据,过滤器插件根据你的期望修改数据,输出插件将数据写入目的地。
在这里插入图片描述

(1)Logstash最基本的管道(命令方式)

logstash -e 'input { stdin {}  }  output { stdout{} } '
# -e 允许从命令行指定配置

在这里插入图片描述
(2)Logstash的管道(通过文件的方式)

  • 监听文件变化,记录一个叫.sincedb的数据库文件来跟踪被监听的日志文件的当前读取位
vim /etc/logstash/conf.d/test.conf
bash
input {
   stdin {}
}
output {
   stdout {}
}
logstash -f /etc/logstash/conf.d/test.conf

在这里插入图片描述

(3)标准输出到文件

vim /etc/logstash/conf.d/test.conf
input {
   stdin {}
}
output {
   stdout {}
   file {
     path => "/mnt/testfile"
     codec => line { format => "custom format : %{message}" }

  }
}
logstash -f /etc/logstash/conf.d/test.conf

在这里插入图片描述

  • 测试:cat /mnt/testfile

在这里插入图片描述
(4)标准输入到文件

vim /etc/logstash/conf.d/test.conf
input {
   file {
   path => "/mnt/testfile"
   start_position => "beginning"
  }
}
output {
   stdout {}
 #  file {
 #    path => "/mnt/testfile" 
 #    codec => line { format => "custom format : %{message}" }  

 # }
}
logstash -f /etc/logstash/conf.d/test.conf

在这里插入图片描述

vim   /etc/logstash/conf.d/test.conf 
input {
   file {
   path => "/var/log/messages"
   start_position => "beginning"
  }
}
output {
   stdout {}
 #  file {
 #    path => "/mnt/testfile" 
 #    codec => line { format => "custom format : %{message}" }  

 # }
   elasticsearch{
       hosts =>["172.25.12.1:9200"]
       index => "syslog-%{+yyyy.MM.dd}"
  }
}
 logstash -f /etc/logstash/conf.d/test.conf 

在这里插入图片描述

在这里插入图片描述在这里插入图片描述server3和server4开放远程

  • 编辑配置文件:vim /etc/rsyslog.conf

在这里插入图片描述

  • 重启服务:systemctl restart rsyslog.service
  • 编辑配置文件:vim /etc/logstash/conf.d/test.conf
input
 {
 #  file {
 #  path => "/var/log/messages"
 #  start_position => "beginning"
 #  }
   syslog {} ## 收集日志信息,默认监听514端口
}
output {
   stdout {}
 #  file {
 #    path => "/mnt/testfile" 
 #    codec => line { format => "custom format : %{message}" }  

 # }
   elasticsearch{
       hosts =>["172.25.12.1:9200"]  ## 主机
       index => "messages-%{+yyyy.MM.dd}"
  }
}

logstash -f /etc/logstash/conf.d/test.conf
在这里插入图片描述

3.1 多行过滤插件

多行过滤可以把多行日志记录合并为一行事件

编辑文件:vim /etc/logstash/conf.d/mutli.conf

input {
	file {
        path=> "/var/log/my-es.log"
        start_position => "beginning"
	codec => multiline {
		pattern => "^\["
		negate => true
		what => previous
		}
	}
}

output {
	# stdout {}
       elasticsearch{
       hosts =>["172.25.12.1:9200"]
       index => "my-es-%{+yyyy.MM.dd}"
  }

}

执行:logstash -f /etc/logstash/conf.d/mutli.conf

在这里插入图片描述

在这里插入图片描述

3.2 grok过滤插件(将信息分开显示)

server5:安装apache服务

压测:ab -c1 -n 100 http://172.25.12.5/index.html

编辑文件:/etc/logstash/conf.d/apache.conf

input {
   file {
   path => "/var/log/httpd/access_log"
   start_position => "beginning"
   }
  # syslog {}
}
output {
   stdout {}
 #  file {
 #    path => "/mnt/testfile" 
 #    codec => line { format => "custom format : %{message}" }  

 # }
   elasticsearch{
       hosts =>["172.25.12.1:9200"]
       index => "apache-%{+yyyy.MM.dd}"
  }
}

执行:logstash -f /etc/logstash/conf.d/apache.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除日志文件
在这里插入图片描述
编辑文件:/etc/logstash/conf.d/apache.conf

input {
   file {
   path => "/var/log/httpd/access_log"
   start_position => "beginning"
   }
  # syslog {}
}
filter {
   grok {
      match => { "message" => "%{HTTPD_COMBINEDLOG}" }
   }
}
output {
   stdout {}
 #  file {
 #    path => "/mnt/testfile" 
 #    codec => line { format => "custom format : %{message}" }  

 # }
   elasticsearch{
       hosts =>["172.25.12.1:9200"]
       index => "apache-%{+yyyy.MM.dd}"
  }
}

执行: logstash -f /etc/logstash/conf.d/apache.conf
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值