编写Logstash的配置文件root_tomcat.conf

4、在/root/logstash_work_dir/config/目录中编写Logstash的配置文件root_tomcat.conf,这是本系统最重要的文件。

  1.  
    input {
  2.  
    file {
  3.  
    path => "/root/tomcat/logs/localhost_access_log*.txt"
  4.  
    sincedb_path => "/root/logstash_work_dir/config/sincedb_apache_access_log.txt"
  5.  
    type => "apache_access_log"
  6.  
    add_field => {"tomcatip" => "10.128.18.61"}
  7.  
    }
  8.  
    }
  9.  
     
  10.  
    filter{
  11.  
    if [type] == "apache_access_log" {
  12.  
    grok{
  13.  
    match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{URIPATHPARAM:request}(?: HTTP/%{NUMBER:httpversion})?|-)\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{NUMBER:responsetime} \"(?:%{URI:referrer}|-)\" %{QS:agent}" }
  14.  
    }
  15.  
    date{
  16.  
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  17.  
    target => ["writetime"]
  18.  
    }
  19.  
    mutate {
  20.  
    convert => {
  21.  
    "response" => "integer"
  22.  
    "bytes" => "integer"
  23.  
    "responsetime" => "integer"
  24.  
    }
  25.  
    }
  26.  
    }
  27.  
    }
  28.  
     
  29.  
    output {
  30.  
    if [type] == "apache_access_log" {
  31.  
    elasticsearch {
  32.  
    hosts => ["10.128.18.74:9200","10.128.18.75:9200","10.128.18.77:9200"]
  33.  
    index => "logstash-apacheaccesslog-%{+YYYY.MM.dd}"
  34.  
    }
  35.  
    }
  36.  
    }

Logstash的配置文件包括input、filter和output三部分。

input部分,使用了file插件。path指定了Logstash扫描的文件,每当有文件变化时,Logstash会读取文件尾部新增的数据;sincedb_path用于存储上一次文件读取的位置信息,如果这个文件不存在,则会从日志文件首部获取所有数据;type用于对这个配置插件做标识,当一个配置文件中有多个数据收集任务时尤其有用;add_field用于标识本机的ip地址,当数据存储在Elasticsearch后,用于区分来自哪一个Tomcat服务器。

filter插件,使用了grok、date和mutate三个插件。

grok插件用于解析Tomcat的访问日志,logstash自带了COMBINEDAPACHELOG等多个配置模式,但由于我使用了自定义的Tomcat日志配置,这里也自己编写;

date部分用于从日志中提取时间戳信息;

mutate中用convert将response、byte和responsetime三个解析得到的字符串转化为整数integer类型,这个步骤对于后续的分析比较重要,因为这样可以在Elasticsearch中做数值比较运算,比如按照响应时间responsetime排序,找出访问最慢的请求。

output插件,使用了elasticsearch插件,其中hosts指定了Elasticsearch集群的地址,本例子中指定了三个实例;index指定了数据存储在Elasticsearch中的索引名字,以logstash作为开头是因为Logstash自带的针对ELasticsearch的mapping映射中,对于所有的字符串类型都附带设置了一个raw不做解析的设置,这样便于在Elasticsearch中做底层的文本检索。


5、设置chkconfig的启动命令

chkconfig --add logstash

6、启动Logstash服务

service logstash start

 

转载于:https://my.oschina.net/u/2242064/blog/684313

posted on   四海骄阳  阅读(95)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具
历史上的今天:
2020-05-08 硬件维修以及电子电路
2020-05-08 查找日志
2020-05-08 电源符号:VCC、VDD、VEE、VSS、VBAT各表示什么意思?
2019-05-08 3322动态域名怎样设置?
2019-05-08 DDNS是动态域名解析的意思
2019-05-08 路由设置中"DHCP服务器"启用或不启用是干嘛的?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多