ELK日志分析系统<2>--logstash文件输出、日志服务器伪装、多行过滤插件、grok过滤插件

一、logstash文件输出

  • logstash在采集数据完成后会把进度保存到sincedb文件中,假如我们选择将数据输出到elastic中,这时如果在elastic中将数据删除,然后用logstash采集同样的数据,这时候只会采集最新更改的信息,而之前重复的信息将不会被采集,这时候就可能造成数据的缺失
  • 因此我们需要采集同样的信息并且把最新的数据也包含进去的话需要先删除对应的sincedb文件,然后再用logstash采集
  • logstash保存进度到sincedb中是为了防止在重启logstash进行采集信息后,造成采集信息冗余

sincedb文件一共6个字段:

  1. inode编号
  2. 文件系统的主要设备号
  3. 文件系统的次要设备号
  4. 文件中的当前字节偏移量
  5. 最后一个活动时间戳(浮点数)
  6. 与此记录匹配的最后一个已知路径

扩展:

  • 考虑这样一种情况,一个分区中有很多空闲空间并且有很多文件,可以更新文件但是无法创建文件,这是什么原因导致的呢?
  • 这时候很可能是正在运行的应用创建了很多空文件导致该分区中的inode号被消耗光了,在一个存储区域中,每个文件必须要有自己对应的inode号,并且一个分区中的inode号数量是有限的,如果inode号被消耗殆尽,则无法创建新的文件。
  • 打个比喻:就像是一个教室中,还有很多空位子,但是每个位子上都放了一本书,小明来教室准备找座位学习,但是有人告诉它,这些位子都已经有人了,小明很无奈,这些明明都是空的,但是没办法,还是只能去别的教室了。这里,教室就相当于分区,书本就相当于文件的inode号,而每个学生相当于真实的文件。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 日志打包机制:系统为了避免产生的日志文件过大会每隔一段时间重新打包一个日志文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二、logstash伪装成日志服务器

  • 我们利用Syslog输入插件,可以将logstash伪装成日志服务器,直接接受远程日志

1.Syslog输入插件的使用

vim /etc/logstash/conf.d/demo.conf
input {
        syslog {
                type => "rsyslog"      %过滤调件,可以根据这个条件来对输入进行过滤,只保存想要的信息
                port => 514		        %日志收集端口(默认的,可以不用添加)
        }
}
output {
        stdout { }
}

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

2.远程日志同步

  • 将server2、server3上的日志远程同步到server1的logstash中
server2,server3:
vim /etc/rsyslog.conf         %配置文件做相关更改 
systemctl restart rsyslog.service 

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

  • 注意:做上面这步的时候要保证server1上的logstash是开启状态
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • server3上做同样的配置即可
    在这里插入图片描述

三、多行过滤插件

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

1.示例

vim /etc/logstash/conf.d/test.conf:
input {
	stdin {
	codec => multiline {            %多行录入
		pattern => "^EOF"           %EOF开头
		negate => true              %是否匹配到,true表示匹配到了
		what => previous            %匹配到了之后要做的事情:previous表示向上合并
		}
	}
}

output {
	stdout {}
}

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

2.作用

  • 在特殊场景下,有些完整信息的输出是多行展示,这时候如果不设置这种向上匹配并合并输出的机制,则会导致采集的信息不完整

这里之所以使用my-es.log作为采集信息示例是因为这个文件中刚好有信息输出是多行的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 改进:
  • 首先查看目标文件信息,总结规律
    在这里插入图片描述
  • 指定匹配规则
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

四、grok过滤插件

  • 使用grok插件我们可以对采集的数据做预处理,过滤我们想要的信息

1.内核参数优化

[root@server1 vm]# cat swappiness 
30
[root@server1 vm]# echo 10 > swappiness       %减少swap的利用率,尽可能的使用物理内存,提高运行速度
[root@server1 vm]# cat swappiness 
10
[root@server1 vm]# pwd
/proc/sys/vm

在这里插入图片描述

2.grok过滤示例

vim /etc/logstash/conf.d/test.conf     %编辑配置文件
input {
	stdin {}
}
filter {
	grok {
	match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
	}
}
output {
	stdout {}
}

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

3.详细示例

1.安装httpd,编辑测试页面

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

2.做负载,产生日志

在这里插入图片描述

3.编辑apache.conf文件,并进行logstash日志采集试验

[root@server1 conf.d]# cat apache.conf 
input {
       file {
              path => "/var/log/httpd/access_log"
              start_position => "beginning"
       }
}

filter{
	grok {
		match => { "message" => "%{HTTPD_COMBINEDLOG}" }      %注意HTTPD_COMBINEDLOG前后不能有空格
	}
}

output {
       
       stdout {}
       elasticsearch {
                hosts => "172.25.0.1:9200"  
                index => "apachelog-%{+YYYY.MM.dd}"  
        }

}

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值