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

[经验分享] ELKStack实时分析Haproxy访问日志配置

[复制链接]

尚未签到

发表于 2019-1-1 15:27:22 | 显示全部楼层 |阅读模式
  1.Haproxy配置日志规则

  在/etc/haproxy/haproxy.conf的frontend下增加
option httplog
option logasap
log LogServerIP local5
capture request header Host len 40
capture request header X-Forwarded-For len 50
#capture request header Accept-Language len 50
capture request header Referer len 200
capture request header User-Agent len 200  2.syslog配置开启远程接收
  3.Logstash配置
  indexer

input {
        file {
                path => "/var/log/haproxy.log"
                start_position => beginning
                sincedb_write_interval => 0
                type => "HAPROXY_LOG"
                codec => plain {
                        charset => "ISO-8859-1"
                }
        }
}

output {
        #stdout { codec => rubydebug}
        redis {
                data_type => "list"
                key => "logstash:Haproxy_log"
                host => "192.168.1.2"
                port => 6379
        }
}  shipping
  在logstash配置文件目录下新建patterns目录,并在这个目录下新建一个haproxy的文件
  vim /usr/local/logstash2.2.2/conf/patterns/haproxy
HAPROXYTIME (?! "list"
        key => "logstash:Haproxy_log"
        host => "192.168.1.2"
        port => 6379
        threads => 5
    type => "HAPROXY_LOG"
    }
}
filter {
       grok{
    patterns_dir => "./patterns"
          match => ["message" , "%{SYSLOGTIMESTAMP:Syslog_Timestamp} %{IPORHOST:Syslog_Server} %{SYSLOGPROG}: %{IP:Client_IP}:%{INT:Client_Port} \[%{HAPROXYDATE:Accept_Date}\] %{NOTSPACE:Frontend_Name} %{NOTSPACE:Backend_Name}/%{NOTSPACE:Server_Name} %{INT:Time_Request}/%{INT:Time_Queue}/%{INT:Time_Backend_Connect}/%{INT:Time_Backend_Response}/\+%{NOTSPACE:Time_Duration} %{INT:Http_Status_Code} \+%{NOTSPACE:Bytes_Read} %{DATA:Captured_Request_Cookie} %{DATA:Captured_Response_Cookie} %{NOTSPACE:Termination_State} %{INT:Actconn}/%{INT:Feconn}/%{INT:Beconn}/%{INT:Srvconn}/%{NOTSPACE:Retries} %{INT:Srv_Queue}/%{INT:Backend_Queue} (\{%{IPORHOST:Site}\|?((%{IP:X_Forward_IP}|)(, |)(%{IP:X_Forward_IP2}|)(, |)(%{IP:X_Forward_IP3|)(%{DATA:X_Forward_Other}|))?\|?(%{URI:Http_Referer})?\|%{GREEDYDATA:User_Agent}\})?( )( )?\"(|(%{WORD:Http_Method} (%{URIPROTO:Http_Proto}://)?(?:%{USER:Http_User}(?::[^@]*)?@)?(?:%{URIHOST:Http_Host})?(?:%{URIPATHPARAM:Http_Request})?( HTTP/%{NUMBER:Http_Version})?))?\""]
      }
    useragent {
        source => "User_Agent"
        target => "ua"
    }
    if [X_Forward_IP] =~ "." {
       geoip {
        source => ["X_Forward_IP"]
        database => "/usr/local/logstash2.2.2/bin/GeoLiteCity.dat"
      }
    } else {
           geoip {
                source => ["Client_IP"]
                database => "/usr/local/logstash2.2.2/bin/GeoLiteCity.dat"
          }
    }
       date{
        match => ["Accept_Date", "dd/MMM/yyyy:HH:mm:ss.SSS" ]
       }
       mutate{
        remove_field => ["Syslog_Timestamp"]
        remove_field => ["Accept_Date"]
        remove_field => [ "Host" ]
        remove_field => [ "Syslog_Server" ]
        remove_field => [ "Path" ]
        remove_field => [ "pid" ]
        remove_field => [ "Client_Port" ]
        remove_field => [ "program" ]
        remove_field => [ "Haproxy_Monthday" ]
        remove_field => [ "Haproxy_Month" ]
        remove_field => [ "Haproxy_Year" ]
        remove_field => [ "Haproxy_Hour" ]
        remove_field => [ "Haproxy_Minute" ]
        remove_field => [ "Haproxy_Second" ]
        remove_field => [ "Haproxy_Milliseconds" ]
        remove_field => [ "Frontend_Name" ]
        remove_field => [ "Captured_Response_Cookie" ]
        remove_field => [ "Captured_Request_Cookie" ]
        convert => [ "Http_Status_Code","integer" ]
        convert => [ "Bytes_Read","integer" ]
        convert => [ "Time_Duration","integer" ]
        convert => [ "Time_Backend_Response","integer" ]
        convert => [ "Actconn","integer" ]
        convert => [ "Feconn","integer" ]
        convert => [ "Beconn","integer" ]
        convert => [ "Srvconn","integer" ]
        convert => [ "Retries","integer" ]
        convert => [ "Srv_Queue","integer" ]
        convert => [ "Backend_Queue","integer" ]
        convert => [ "Time_Request","integer" ]
        convert => [ "Time_Queue","integer" ]
        convert => [ "Time_Backend_Connect","integer" ]
      }
}

output {
     #stdout { codec => rubydebug }
        elasticsearch {
                hosts => "192.168.2.240:9200"
                index => "logstash-haproxy-%{+YYYY.MM.dd}"
        }
}  





运维网声明 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-658377-1-1.html 上篇帖子: 负载均衡集群HAProxy安装篇 下篇帖子: haproxy监控页面详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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