文档章节

Logstash用法实例

shawnplaying
 shawnplaying
发布于 2016/03/17 17:54
字数 785
阅读 371
收藏 1

首先提供一些参考的网站:

https://www.gitbook.com/book/chenryn/kibana-guide-cn

http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html

https://www.gitbook.com/book/chenryn/kibana-guide-cn
http://www.learnes.net/index.html

下面由简单到复杂,介绍一些Logstash的配置方法

安装完Logstash后,默认安装在/opt/logstash中,在bin目录中有一些命令可以使用。

最简单的配置语法:

input {
    stdin {}
    syslog {}
}

Logstash的Helloworld:

[root@BLELOIST003 logstash]# bin/logstash -e 'input{stdin{}}output{stdout{}}'
!!! Please upgrade your java version, the current version '1.7.0_45-mockbuild_2013_10_22_03_37-b00' may cause problems. We recommend a minimum version of 1.7.0_51
Settings: Default pipeline workers: 8
Logstash startup completed
hello world
2016-03-17T03:30:02.147Z BLELOIST003.lenovo.com hello world
[root@BLELOIST003 logstash]#
[root@BLELOIST003 logstash]# bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
!!! Please upgrade your java version, the current version '1.7.0_45-mockbuild_2013_10_22_03_37-b00' may cause problems. We recommend a minimum version of 1.7.0_51
Settings: Default pipeline workers: 8
Logstash startup completed
hello world
{
       "message" => "hello world",
      "@version" => "1",
    "@timestamp" => "2016-03-17T03:31:30.308Z",
          "host" => "BLELOIST003.lenovo.com"
}

最基本的配置组成是input output,可选的是filter。input中的stdin和output中的stdout代表了命令行窗口的输入输出。

监控apache日志,这里没有做过滤。

[root@BLELOIST003 logstash]# bin/logstash -e '
 input {
   file { 
     type => "apache-access" 
     path => "/apphome/ptc/Windchill_10.2/HTTPServer/logs/access.log*" 
     start_position => end 
     sincedb_path => "/dev/null"
   }
 }
 filter{
   
 }
 output {
   stdout{ codec=>rubydebug }
 }'
!!! Please upgrade your java version, the current version '1.7.0_45-mockbuild_2013_10_22_03_37-b00' may cause problems. We recommend a minimum version of 1.7.0_51
Settings: Default pipeline workers: 8
Logstash startup completed
{
       "message" => "10.100.90.241 - - [17/Mar/2016:11:35:00 +0800] \"GET / HTTP/1.1\" 304 - 411",
      "@version" => "1",
    "@timestamp" => "2016-03-17T03:35:01.162Z",
          "path" => "/apphome/ptc/Windchill_10.2/HTTPServer/logs/access.log_2016-03-17_00_00_00",
          "host" => "BLELOIST003.lenovo.com",
          "type" => "apache-access"
}
{
       "message" => "10.99.80.8 - dummy002 [17/Mar/2016:11:35:01 +0800] \"POST /LOIS/servlet/SEOTranslationService HTTP/1.0\" 200 90360 503291",
      "@version" => "1",
    "@timestamp" => "2016-03-17T03:35:03.178Z",
          "path" => "/apphome/ptc/Windchill_10.2/HTTPServer/logs/access.log_2016-03-17_00_00_00",
          "host" => "BLELOIST003.lenovo.com",
          "type" => "apache-access"
}

start_position => end 代表了只监控新增加的日志内容。

加上正则表达式的过滤:

[root@BLELOIST003 logstash]# bin/logstash -e '
 input {
   file { 
     type => "apache-access" 
     path => "/apphome/ptc/Windchill_10.2/HTTPServer/logs/access.log*" 
     start_position => end 
     sincedb_path => "/dev/null"
   }
 }
 filter{
   if [path] =~ "access" {
     mutate { replace => { "type" => "ApacheLogs" } }
     grok {
       match => { "message" => "%{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:userName} \[%{HTTPDATE:logTime}\] \"%{WORD:verb} %{NOTSPACE:request} (?:%{NOTSPACE:httpversion}|)\" (?:%{NUMBER:state}|-) (?:%{NUMBER:bytes}|-) %{NUMBER:duration}"}
     }
   }
   date {
     match => [ "logTime" , "dd/MMM/yyyy:HH:mm:ss Z" ]
   }
 }
 output {
   stdout{ codec=>rubydebug }
 }'

