【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)

logstash数据采集

  • 一、前言
    • 一、简介
    • 二、3个主要组成
  • 二、logstash的安装
    • 一、获取安装软件
    • 二、使用方法
  • 三、logstash高级用法
    • 一、定向输出文件
    • 二、定向标准输出到es集群(ELK建立的监控集群)
    • 三、输入插件到es集群——输出日志
    • 四、logstash如何区分设备、文件名、文件的不同版本
    • 五、输入插件到es集群——logstash伪装日志
  • 四、apache服务日志过滤实战
    • 输出grok过滤——统计appache日志

一、前言

一、简介

Logstash是一个开源的服务器端数据处理管道。
1、 logstash拥有200多个插件,能够同时从多个来源采集数据,
转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多
都是 Elasticsearch。)
2、Logstash管道有两个必需的元素,输入和输出,以及一个可选
元素过滤器。
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第1张图片

二、3个主要组成

输入部分
输入:采集各种样式、大小和来源的数据
1、Logstash 支持各种输入选择 ,同时从众多常用来源捕捉事件。
2、 能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第2张图片
过滤部分
过滤器:实时解析和转换数据
1、 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,
识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、
更快速地分析和实现商业价值。

输出部分
输出:选择您的存储库,导出您的数据
1、 尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索
和分析带来无限可能,但它并非唯一选择。
2、Logstash 提供众多输出选择,您可以将数据发送到您要指定的地
方,并且能够灵活地解锁众多下游用例。

三、实验环境
server13:172.25.42.13 (已经部署ELK服务master端)
server14:172.25.42.14 (已经部署ELK服务node端)
server15:172.25.42.15 (已经部署ELK服务node端)
server16:172.25.42.16 (即将部署logstash数据采集服务)
ELK集群服务正常
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第3张图片

二、logstash的安装

这里开启server16(172.25.42.16),单独运行logstash

一、获取安装软件

下载地址:https://elasticsearch.cn/download/
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第4张图片

[root@server16 mnt] rpm -ivh jdk-8u171-linux-x64.rpm
[root@server16 mnt] rpm -ivh logstash-7.6.1.rpm

二、使用方法

[root@server16 mnt] /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'

【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第5张图片

三、logstash高级用法

/etc/logstash/conf.d发布目录
/usr/share/logstash/bin/logstash -f 执行发布目录的xx文件

一、定向输出文件

1、创建命令

[root@server16 conf.d] cd /etc/logstash/conf.d
[root@server16 conf.d] cat test.conf 

/
input {
	stdin {}                                                        显示输入的东西
}

output {
  file {
    path => "/tmp/testfile"                                         指定输出地点
    codec => line { format => "custom format: %{message}"}          定制格式
 }
}
/

[root@server16 conf.d] /usr/share/logstash/bin/logstash -f test.conf  执行命令
[root@server16 conf.d] cat /tmp/testfile 

2、发现文件输出到指定的文件
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第6张图片

二、定向标准输出到es集群(ELK建立的监控集群)

将自己写的东西定向传输到es集群
1、先清除以前es的任务,方便查看效果
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第7张图片
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第8张图片
2、建立文件

[root@server16 conf.d] cd /etc/logstash/conf.d
[root@server16 conf.d] cat es.conf 


input {
	stdin {}
}

output {
	stdout {}

	elasticsearch {
		hosts => ["172.25.42.13:9200"]                输出到ES主机及端口(server13)
		index => "logstash-%{+yyyy.MM.dd}"           定制索引名称
	}
}


[root@server16 conf.d] /usr/share/logstash/bin/logstash -f es.conf  执行命令

【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第9张图片
3、输出和结果
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第10张图片
结果在ELK集群上查看到刚刚输出的信息
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第11张图片
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第12张图片

三、输入插件到es集群——输出日志

1、创建、执行文件

[root@server16 ~] logger "hello world"                                              导入输入到logs
[root@server16 ~] chmod 644 /var/log/messages                             给予权限
[root@server16 ~] ll /var/log/messages                                             查看权限
-rw-r--r--. 1 root root 81793 Aug 14 11:13 /var/log/messages
[root@server16 conf.d] cat es.conf


/ 
input {
	file {
                path => "/var/log/messages"           文件路径
                start_position => "beginning"
        } 
}

output {
	stdout {}

	elasticsearch {
		hosts => ["172.25.42.13:9200"]
		index => "logstash-%{+yyyy.MM.dd}"
	}
}


[root@server16 conf.d] /usr/share/logstash/bin/logstash -f es.conf 

结果
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第13张图片

【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第14张图片
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第15张图片

四、logstash如何区分设备、文件名、文件的不同版本

logstash会把进度保存到sincedb文件中,可用以下命令寻找输出文件保存地址

[root@server16 conf.d] find / -name .sincedb*

有了日志输出后,可以看到输出文件
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第16张图片
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第17张图片
sincedb的解释
sincedb文件一共6个字段

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

五、输入插件到es集群——logstash伪装日志

logstash可以伪装成日志服务器,直接接受远程日志
1、书写日志,查看514端口
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第18张图片

[root@server16 conf.d] cat syslog.conf 
input {
	syslog {
		port => 514
 	}
}

output {
	stdout {}

	elasticsearch {
		hosts => ["172.25.42.13:9200"]
		index => "syslog-%{+yyyy.MM.dd}"      输出的文件目录叫syslog
	}
}

2、更改配置文件
server13,14,15日志接收端
打开514端口,接受日志

[root@server13 elasticsearch] vim /etc/rsyslog.conf

【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第19张图片

【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第20张图片
server13、14、15 systemctl restart rsyslog重启日志服务端
3、执行文件

[root@server16 conf.d]  /usr/share/logstash/bin/logstash -f syslog.conf 

我这里一直执行不出来,等待server16输出的时候在server13再次重启了rsylog服务就好了
4、结果
输出的目录为我们所编写syslog
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第21张图片
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第22张图片

四、apache服务日志过滤实战

输出grok过滤——统计appache日志

1、下载安装apache
server16

[root@server16 conf.d] yum install -y httpd
[root@server16 conf.d] systemctl start httpd
[root@server16 conf.d] cd /var/www/html/
[root@server16 html] echo hhh > index.html
[root@server16 conf.d] chmod 644 /var/log/httpd/access_log
[root@server16 conf.d] ll /var/log/httpd/access_log
-rw-r--r--. 1 root root 1143 Aug 14 22:21 /var/log/httpd/access_log

server13
多次访问server16的地址,生成日志

[root@server13 elasticsearch] curl 172.25.42.16
hhh
[root@server13 elasticsearch] curl 172.25.42.16
hhh
[root@server13 elasticsearch] curl 172.25.42.16
hhh
[root@server13 elasticsearch] curl 172.25.42.16
hhh

2、生成、应用文件

[root@server16 html] cd /etc/logstash/conf.d/
[root@server16 conf.d] ls
apache.conf  es.conf  grok.conf  syslog.conf  test.conf
[root@server16 conf.d] cat apache.conf 

/
input {
	file {
		path => "/var/log/httpd/access_log"
		start_position => "beginning"
	}

}

filter {
	grok {
	match => { "message" => "%{HTTPD_COMBINEDLOG}" }
	}
}

output {
	stdout {}

	elasticsearch {
		hosts => ["172.25.42.13:9200"]
		index => "apachelog1-%{+yyyy.MM.dd}"
	}
	
}
/

结果
【项目实战26】logstash数据采集(上)(Elasticsearch界面监控、日志采集)_第23张图片

你可能感兴趣的:(项目实战,大数据,linux,centos)