编写Logstash的配置文件root_tomcat.conf
4、在/root/logstash_work_dir/config/目录中编写Logstash的配置文件root_tomcat.conf,这是本系统最重要的文件。
-
input {
-
file {
-
path => "/root/tomcat/logs/localhost_access_log*.txt"
-
sincedb_path => "/root/logstash_work_dir/config/sincedb_apache_access_log.txt"
-
type => "apache_access_log"
-
add_field => {"tomcatip" => "10.128.18.61"}
-
}
-
}
-
-
filter{
-
if [type] == "apache_access_log" {
-
grok{
-
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}" }
-
}
-
date{
-
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
-
target => ["writetime"]
-
}
-
mutate {
-
convert => {
-
"response" => "integer"
-
"bytes" => "integer"
-
"responsetime" => "integer"
-
}
-
}
-
}
-
}
-
-
output {
-
if [type] == "apache_access_log" {
-
elasticsearch {
-
hosts => ["10.128.18.74:9200","10.128.18.75:9200","10.128.18.77:9200"]
-
index => "logstash-apacheaccesslog-%{+YYYY.MM.dd}"
-
}
-
}
-
}
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