设为首页 收藏本站
查看: 1747|回复: 0

[经验分享] Logstash+elasticsearch+elastic+nignx

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-5-26 09:17:18 | 显示全部楼层 |阅读模式
注:本系统使用的是Logstash+elasticsearch+elastic+nignx 进行日志分析、展示


[url=]1环境版本:... 2[/url]
[url=]1.1主机:... 2[/url]
[url=]1.2前提:... 2[/url]
[url=]2 Logstash配置... 2[/url]
[url=]3 Kibana与elasticsearch的启动... 6[/url]
[url=]3.1 elasticsearch. 6[/url]
[url=]3.2 kibana. 7[/url]
[url=]4 Nginx的配置:... 7[/url]




1环境版本:
  • 操作系统:CentOS 7.2.1511
  • 内核:Linux Logs3.10.0-123.9.3.el7.x86_64
  • JDK: 1.8.0_74
  • logstash-2.2.2

功能:对输入日志进行收集、分析,并将其存储供以后使用(如,搜索)。
  • elasticsearch-2.2.0

功能:对logstash分析结果的输入提供进行自定义搜索
  • kibana-4.4.1

功能:连接elasticsearch-2.2.0,提供web界面
  • nginx: 1.9.12

         将 kibana 的端口转发到 80,并定义好访问用的域名。

1.1主机:web1: 10.46.90.80(内网),xx.xx.xx.xx(外网)
logs: 10.46.90.147(内网),xx.xx.xx.xx(外网)

1.2前提:
  • Nfs

在logs搭建好nfs,共享 /opt/logs,挂载到 web1 的 /home/wwwlogs,web1 的 php 日志直接输出到 /home/wwwlogs/*/
logstash 、kibana 、elasticsearch都下载到 /opt/

  • JDK已经安装


  • 安装好nginx


2 Logstash配置
Logstash 可以git下载到本地直接使用,其配置是最主要的,它会对日志进行收集、分析,并将其存储供以后使用(如,搜索)。

logstash 的 shipper.conf 配置文件 grok 筛选都使用 ruby 正则表达式,在此推荐一个guby 正则表达式模拟器http://www.rubular.com/

新建配置文件并配置:
[iyunv@Logs ~]# mkdir /opt/logstash/conf.d
[iyunv@Logs ~]# vi /opt/logstash/conf.d/shipper.conf
input {
       #stdin {
       #}
  #file {
       #path  =>"/opt/logs/*/*_nginx.log"
       #type => "access"
       #codec => json
   #}
   file {
                path  => "/opt/logs/php/admin.etcchebao.com/*.log"
                #path  =>"/opt/logs/php/admin.etcchebao.com/admin.log"
                type => "admin"
                codec => multiline {
                # Grok pattern names are valid!:)
                        pattern => "^\[\d{4}"           #开头匹配[+4个年份字符
                        #pattern =>"^%{TIMESTAMP_ISO8601} "
                        negate => true
                        what => previous
                }
    }

   file {
                path  => "/opt/logs/php/passport.etcchebao.com/*.log"
                #path  =>"/opt/logs/php/passport.etcchebao.com/passport.log"
                type => "passport"
                codec => multiline {
                # Grok pattern names are valid!:)
                        pattern => "^\[\d{4}"           #开头匹配[+4个年份字符
                        #pattern =>"^%{TIMESTAMP_ISO8601} "
                        negate => true
                        what => previous
                }
    }

   file {
                path  => "/opt/logs/php/push.etcchebao.com/*.log"
                #path  =>"/opt/logs/php/push.etcchebao.com/push.log"
                type => "push"
                codec => multiline {
                # Grok pattern names are valid!:)
                        pattern =>"^\[\d{4}"           #开头匹配[+4个年份字符
                        #pattern =>"^%{TIMESTAMP_ISO8601} "
                        negate => true
                        what => previous
                }
    }

   file {
                path  => "/opt/logs/php/seller.etcchebao.com/*.log"
                #path  =>"/opt/logs/php/seller.etcchebao.com/seller.log"
                type => "seller"
                codec => multiline {
                # Grok pattern names are valid!:)
                        pattern =>"^\[\d{4}"           #开头匹配[+4个年份字符
                        #pattern =>"^%{TIMESTAMP_ISO8601} "
                        negate => true
                        what => previous
                }
    }

   file {
                path  => "/opt/logs/php/m.etcchebao.com/*.log"
                #path  =>"/opt/logs/php/m.etcchebao.com/m.log"
                type => "m"
                codec => multiline {
                # Grok pattern names are valid!:)
                        pattern =>"^\[\d{4}"           #开头匹配[+4个年份字符
                        #pattern =>"^%{TIMESTAMP_ISO8601} "
                        negate => true
                        what => previous
                }
    }

   file {
                path  => "/opt/logs/php/pay.etcchebao.com/*.log"
                #path  =>"/opt/logs/php/pay.etcchebao.com/pay.log"
                type => "pay"
                codec => multiline {
                # Grok pattern names are valid!:)
                        pattern =>"^\[\d{4}"           #开头匹配[+4个年份字符
                        #pattern =>"^%{TIMESTAMP_ISO8601} "
                        negate => true
                        what => previous
                }
    }
}

