ELK之nginx日志的简单收集

在上一篇文章部署好了ELK环境,接下来进行nginx日志的收集

环境
192.168.2.112 jdk/elasticsearch/kibana CentOS release 6.5
192.168.2.118 jdk/logstash/nginx CentOS release 6.3 (Final)

  • nginx日志收集
    1)进入logstash的etc目录下,创建文件nginxlog.conf并添加如下内容
input {
    file {
        path => "/usr/local/nginx/logs/access.log"
        type => "nginx"
    }
}
output {
    elasticsearch {
        hosts => "192.168.2.112:9200"
    }
}

path指向日志存储路径

2)然后启动logstash

[root@log-nginx etc]# ../bin/logstash -f nginxlog.conf
# nohup /usr/local/logstash/bin/logstash -f nginxlog.conf &>/dev/null &      后台启动

可以看到如下图显示内容:
ELK之nginx日志的简单收集_第1张图片

或者

ps -ef | grep java

ELK之nginx日志的简单收集_第2张图片

3)此时可以先手动访问nginx页面,访问日志数据在增加,则logstash会把数据推送给ES,然后直接在kibana上查看如下图:
ELK之nginx日志的简单收集_第3张图片

  • 加入redis消息队列提高速度收集nginx日志
    1)118服上部署好redis服务并开启
[root@log-nginx elktest]# ps -ef | grep redis
root      4841     1  0 22:12 pts/1    00:00:00 /usr/local/redis/bin/redis-server *:6379                     
root      4850  1499  0 22:13 pts/1    00:00:00 grep redis
[root@log-nginx elktest]# netstat -tunl | grep 6379
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      
tcp        0      0 :::6379                     :::*                        LISTEN

2)在logstash的etc目录下建立文件agentnginx.conf并添加如下内容

input {
   file {
       type => "nginx-access"
       path => "/usr/local/nginx/logs/access.log"
   }
}
output {
    redis {
        host => "localhost"
        port => 6379
        data_type => "list"
        key => "logstash"
    }
}

把nginx日志数据推送到redis

3)在logstash的etc目录下建立文件indexnginx.conf并添加如下内容

input {
  redis {
    host => "localhost"
    port => "6379"
    data_type => "list"
    key => "logstash"
    type => "redis-input"
    batch_count => 1
  }
}
output {
  elasticsearch {
    hosts => "192.168.2.112"
  }
}

4)启动logstash

nohup /usr/local/logstash/bin/logstash -f agentnginx.conf &>/dev/null &
nohup /usr/local/logstash/bin/logstash -f indexnginx.conf &>/dev/null &
ps -ef | grep java

ELK之nginx日志的简单收集_第4张图片

5)此时查看web界面如下
ELK之nginx日志的简单收集_第5张图片

至此nginx日志的简单收集功能完成。

若需要收集其他服务或系统的日志,操作方法与上述类似

如果需要批量收集多台服务器的日志数据,可以通过shell脚本或借助ansible/saltstack等工具把配置好的logstash目录同步到其他的服务器

例如上述的nginx日志收集,配置好了logstash里的agent.conf和index.conf后,直接把logstash目录同步到其他服务器对应的路径,然后修改conf文件里redis的ip即可(若本机有也可以不用修改)

备注:
1)可以点击右上角的时间按钮,然后点击auto-refresh,可以设置自动刷新时间

2)在图形左边一列,可以选择要显示的内容
ELK之nginx日志的简单收集_第6张图片
ELK之nginx日志的简单收集_第7张图片

3)若显示如下图所示内容,则可能是本身没有数据过来,或者是服务器之间的时间不同步。
ELK之nginx日志的简单收集_第8张图片

你可能感兴趣的:(linux服务,ELK)