Settings: Default pipeline workers: 8
Logstash startup completed
{
        "message" => "10.100.90.241 - - [17/Mar/2016:12:05:27 +0800] \"GET /Windchill/ HTTP/1.1\" 404 208 424",
       "@version" => "1",
     "@timestamp" => "2016-03-17T04:05:27.000Z",
           "path" => "/apphome/ptc/Windchill_10.2/HTTPServer/logs/access.log_2016-03-17_00_00_00",
           "host" => "BLELOIST003.lenovo.com",
           "type" => "ApacheLogs",
       "clientip" => "10.100.90.241",
          "ident" => "-",
       "userName" => "-",
        "logTime" => "17/Mar/2016:12:05:27 +0800",
           "verb" => "GET",
        "request" => "/Windchill/",
    "httpversion" => "HTTP/1.1",
          "state" => "404",
          "bytes" => "208",
       "duration" => "424"
}
{
        "message" => "10.100.90.241 - - [17/Mar/2016:12:05:27 +0800] \"GET /favicon.ico HTTP/1.1\" 200 207 476",
       "@version" => "1",
     "@timestamp" => "2016-03-17T04:05:27.000Z",
           "path" => "/apphome/ptc/Windchill_10.2/HTTPServer/logs/access.log_2016-03-17_00_00_00",
           "host" => "BLELOIST003.lenovo.com",
           "type" => "ApacheLogs",
       "clientip" => "10.100.90.241",
          "ident" => "-",
       "userName" => "-",
        "logTime" => "17/Mar/2016:12:05:27 +0800",
           "verb" => "GET",
        "request" => "/favicon.ico",
    "httpversion" => "HTTP/1.1",
          "state" => "200",
          "bytes" => "207",
       "duration" => "476"
}

这里的if [path] =~ "access"代表了判断语句,可以参考这里:

http://kibana.logstash.es/content/logstash/get_start/full_config.html

这里的过滤中grok中匹配:

match => { "message" => "%{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:userName} \[%{HTTPDATE:logTime}\] \"%{WORD:verb} %{NOTSPACE:request} (?:%{NOTSPACE:httpversion}|)\" (?:%{NUMBER:state}|-) (?:%{NUMBER:bytes}|-) %{NUMBER:duration}"}

其中%{IPORHOST:clientip}表示具体的正则匹配,IPORHOST代表了logstash的pattern,具体可以参考如下链接,而clientip则代表了在logstash中信息传递的变量。

https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns


© 著作权归作者所有

上一篇: ElasticSearch初探
下一篇: Redis 初探
shawnplaying
粉丝 15
博文 128
码字总数 70642
作品 0
海淀
系统管理员
私信 提问
从 ELK 到 EFK 演进

背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)...

顶风走千里
2017/12/19
0
0
从ELK到EFK演进

背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)...

6776jkjk
2017/11/08
0
0
Logstash5.4.1解析日志报错处理

下载最新的logstash5.4.1打开把之前的配置文件加入进去,启动logstash提示报错了,未使用geoip插件的配置文件正常启动。按照提示发现是maxmind的数据库解析出错,重新至maxmind(http://geol...

rong341233
2017/06/08
0
0
logstash通过kafka传输nginx日志

logstash通过kafka传输nginx日志(三)   单个进程 logstash 可以实现对数据的读取、解析和输出处理。但是在生产环境中,从每台应用服务器运行 logstash 进程并将数据直接发送到 Elastics...

yixinsiyu
2018/08/27
133
0
安装logstash及logstash的初步使用-处理DNS日志

安装logstash 查询java信息 rpm -qa | grep java 查询yum源内含有的所有java的安装包 yum -y list java* 选择需要的版本 yum install java-xxx-openjdk.x86_64 安装完成后,验证版本 java -...

进击的大佬
2018/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Centos7 安装zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm 可以到https://repo.zabbix.com/zabbix找到对应的版本 yum install zabbix-agent -y 出现E......

abowu
昨天
8
0
文本编辑器GNU nano 4.4 发布

GNU nano 4.4 "Hagelslag" 更新日志: 启动时,光标可以放在第一个或最后一个出现位置 字符串前面带有+/string 或 +?string的字符串。 发生自动硬包装时((--breaklonglines),任何前导引号...

linuxCool
昨天
7
0
你知道字节序吗

字节序 最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 背景 自定义报文,调用接口,服务端报文解析失败 iO...

杭城小刘
昨天
3
0
设计模式之依赖倒置原则

方法

东风破2019
昨天
6
0
关于如何通过模拟器完成模拟步数提升傻瓜式解决方案(囧)

因为对Android开发不太了解,也没去问朋友所以误打误撞找到的一个提升步数的解决方案,当然只是针对某安APP运动RUN的解决方式吧。 对Android不太了解,所以找了很多的解决方案来看看能不能破...

华山猛男
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部