博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安装logstash5.4.1,并使用grok表达式收集nginx日志
阅读量:4945 次
发布时间:2019-06-11

本文共 3183 字,大约阅读时间需要 10 分钟。

关于收集日志的方式,最简单性能最好的应该是修改nginx的日志存储格式为json,然后直接采集就可以了。

但是实际上会有一个问题,就是如果你之前有很多旧的日志需要全部导入elk上查看,这时就有两个问题,一是原始日志不是json格式,二是原始日志的时间戳不能识别,如果时间不处理,导入之后所有日志的时间戳将全部是导入时间。

下面说一下用grok的方式导入原始日志,当然你也可以直接使用这种方式收集nginx日志,这种方式可以保留nginx的原始日志格式。

1、在官网下载rpm包或者按照guide设置官方repo,安装logstash

# yum install -y logstash-5.4.1.rpm

2、导出环境变量

# vim /etc/bashrcexport PATH=$PATH:/usr/share/logstash/bin

3、安装 logstash-filter-date 插件,这个date插件用来读取原始日志的时间,并存到ES的@timestamp字段

# logstash-plugin install logstash-filter-date

4、添加一个nginx的pattern

# rpm -ql logstash | grep patterns# cd /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.0/patterns/# ll-rw-rw-r-- 1 logstash logstash  1831 May 30 00:41 aws-rw-rw-r-- 1 logstash logstash  4831 May 30 00:41 bacula-rw-rw-r-- 1 logstash logstash   260 May 30 00:41 bind-rw-rw-r-- 1 logstash logstash  2154 May 30 00:41 bro-rw-rw-r-- 1 logstash logstash   879 May 30 00:41 exim-rw-rw-r-- 1 logstash logstash 10095 May 30 00:41 firewalls-rw-rw-r-- 1 logstash logstash  5335 May 30 00:41 grok-patterns-rw-rw-r-- 1 logstash logstash  3251 May 30 00:41 haproxy-rw-rw-r-- 1 logstash logstash   980 May 30 00:41 httpd-rw-rw-r-- 1 logstash logstash  1265 May 30 00:41 java-rw-rw-r-- 1 logstash logstash  1087 May 30 00:41 junos-rw-rw-r-- 1 logstash logstash  1037 May 30 00:41 linux-syslog-rw-rw-r-- 1 logstash logstash    74 May 30 00:41 maven-rw-rw-r-- 1 logstash logstash    49 May 30 00:41 mcollective-rw-rw-r-- 1 logstash logstash   190 May 30 00:41 mcollective-patterns-rw-rw-r-- 1 logstash logstash   614 May 30 00:41 mongodb-rw-rw-r-- 1 logstash logstash  9597 May 30 00:41 nagios-rw-r--r-- 1 logstash logstash   312 Jun 23 17:47 nginx-rw-rw-r-- 1 logstash logstash   142 May 30 00:41 postgresql-rw-rw-r-- 1 logstash logstash   845 May 30 00:41 rails-rw-rw-r-- 1 logstash logstash   224 May 30 00:41 redis-rw-rw-r-- 1 logstash logstash   188 May 30 00:41 ruby-rw-rw-r-- 1 logstash logstash   404 May 30 00:41 squid

logstash安装包自带了一些应用的pattern示例,但是没有nginx的,上面那个是我加上去的。

这是我针对我自己的线上日志格式调试好的grok表达式:

NGINXACCESS %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" "%{DATA:request_body}" %{INT:status} %{INT:body_bytes_sent} "%{DATA:referer}" "%{DATA:agent}" %{DATA:xforwardedfor} %{NUMBER:request_time}  %{NUMBER:upstream_response_time}

这里有一个调试网站:https://grokdebug.herokuapp.com/

1005945-20170624174211882-2045979919.png

5、添加一个logstash配置

# vim /etc/logstash/conf.d/nginx_access.confinput {    file {        path => ["/var/log/nginx/www.opgirl.cn.access.log"]        start_position => "beginning"        ignore_older => 0    }}filter {    grok {        match => { "message" => "%{NGINXACCESS}" }    }    date {      match => [ "timestamp","dd/MMM/yyyy:HH:mm:ss Z"]      target => "@timestamp"    }    mutate {      remove_field => "timestamp"    }}output {    elasticsearch {        hosts => ["192.168.3.56:9200","192.168.3.49:9200","192.168.3.57:9200"]        index => "logstash-nginx-access-%{+YYYY.MM.dd}"    }    #stdout {codec => rubydebug}}

6、启动logstash

# nohup logstash -f /etc/logstash/conf.d/nginx_acces.conf &

7、添加到kibana查看,这时看到的就是日志本身的生成时间,而不是导入ES的时间

1005945-20170624175356945-1940239456.png

转载于:https://www.cnblogs.com/keithtt/p/7074002.html

你可能感兴趣的文章
JNI和NDK编程
查看>>
spring boot+mybatis搭建项目
查看>>
PHP Cookies
查看>>
点击放大图片预览
查看>>
最大熵原理
查看>>
Maven最佳实践:划分模块
查看>>
内容样式
查看>>
JAVA从局域网共享文件夹中下载上传文件以及java访问共享文件夹
查看>>
DAY19 面向对象三大特性之多态、封装
查看>>
管理信息系统的开发与管理
查看>>
JMeter的学习笔记(一):JMeter的入门使用
查看>>
jap页面获取struts2中action中变量的值
查看>>
Notes on <<Refactoring Databases - Evolutionary Database Design>>
查看>>
使用MyBatis Generator自动创建代码( SSM框架)
查看>>
检验两个随机序列的beta系数
查看>>
node-webkit教程(10)Platform Service之File dialogs
查看>>
《计算机组成与体系结构:性能设计》读后小记 5、内部存储器
查看>>
3 基础语法
查看>>
字符串知识储备
查看>>
unity之截屏功能
查看>>