第五章·Logstash深入-日志收集
1.Logstash收集单个日志到文件中
| file模块收集日志 |
不难理解,我们的日志通常都是在日志文件中存储的,所以,当我们在使用INPUT插件时,收集日志,需要使用file模块,从文件中读取日志的内容,那么接下来讲解的是,将日志内容输出到另一个文件中,如此一来,我们可以将日志文件同意目录,方便查找。
注意:Logstash与其他服务不同,收集日志的配置文件需要我们根据实际情况自己去写。
前提:需要Logstash对被收集的日志文件有读的,并且对要写入的文件,有写入的权限。
#进入Logstash配置文件目录下
[root@elkstack03 ~]# cd /etc/logstash/conf.d/
#编辑Logstash收集日志的配置文件
[root@elkstack03 conf.d]# vim message.conf
#输入插件
input {
#文件模块
file {
#日志类型
type => "message-log"
#日志路径
path => "/var/log/messages"
#第一次收集日志从头开始
start_position => "beginning"
}
}
#输出插件
output {
#文件模块
file {
#输出路径
path => "/tmp/message_%{+yyyy.MM.dd}.log"
}
}
#检测语法
[root@elkstack03 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf -t
Configuration OK
结果如下图所示:

#如果语法没有错,那就可以启动Logstash了,去掉-t,加上&即可
[root@elkstack03 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf &
启动成功结果如下:

| 验证收集数据 |
#查看tmp目录下是否生成日志文件
[root@elkstack03 ~]# ll /tmp/
总用量 1
-rw-r--r-- 1 root root 291 3月 30 22:05 message_2019.03.30.log
#查看日志内容(日志中就一条)
[root@elkstack03 ~]# cat /tmp/message_2019.03.30.log
{"path":"/var/log/messages","@timestamp":"2019-03-30T14:05:35.103Z","@version":"1","host":"0.0.0.0","message":"Mar 26 21:23:02 elkstack03 rsyslogd: [origin software=\"rsyslogd\" swVersion=\"5.8.10\" x-pid=\"1073\" x-info=\"http://www.rsyslog.com\"] rsyslogd was HUPed","type":"message-log"}
#往系统日志中写入数据
[root@elkstack03 ~]# echo zls_test_message >> /var/log/messages
#再次查看收集到的日志内容(变成了两条)
[root@elkstack03 ~]# cat /tmp/message_2019.03.30.log
{"path":"/var/log/messages","@timestamp":"2019-03-30T14:05:35.103Z","@version":"1","host":"0.0.0.0","message":"Mar 26 21:23:02 elkstack03 rsyslogd: [origin software=\"rsyslogd\" swVersion=\"5.8.10\" x-pid=\"1073\" x-info=\"http://www.rsyslog.com\"] rsyslogd was HUPed","type":"message-log"}
{"path":"/var/log/messages","@timestamp":"2019-03-30T14:07:37.071Z","@version":"1","host":"0.0.0.0","message":"zls_test_message","type":"message-log"}
开启两个窗口实时查看:
#右边窗口实时查看日志
[root@elkstack03 ~]# tail -f /tmp/message_2019.03.30.log
#左边窗口往系统日志中插入数据
[root@elkstack03 ~]# echo 1 >> /var/log/messages
[root@elkstack03 ~]# echo 2 >> /var/log/messages
[root@elkstack03 ~]# echo 3 >> /var/log/messages
结果如下图所示:

2.Logstash收集多个日志到文件中
#进入Logstash配置文件目录
[root@elkstack03 ~]# cd /etc/logstash/conf.d/
#编辑配置文件
[root@elkstack03 conf.d]# vim system_log.conf
#输入插件
input {
#文件模块
file {
#日志路径
path => "/var/log/messages"
#日志类型
type => "system_log"
#第一次收集从头收集
start_position => "beginning"
#收集日志间隔时间3秒
stat_interval => "3"
}
#文件模块
file {
#日志路径
path => "/var/log/secure"
#日志类型
type => "secure_log"
#第一次收集从头收集
start_position => "beginning"
#收集日志间隔时间3秒
stat_interval => "3"
}
}
#输出插件
output {
#判断如果类型是system_log则输出到指定路径
if [type] == "system_log" {
#文件模块
file {
#日志输出路径
path => "/tmp/message2_%{+yyyy.MM.dd}.log"
}}
#判断如果类型是secure_log则输出到指定路径
if [type] == "secure_log" {
#文件模块
file {
#日志输出路径
path => "/tmp/secure_%{+yyyy.MM.dd}.log"
}}
}
#启动Logstash
[root@elkstack03 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system_log.conf &
| 验证收集数据 |
#查看tmp目录是否有新文件
[root@elkstack03 ~]# ll /tmp/
总用量 12
-rw-r--r-- 1 root root 291 3月 30 22:05 message_2019.03.30.log
-rw-r--r-- 1 root root 294 3月 30 23:00 message2_2019.03.30.log
-rw-r--r-- 1 root root 286 3月 30 23:00 secure_2019.03.30.log
#查看新收集的message日志
[root@elkstack03 ~]# cat /tmp/message2_2019.03.30.log
{"path":"/var/log/messages","@timestamp":"2019-03-30T15:00:05.454Z","@version":"1","host":"0.0.0.0","message":"test_message","type":"message_log"}
#查看新收集的secure日志
[root@elkstack03 ~]# cat /tmp/secure_2019.03.30.log
{"path":"/var/log/secure","@timestamp":"2019-03-30T15:00:24.216Z","@version":"1","host":"0.0.0.0","message":"test_secure","type":"secure_log"}
开启多个窗口实时查看数据:
#中间窗口实时追踪message日志
[root@elkstack03 ~]# tail -f /tmp/message2_2019.03.30.log
#右边窗口实时追踪secure日志
[root@elkstack03 ~]# tail -f /tmp/secure_2019.03.30.log
#往message日志中插入数据
[root@elkstack03 ~]# echo 1 >> /var/log/messages
[root@elkstack03 ~]# echo 2 >> /var/log/messages
[root@elkstack03 ~]# echo 3 >> /var/log/messages
#往secure日志中插入数据
[root@elkstack03 ~]# echo 1 >> /var/log/secure
[root@elkstack03 ~]# echo 2 >> /var/log/secure
[root@elkstack03 ~]# echo 3 >> /var/log/secure

3.Logstash收集多个日志到Elasticsearch中
之前讲到Logstash收集多个日志到文件中,实际上,我们将输出源从文件改到Elasticsearch中即可。
#进入Logstash配置文件目录
[root@elkstack03 ~]# cd /etc/logstash/conf.d/
#编辑配置文件
[root@elkstack03 conf.d]# vim system_es.conf
#输入插件
input {
#文件模块
file {
#日志路径
path => "/var/log/messages"
#日志类型
type => "message_log"
#第一次收集从头收集
start_position => "beginning"
#收集日志间隔时间3秒
stat_interval => "3"
}
#文件模块
file {
#日志路径
path => "/var/log/secure"
#日志类型
type => "secure_log"
#第一次收集从头收集
start_position => "beginning"
#收集日志间隔时间3秒
stat_interval => "3"
}
}
#输出插件
output {
#判断如果类型是system_log则输出到指定路径
if [type] == "message_log" {
#elasticsearch模块
elasticsearch {
#es的ip及端口
hosts => ["10.0.0.51:9200"]
#es的索引名称,也就是日志名称
index => "message_log_%{+YYYY.MM.dd}"
}}
#判断如果类型是secure_log则输出到指定路径
if [type] == "secure_log" {
#es模块
elasticsearch {
#es的ip及端口
hosts => ["10.0.0.51:9200"]
#es的索引名称,也就是日志名称
index => "secure_log_%{+YYYY.MM.dd}"
}}
}
#启动Logstash
[root@elkstack03 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system_es.conf &
启动成功,结果如下:

打开浏览器,访问:http://10.0.0.51:9100 查看是否有新索引添加
如果没有查看到新数据,那么可以往日志文件中插入几条测试数据,再刷新页面即可。
[root@elkstack03 ~]# echo test_message_to_es >> /var/log/messages
[root@elkstack03 ~]# echo test_secure_to_es >> /var/log/secure

在数据浏览中,我们可以查看到message_log_2019.03.30日志的内容,在message中显示刚才插入的数据:test_message_to_es

在数据浏览中,我们可以查看到secure_log_2019.03.30日志的内容,在message中显示刚才插入的数据:test_secure_to_es

第五章·Logstash深入-日志收集的更多相关文章
- ELK(Elasticsearch + Logstash + Kibana) 日志收集
单体应用或微服务的场景下,每个服务部署在不同的服务器上,需要对日志进行集重收集,然后统一查看所以日志. ELK日志收集流程: 1.微服务器上部署Logstash,对日志文件进行数据采集,将采集到的数据 ...
- logstash开源日志收集查询分析系统
http://storysky.blog.51cto.com/628458/1158707/ http://www.logstash.net/ http://blog.sina.com.cn/s/bl ...
- 本地搭建ELK(elasticsearch, logstash, kibana)日志收集系统
环境准备:macos 预先安装brew包管理器 1.安装elasticsearch流程 那么,咱们先去安装java8 接着,咱们继续按照elasticsearch 接着,咱们启动elasticsear ...
- 《码出高效 Java开发手册》第五章 异常与日志
码云: https://gitee.com/forxiaoming/JavaBaseCode/blob/master/EasyCoding/src/exception/index.md 5.2 try ...
- 用ElasticSearch,LogStash,Kibana搭建实时日志收集系统
用ElasticSearch,LogStash,Kibana搭建实时日志收集系统 介绍 这套系统,logstash负责收集处理日志文件内容存储到elasticsearch搜索引擎数据库中.kibana ...
- Elasticsearch + Logstash + Kibana +Redis +Filebeat 单机版日志收集环境搭建
1.前置工作 1.虚拟机环境简介 Linux版本:Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:2 ...
- SpringBoot使用ELK日志收集
本文介绍SpringBoot应用配合ELK进行日志收集. 1.有关ELK 1.1 简介 在之前写过一篇文章介绍ELK日志收集方案,感兴趣的可以去看一看,点击这里-----> <ELK日志分 ...
- ELK之方便的日志收集、搜索、展示工具
大家在做分部署系统开发的时候是不是经常因为查找日志而头疼,因为各服务器各应用都有自己日志,但比较分散,查找起来也比较麻烦,今天就给大家推荐一整套方便的工具ELK,ELK是Elastic公司开发的一整套 ...
- syslog+rsyslog+logstash+elasticsearch+kibana搭建日志收集
最近rancher平台上docker日志收集捣腾挺久的,尤其在配置上,特写下记录 Unix/Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的.syslog是一种标准的协议,分 ...
随机推荐
- Ubuntu开放指定端口
一般情况下,ubuntu安装好的时候,iptables会被安装上,如果没有的话那就安装上吧 安装 在终端输入 sudo apt-get install iptables 添加规则 在终端输入 ipta ...
- memcached源码分析-----item过期失效处理以及LRU爬虫
memcached源码分析-----item过期失效处理以及LRU爬虫,memcached-----item 转载请注明出处:http://blog.csdn.net/luotuo44/article ...
- c# Winform WebBrowser的自动化模拟点击
https://blog.csdn.net/vs920079469vs/article/details/78459025
- Vue常见问题集中
a.VScode保持vue语法高亮的方式: 1.安装插件:vetur.打开VScode,Ctrl + P 然后输入 ext install vetur 然后回车点安装即可. 2.在 VSCode中使用 ...
- Go基础:函数多返回值特性
之前在写Python程序的时候,惊叹于它支持多返回值的特性带来的便利性.在学习Go的时候,发现Go也拥有多返回值的特性. 1.基本用法 创建一个多返回值的方法: func getACar() (bra ...
- SpringBoot默认日志的使用方法及常用配置
SpringBoot默认采用slf4j+logback 的组合形式,但也提供对JUL.log4j2.Logback提供了默认配置. 我们使用IDEA的spring初始化创建一个springboot项目 ...
- [bzoj1776][Usaco2010 Hol]cowpol 奶牛政坛_倍增lca
[Usaco2010 Hol]cowpol 奶牛政坛 题目大意: 数据范围:如题面. 题解: 第一想法是一个复杂度踩标程的算法..... 就是每种政党建一棵虚树,然后对于每棵虚树都暴力求直径就好了,复 ...
- 11.把文本文件的数据导入到Hive表中
先在hive里面创建一个表 create table mydb2.t3(id int,name string,age int) row format delimited fields terminat ...
- FTP文件上传下载
使用Apache Commons Net来实现FTP服务器文件的上传 与 下载 maven配置Jar <!-- https://mvnrepository.com/artifact/common ...
- 【LOJ】#3043. 「ZJOI2019」线段树
LOJ#3043. 「ZJOI2019」线段树 计数转期望的一道好题-- 每个点设两个变量\(p,q\)表示这个点有\(p\)的概率有标记,有\(q\)的概率到祖先的路径上有个标记 被覆盖的点$0.5 ...