ELK之nginx日志的简单收集

来源:互联网 发布:底盘弹簧增高垫淘宝 编辑:程序博客网 时间:2024/05/17 01:53

在上一篇文章部署好了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 &      后台启动

可以看到如下图显示内容:
启动logstash

或者

ps -ef | grep java

启动情况

3)此时可以先手动访问nginx页面,访问日志数据在增加,则logstash会把数据推送给ES,然后直接在kibana上查看如下图:
kibana界面

  • 加入redis消息队列提高速度收集nginx日志
    1)118服上部署好redis服务并开启
[root@log-nginx elktest]# ps -ef | grep redisroot      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 6379tcp        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

logstash运行情况

5)此时查看web界面如下
kibana界面

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

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

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

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

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

2)在图形左边一列,可以选择要显示的内容
显示设置一栏
显示结果

3)若显示如下图所示内容,则可能是本身没有数据过来,或者是服务器之间的时间不同步。
这里写图片描述

原创粉丝点击