1. input{http{port=>7474}}
  2. filter{
  3. grok{
  4. match =>{
  5. #"message" => "%{COMBINEDAPACHELOG}"
  6. "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:[@metadata][timestamp]}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}'
  7. }
  8. }
  9. # mutate{
  10. # copy => { "@timestamp" => "read_timestamp"}
  11. # }
  12. ruby {
  13. code => "event.set('@read_timestamp',event.get('@timestamp'))"
  14. }
  15. # 20/May/2015:21:05:15 +0000
  16. #date{
  17. # match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
  18. #}
  19. date{
  20. match => ["[@metadata][timestamp]","dd/MMM/yyyy:HH:mm:ss Z"]
  21. }
  22. geoip{
  23. source => "clientip"
  24. fields => ["latitude","longitude","city_name","country_name","region_name"]
  25. }
  26. useragent{
  27. source => "agent"
  28. target => "useragent"
  29. }
  30. mutate{
  31. convert => { "bytes" => "integer" }
  32. }
  33. mutate{
  34. remove_field =>["headers","message"]
  35. }
  36. }
  37. output{stdout{codec=>rubydebug}}

apache_logstash.conf

  1. input {
  2. stdin { }
  3. }
  4. filter {
  5. grok {
  6. match => {
  7. "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}'
  8. }
  9. }
  10. date {
  11. match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
  12. locale => en
  13. }
  14. geoip {
  15. source => "clientip"
  16. }
  17. useragent {
  18. source => "agent"
  19. target => "useragent"
  20. }
  21. }
  22. output {
  23. stdout {
  24. codec => dots {}
  25. }
  26. elasticsearch {
  27. index => "apache_elastic_example"
  28. template => "./apache_template.json"
  29. template_name => "apache_elastic_example"
  30. template_overwrite => true
  31. }
  32. }
  1. input{
  2. #http{
  3. # port => 7474
  4. #}
  5. stdin{}
  6. # file{
  7. # path => "/Users/rockybean/Downloads/es/6.1/logstash-6.1.1/demo_data/apache_logs/apache_logs"
  8. # start_position => "beginning"
  9. # }
  10. }
  11. filter{
  12. #mutate{add_field => {"[@metadata][debug]"=>true}}
  13. grok{
  14. match => {
  15. "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:[@metadata][timestamp]}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}'
  16. }
  17. }
  18. ruby{
  19. code => "event.set('@read_timestamp',event.get('@timestamp'))"
  20. }
  21. # 20/May/2015:21:05:56 +0000
  22. date{
  23. match => ["[@metadata][timestamp]","dd/MMM/yyyy:HH:mm:ss Z"]
  24. }
  25. mutate{
  26. convert => {"bytes" => "integer"}
  27. }
  28. geoip{
  29. source => "clientip"
  30. fields => ["location","country_name","city_name","region_name"]
  31. }
  32. useragent{
  33. source => "agent"
  34. target => "useragent"
  35. }
  36. mutate{remove_field=>["headers"]}
  37. mutate{
  38. add_field=>{
  39. "[@metadata][index]" => "apache_logs_%{+YYYY.MM}"
  40. }
  41. }
  42. if "_grokparsefailure" in [tags] {
  43. mutate{
  44. replace=>{
  45. "[@metadata][index]" => "apache_logs_failure_%{+YYYY.MM}"
  46. }
  47. }
  48. }else{
  49. mutate{remove_field=>["message"]}
  50. }
  51. }
  52. output{
  53. if [@metadata][debug]{
  54. stdout{codec=>rubydebug{metadata=>true}}
  55. }else{
  56. stdout{codec=>dots}
  57. elasticsearch{
  58. index => "%{[@metadata][index]}"
  59. document_type => "doc"
  60. }
  61. }
  62. }

