`
corejava2008
  • 浏览: 296563 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

3.Logstash 入门教程 -配置案例

阅读更多

3.Logstash 入门教程 -配置案例

介绍一个详细案例,讲述如何配置读取Apache日志,Syslog并根据自定义条件进行过滤和输出。

 

手工输入并解析数据

LS中可以通过Filter针对数据进行切片切块等操作,解析,装换,组装等等。。

input { stdin { } } #控制台输入

filter {
  grok { #通过GROK来自动解析APACHE日志格式
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {#通过Date过滤器来自动识别日期格式。
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch { host => localhost } #输出到ES中。
  stdout { codec => rubydebug } #输出到控制台
}

启动LS:bin/logstash -f logstash-filter.conf

并在控制台输入:

127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"

 可以看到输出结果为:

{
        "message" => "127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"",
     "@timestamp" => "2013-12-11T08:01:45.000Z",
       "@version" => "1",
           "host" => "cadenza",
       "clientip" => "127.0.0.1",
          "ident" => "-",
           "auth" => "-",
      "timestamp" => "11/Dec/2013:00:01:45 -0800",
           "verb" => "GET",
        "request" => "/xampp/status.php",
    "httpversion" => "1.1",
       "response" => "200",
          "bytes" => "3891",
       "referrer" => "\"http://cadenza/xampp/navi.php\"",
          "agent" => "\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\""
}

 看到结果了吧,完成了两个操作

1.LS使用grok自动解析了日志格式,

2.针对timestamp进行Date格式识别,并复制给了@timestamp字段。

 

再进一步,从文件中输入并解析数据

input {
  file { #通过Input配置,从文件中读取数据。
    path => "/tmp/access_log"  #日志文件位置
    start_position => "beginning" 
	#是否从头部开始读取。
	#Logstash启动后,会在系统中记录一个隐藏文件,记录处理过的行号,
	#当进行挂掉,重新启动后,根据该行号记录续读。
	#所以start_position只会生效一次。
  }
}

filter {
  if [path] =~ "access" {#当路径包含access时,才会执行以下处理逻辑
    mutate { replace => { "type" => "apache_access" } }
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
  }else if [path] =~ "error" { #IF-ElSE 配置方式。
    mutate { replace => { type => "apache_error" } }
	#使用Mutate 替换type的值为“apache_error”
  } else {
    mutate { replace => { type => "random_logs" } }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch {
    host => localhost
  }
  stdout { codec => rubydebug }
}

 

再来看个案例:

output {
  if [type] == "apache" {
    if [status] =~ /^5\d\d/ { #如果status状态为5xx,发送给nagios。
      nagios { ...  }
    } else if [status] =~ /^4\d\d/ {#如果是4xx,发送到elasticSearch
      elasticsearch { ... }
    }
    statsd { increment => "apache.%{status}" } #所有数据给statsd
  }
}

 处理SysLog案例:

处理SysLog案例:
input {
  tcp {
    port => 5000   #读取TCP端口
    type => syslog #数据类型
  }
  udp {
    port => 5000   #读取UDP端口
    type => syslog #数据类型
  }
}

filter {
  if [type] == "syslog" {
    grok { #解析日志格式。
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ] #添加字段 
      add_field => [ "received_from", "%{host}" ]     #添加字段
    }
    syslog_pri { }
    date {  #日期格式处理,这里匹配了两种不同的日期格式。
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

output { #数据输出。
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}

 

启动服务:

bin/logstash -f logstash-syslog.conf

发送测试数据:

telnet localhost 5000
Dec 23 12:11:43 louis postfix/smtpd[31499]: connect from unknown[95.75.93.154]
Dec 23 14:42:56 louis named[16000]: client 199.48.164.7#64817: query (cache) 'amsterdamboothuren.com/MX/IN' denied
Dec 23 14:30:01 louis CRON[619]: (www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log)
Dec 22 18:28:06 louis rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="2253" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.

 查看结果:

{
                 "message" => "Dec 23 14:30:01 louis CRON[619]: (www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log)",
              "@timestamp" => "2013-12-23T22:30:01.000Z",
                "@version" => "1",
                    "type" => "syslog",
                    "host" => "0:0:0:0:0:0:0:1:52617",
        "syslog_timestamp" => "Dec 23 14:30:01",
         "syslog_hostname" => "louis",
          "syslog_program" => "CRON",
              "syslog_pid" => "619",
          "syslog_message" => "(www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log)",
             "received_at" => "2013-12-23 22:49:22 UTC",
           "received_from" => "0:0:0:0:0:0:0:1:52617",
    "syslog_severity_code" => 5,
    "syslog_facility_code" => 1,
         "syslog_facility" => "user-level",
         "syslog_severity" => "notice"
}

 

1
0
分享到:
评论

相关推荐

    《黑基VIP中级提高班》(PHP学习1-13)

    #### 3. PHP基本语法 - **变量声明**:使用`$`符号声明变量,无需指定数据类型。 - **控制结构**:包括if语句、switch语句、循环语句(for、while等)。 - **函数定义**:使用`function`关键字定义函数,支持递归...

    elk中文指南1

    《ELK中文指南1》是关于Logstash、Elasticsearch和Kibana(ELK stack)的入门教程,旨在帮助用户理解和使用这个强大的日志管理和分析工具。 **1. Logstash** Logstash是一款用于处理和收集事件及日志的工具。它的...

    ELK-guide-cn.pdf

    - 提供不同场景下Logstash的使用案例。 扩展方案: - 介绍通过Redis、Kafka、Logstash-forwarder、rsyslog、nxlog等传输方式扩展Logstash的使用。 Kibana Kibana是ELK stack中的可视化工具,允许用户通过图形界面...

    一个关于上传elasticsearch数据库下载、配置、使用入门

    ### Elasticsearch 数据库上传、配置与使用入门 #### 一、Elasticsearch 概述 Elasticsearch 是一款基于 Lucene 的高性能搜索引擎,它不仅提供了强大的全文检索能力,还支持分布式和多租户特性,适用于大规模的...

    源码-spring cloud 微服务 入门、实战与进阶.zip

    《源码-spring cloud 微服务 入门、实战与进阶》是一个涵盖Spring Cloud微服务框架的深度学习资源包,旨在帮助开发者从基础到高级全面掌握Spring Cloud的相关技术。这个压缩包的核心内容是名为"spring-cloud-master...

    ELK6最新ElasticSearch 6(ELK 6)实战视频教程

    本教程旨在通过实战案例,详细介绍如何利用ELK 6搭建高效稳定的数据分析平台。 #### Elasticsearch 6简介 Elasticsearch是一款基于Lucene的开源搜索引擎,它提供了分布式索引和搜索能力,能够支持PB级别的数据量。...

    DevOps完整版入门到项目实战视频教程(72个视频).zip.zip

    3. **自动化构建**: Jenkins是流行的持续集成工具,教程将教你如何设置Jenkins环境,创建和配置构建任务,实现自动化的构建和测试过程。 4. **持续部署**:学习使用Docker和Kubernetes进行容器化和集群管理。...

    ElasticStack(ELK)从入门到实践.pdf

    以上内容构成了Elastic Stack的入门与实践的详细知识点,涵盖安装、配置、操作、案例分析等多个方面。学习和掌握这些知识点,有助于更好地利用Elastic Stack进行日志和数据的搜索、分析和可视化工作。

    filebeat-6.2.1-linux-x86_64.tar.gz

    在本案例中,我们讨论的是 Filebeat 的 6.2.1 版本,专为 Linux x86_64 架构设计的。这个版本的软件通常以 `.tar.gz` 归档文件的形式分发,便于用户下载和安装。 `.tar.gz` 文件是一种常见的Linux/Unix压缩格式,它...

    SwooleDistributed 3.X 文档最新完整版

    《SwooleDistributed 3.X》文档是针对SwooleDistributed框架的最新全面指南,涵盖了从基础知识到高级应用的方方面面。SwooleDistributed是基于Swoole扩展构建的分布式系统框架,旨在帮助开发者高效地构建高性能、高...

    Nginx高性能WEB服务器系列(超级详细)

    Nginx 防盗链配置案例配置 防盗链是指防止他人非法盗用站点资源的技术手段。 - **配置示例**: ```nginx location ~ \.(jpg|jpeg|gif|png|css|js)$ { valid_referers none blocked server_names; if ($...

    Elastic Stack 技术指南

    接着,详细介绍了Logstash的配置语法,包括如何安装plugin,保证其长期稳定运行,以及如何配置input、codec、filter等关键组件。这里重点提到了各种input插件,如collectd、file、stdin、syslog、tcp、json、...

    微服务学习开发案例.zip

    在"微服务学习开发案例.zip"这个压缩包中,包含了三份2019年的教材,分别是“技术实务教材”、“综合能力教材”和“案例分析教材”。这些教材可能是为了帮助初学者系统地了解和掌握微服务相关的技术和实践。下面将...

    DevOps入门实战手册.doc.zip

    《DevOps入门实战手册》可能还包括了案例研究,展示真实世界中的DevOps实践,帮助读者理解如何在不同场景下应用这些概念和技术。通过阅读这份手册,初学者可以系统地了解DevOps的全貌,并开始在自己的工作中实施...

    Elastic Stack从入门到实践 project

    《Elastic Stack从入门到实践项目》是一份深入学习Elastic Stack的宝贵资源,它包含了丰富的实践案例和代码示例,旨在帮助初学者快速掌握这一强大的数据搜索、分析和可视化平台。Elastic Stack,通常由Elasticsearch...

    elk stack中文教程

    这个详尽的ELK Stack中文教程适合初学者和有一定经验的开发者,无论是为了快速入门还是深入研究,都是极好的参考资料。通过阅读和实践,你可以掌握这套强大的日志管理和分析工具,提升数据洞察力和问题解决能力。

    ELk知识详解.zip

    6. **实战案例**:"ELK收集应用系统日志实战案例.pptx"可能包含具体的实施步骤和技巧,如如何配置Logstash来处理特定类型的日志,如何优化Elasticsearch集群的性能,以及如何使用Kibana创建实用的可视化界面。...

    ELK5.6 入门

    ELK 5.6的入门涉及多个方面,包括环境设置、ELK组件安装与配置、日志处理、可视化以及API操作等。首先,环境设置是任何系统部署的基础,涉及系统网卡命名、关闭安全限制、时间同步、主机名设定等步骤,这些都是为了...

    CSDN大数据方面的学习视频

    - 包括如何安装配置ELK Stack环境、如何使用Logstash进行日志数据的收集与解析等。 - 学习者可以通过实际案例来深入理解ELK Stack在日志管理和数据分析中的强大功能。 #### 7. **Redis 高级应用** - **课程链接*...

Global site tag (gtag.js) - Google Analytics