filter {
#      if [type] == "access" {
#               grok {
#                       match => {"message" => "%{COMBINEDAPACHELOG}" }
#               }
#               date {
#                       match => ["timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
#               }
#      }
       grok {
                match => [
                        #404错误
                        "message","\:(?<Error_class>\d{3}?)\]",
                        #Error错误
                        "message","\[(?<Error_class>\Error?)\]",
                        #500错误
                        "message","系统(?<Error_class>\d{3}?)错误\.*ERROR_NO:(?<err_no>[0-9]*$?).*ERROR_STR:(?<err_str>.*$?)\\.*ERROR_LINE:(?<err_line>[0-9]*$?).*ERROR_FILE:(?<err_file>\\.*$?)\\n"
                ]
       }
}

#输出到redis
#output {
#   redis {
#       host => "127.0.0.1"
#       port => "6379"
#      type => "nginx-log"
#       data_type => "list"
#       key => "logstash"
#   }
#}

#输出到elasticsearch
output {
   elasticsearch {
       #hosts => ["127.0.0.1:9300"]
       hosts => "127.0.0.1"
       index => "logstash-%{type}-%{+YYYY.MM.dd}"
       document_type => "%{type}"
       #workers => 1
       #flush_size => 20000
       #idle_flush_time => 10
       #template_overwrite => true
    }
#  if [Error_class] != "404" {
#   exec {
#                       #command => "echo'%{timestamp}:%{message}' | mail -s 'Log_error: HttpException error'yunwei@etcchebao.com"
#                       command => "echo'%{timestamp}:%{message}' | mail -s 'Log_error: HttpException [HttpException]'yunwei@etcchebao.com"
#      }
#   }
}

output{
   if[Error_class] != "404" {
   exec {
                        #command =>"echo '%{timestamp}:%{message}' | mail -s 'Log_error: HttpException error'yunwei@etcchebao.com"
                        command =>"echo '%{timestamp}:%{message}' | mail -s 'Log_error: HttpException[HttpException]' yunwei@etcchebao.com"
       }
    }
}

#屏幕输出-test
output {
       stdout {
                codec => rubydebug
       }
}

Logstash的启动
[iyunv@Logs ~]# nohup/opt/logstash/bin/logstash -f /opt/logstash/conf.d/shipper.conf > /dev/null2>&1 &
检查启动情况:
QQ截图20160526091610.jpg

3 Kibana与elasticsearch 的启动kibana 与 elasticsearch 都无需安装,只要下载到本地即可直接使用,最好先启动logstash。要注意的是,但默认不允许使用 root帐号启动,所以使用专门运行nginx的www用户启动。
3.1 elasticsearch[www@Logs ~]$ nohup/opt/elasticsearch-2.2.0/bin/elasticsearch > /dev/null 2>&1 &
[www@Logs ~]$ ps -elf|grep elasticsearch
检查进程:
QQ截图20160526091617.jpg
检查端口:
QQ截图20160526091625.jpg

3.2 kibana[www@Logs ~]$ nohup /opt/kibana/bin/kibana> /dev/null 2>&1 &
[www@Logs ~]$ ps -elf|grep kibana
检查进程:
QQ截图20160526091633.jpg

检查端口:
QQ截图20160526091641.jpg

4 Nginx的配置:[www@Logs ~]$ vi/usr/local/nginx/conf/vhost/logs.etcchebao.cn.conf
server {
   listen 80;
   server_name logs.etcchebao.cn;

    location/ {
       auth_basic "secret";
       auth_basic_user_file /usr/local/nginx/logs_etcchebao.passwd;
       proxy_pass http://127.0.0.1:5601;
    }
}


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-221954-1-1.html 上篇帖子: logstash grok使用案例 下篇帖子: Linux下开源实时日志分析elk部署详解 elastic
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表