两份简单的logstash配置的更多相关文章

  1. Filebeat与Logstash配置SSL加密通信

    为了保证应用日志数据的传输安全,我们可以使用SSL相互身份验证来保护Filebeat和Logstash之间的连接. 这可以确保Filebeat仅将加密数据发送到受信任的Logstash服务器,并确保L ...

  2. LogStash配置、使用(三)

    LogStash配置 官方文档:https://www.elastic.co/guide/en/logstash/current/index.html 查看yum安装路径 rpm -ql logsta ...

  3. logstash 配置 logstash-forwarder (前名称:lumberjack)

    logstash-forwarder(曾名lumberjack)是一个用go语言写的日志发送端, 主要是为一些机器性能不足,有性能强迫症的患者准备的. 主要功能: 通过配置的信任关系,把被监控机器的日 ...

  4. 一个简单的零配置命令行HTTP服务器

    http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...

  5. 一个简单的零配置命令行HTTP服务器 - http-server (nodeJs)

    http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...

  6. 简单几步配置gitlab

    简单几步配置gitlab 之前配置gitlab需要很多步骤,要装apache2.ruby.tomcat.mysql等一片东西.有没有更简单的方式呢?现在可以借助bitnami,简化了很多. 可以参考v ...

  7. Spring简单的文件配置

    Spring简单的文件配置 “计应134(实验班) 凌豪” 一.Spring文件配置 spring至关重要的一环就是装配,即配置文件的编写,接下来我按刚才实际过程中一步步简单讲解. 首先,要在web. ...

  8. Redhat 简单本地yum 配置

    Redhat 简单本地yum 配置 一.将redhat 系统的镜像挂载到系统上 Vmware Workstion 环境下: [虚拟机设置]--[硬件]--[CD/DVD]--[使用ISO映像文件]-- ...

  9. Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块

    文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...

随机推荐

  1. .net core 杂记:WebAPI的XML请求和响应

    一般情况下,restfult api  进行数据返回或模型绑定,默认json格式会比较常见和方便,当然偶尔也会需要以XML格式的要求 对于返回XML,普通常见的方式就是在每个aciton方法进行诸如X ...

  2. C# Redis分布式锁(基于ServiceStack.Redis)

    相关的文章其实不少,我也从中受益不少,但是还是想自己梳理一下,毕竟自己写的更走心! 首先给出一个拓展类,通过拓展方法实现加锁和解锁. 注:之所以增加拓展方法,是因为合理使用拓展类(方法),可以让程序更 ...

  3. 用Python玩数据-笔记整理-第一章

    第一个程序:print >>>print("Hallo World!") >>>Hallo World! mystring = "Ha ...

  4. Python多进程与多线程编程及GIL详解

    介绍如何使用python的multiprocess和threading模块进行多线程和多进程编程. Python的多进程编程与multiprocess模块 python的多进程编程主要依靠multip ...

  5. Java 客户端负载均衡

    客户端侧负载均衡 在下图中,负载均衡能力算法是由内容中心提供,内容中心相对于用户中心来说,是用户中心的客户端,所以又被称为客户端侧负载均衡 自定义实现Client Random负载均衡 获取所有的服务 ...

  6. 洛谷P3905 道路重建

    题目:https://www.luogu.org/problemnew/show/P3905 分析: 此题是显然的最短路算法,只是看到一起删掉的一堆边感到十分棘手,而且还要求出的是最短添加边的总长度 ...

  7. 记一次java.lang.NoClassDefFoundError异常

    前阵子做了个评论过滤敏感词的功能,本地测试没有任何问题,然后就部署到线上服务器,通知相关人员线上测试.大约过了十来天,那货和我说接口出问题了,当时一脸懵逼,用了十来天突然出问题了???好吧,出问题了咱 ...

  8. [AOP拦截 ]SpringBoot+Quartz Aop拦截Job类中的方法

    ​ 最近在工作使用boot+quartz整合,开发定时调度平台,遇到需要对Quartz的Job进行异常后将异常记录到日志表的操作,第一反应就想到了使用Spring的AOP,利用AfterThrowin ...

  9. [leetcode] 11. Container With Most Water (medium)

    原题链接 以Y坐标长度作为木桶边界,以X坐标差为桶底,找出可装多少水. 思路: 前后遍历. Runtime: 5 ms, faster than 95.28% of Java class Soluti ...

  10. Atom实用插件

    下载atom狠戳本链接 中文简体插件(工具栏,右键菜单,设置菜单) simplified-chinese-menu 代码格式化插件(支持多种语言) atom-beautify 智能补全资源路径插件 a ...