首页 > 系统管理 > 日志系统 > logstash add_field的使用
2016
01-28

logstash add_field的使用

前言

  在上一篇我们写了ELK的安装配置,在安装之后我们看到所有的日志都会被集中的收集并展示出来,那么问题来了,我们该怎么区分它们呢?举个简单的例子,比如我有web集群和api集群,他们的日志都被收集到elasticsearch中并被web展示出来,那么我们怎么区分哪些日志是来自web哪些是来自api呢,下面我们围绕这个问题来配置一下。

一、环境描述

192.168.1.12 ELK服务端+API

192.168.1.27 WEB

二、ELK+API服务的配置

这里我们假设API就是Nginx

参考上篇文章 http://tshare365.com/archives/2344.html

2.1、配置并启动服务

[root@localhost ELK]# ls
conf  elasticsearch-2.1.1.rpm  kibana-4.3.1-linux-x64  kibana-4.3.1-linux-x64.tar.gz  logstash-2.1.1  logstash-2.1.1.tar.gz
[root@localhost ELK]# pwd
/root/ELK
[root@localhost ELK]# cat conf/client.conf 
input {
    file {
    add_field => {"Local_Host" => "API"}
    type => "nginx_access"
    path => ["/var/log/nginx/access.log"]
    codec => json {
	charset => "UTF-8"
}
    }
  }
output {
        redis {
                host => "127.0.0.1"
                data_type => "list"
                key => "logstash:redis"
        }
}
[root@localhost ELK]# cat conf/server.conf 
input {
   redis {
    host => '127.0.0.1'
    data_type => 'list'
    port => "6379"
    key => 'logstash:redis'
    type => 'redis-input'
       }
       }
output {
	elasticsearch {
        hosts => ["localhost:9200"]

 }

#记得修改redis的监听地址为0.0.0.0
[root@localhost ELK]# /etc/init.d/redis start
[root@localhost ELK]# /etc/init.d/elasticsearch start
[root@localhost ELK]# /etc/init.d/nginx start

[root@localhost ELK]# nohup ./logstash-2.1.1/bin/logstash -f conf/server.conf &
[1] 1619
[root@localhost ELK]# nohup ./logstash-2.1.1/bin/logstash -f conf/client.conf  &
[2] 1648
[root@localhost ELK]# nohup ./kibana-4.3.1-linux-x64/bin/kibana &

2.2、检查服务是否启动正常

[root@localhost conf]# ps -ef | grep java
495       1480     1  4 15:02 ?        00:00:35 /usr/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/share/elasticsearch -cp /usr/share/elasticsearch/lib/elasticsearch-2.1.1.jar:/usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start -p /var/run/elasticsearch/elasticsearch.pid -d -Des.default.path.home=/usr/share/elasticsearch -Des.default.path.logs=/var/log/elasticsearch -Des.default.path.data=/var/lib/elasticsearch -Des.default.path.conf=/etc/elasticsearch
root      1619  1423  6 15:08 pts/0    00:00:31 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xss2048k -Djffi.boot.library.path=/root/ELK/logstash-2.1.1/vendor/jruby/lib/jni -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/ELK/logstash-2.1.1/heapdump.hprof -Xbootclasspath/a:/root/ELK/logstash-2.1.1/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/root/ELK/logstash-2.1.1/vendor/jruby -Djruby.lib=/root/ELK/logstash-2.1.1/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /root/ELK/logstash-2.1.1/lib/bootstrap/environment.rb logstash/runner.rb agent -f conf/server.conf
root      1648  1423  5 15:08 pts/0    00:00:28 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xss2048k -Djffi.boot.library.path=/root/ELK/logstash-2.1.1/vendor/jruby/lib/jni -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/ELK/logstash-2.1.1/heapdump.hprof -Xbootclasspath/a:/root/ELK/logstash-2.1.1/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/root/ELK/logstash-2.1.1/vendor/jruby -Djruby.lib=/root/ELK/logstash-2.1.1/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /root/ELK/logstash-2.1.1/lib/bootstrap/environment.rb logstash/runner.rb agent -f conf/client.conf
root      1807  1423  0 15:16 pts/0    00:00:00 grep java

三、WEB服务配置

这里我们同样是使用nginx,我们来区分两个nginx的日志

3.1、准备环境

yum install  java-1.7.0-openjdk nginx
[root@localhost WEB]# java -version
java version "1.7.0_95"
OpenJDK Runtime Environment (rhel-2.6.4.0.el6_7-x86_64 u95-b00)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
[root@localhost WEB]#/etc/init.d/nginx start

3.2、配置logstash并启动agent

[root@localhost WEB]# pwd
/root/WEB
[root@localhost WEB]# cat client.conf 
input {
    file {
    add_field => {"Local_Host" => "web"}
    type => "nginx_access"
    path => ["/var/log/nginx/access.log"]
    }
  }
output {
        redis {
                host => "192.168.1.12"
                data_type => "list"
                key => "logstash:redis"
        }
}
[root@localhost WEB]# ./logstash-2.1.1/bin/logstash -f client.conf 
Settings: Default filter workers: 1
Logstash startup completed

四、WEB页面展示

4.1、api和web混乱显示

blob.png

4.2、只是显示api日志

blob.png

4.3、只显示web日志

blob.png

总结

  我们通过这一章可以看到我们在client.conf中添加了add_field字段来区分来自不同的主机,这样就方便我们来查询了,本章内容到此结束了,希望大家继续支持Tshare365.




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复