zoukankan      html  css  js  c++  java
  • logstash 判断接口响应时间发送zabbix告警

    input {
            file {
                    type => "zj_api_access"
                    path => ["/data01/applog_backup/zjzc_log/zj-api*access*"]
            }
        
           file { 
                    type => "wj_api_access" 
                    path => ["/data01/applog_backup/winfae_log/wj-api*access*"] 
            } 
    
     
    }
    filter {
        grok {
            match => [
                 "message" , "s*%{IPORHOST:clientip}s+-s+-s+[%{HTTPDATE:time}]s+"%{WORD:verb}s+(?<api>(S+))?.*s+HTTP/%{NUMBER:httpversion}"s+%{NUMBER:http_status_code}s+%{NUMBER:bytes}s+(%{BASE16FLOAT:request_time})s+%{IPORHOST:remoteip}",
                  "message" ,"s*%{IPORHOST:clientip}s+-s+-s+[%{HTTPDATE:time}]s+"%{WORD:verb}s+(?<api>(S+))s+HTTP/%{NUMBER:httpversion}"s+%{NUMBER:http_status_code}s+%{NUMBER:bytes}s+(%{BASE16FLOAT:request_time})s+%{IPORHOST:remoteip}",
                 "message" ,"s*%{IPORHOST:clientip}s+-s+-s+[%{HTTPDATE:time}]s+"%{WORD:verb}s+(?<api>(S+))s+HTTP/%{NUMBER:httpversion}"s+%{NUMBER:http_status_code}s+-s+(%{BASE16FLOAT:request_time})s+%{IPORHOST:remoteip}"
            ]
        }   
            mutate {
                            convert => [ "request_time", "float"]
                           add_field =>["response_time","%{request_time}"]
                            remove_field =>["request_time"]
                           add_field => [ "[@metadata][zabbix_key]" , "logstash-api-access" ]
                           add_field => [ "[@metadata][zabbix_host]" , "dr-mysql01" ]
                    }
       date {
            match => ["time", "dd/MMM/yyyy:HH:mm:ss Z"]
        }
         
    }
    
    
    
    output {
    
         if [response_time] >= 5  {
              zabbix {
    		zabbix_host => "[@metadata][zabbix_host]"
    		zabbix_key => "[@metadata][zabbix_key]"
            zabbix_server_host => "192.168.32.55"
            zabbix_server_port => "10051"
    		zabbix_value => "message"
            }
              }
         if [type] == "zj_api_access" { 
            redis {
                    host => "192.168.32.67"
                    data_type => "list"
                    key => "zj_api_access:redis"
                    port=>"6379"
                    password => "1234567"
            }
    }
          else if [type] == "wj_api_access"{
           redis { 
                    host => "192.168.32.67" 
                    data_type => "list" 
                    key => "wj_api_access:redis" 
                    port=>"6379" 
                    password => "1234567" 
            } 
    }
    }

  • 相关阅读:
    .Net 集合类
    Linux与Windows共享资源samba+mount
    Linux系统基本设置
    python实例31[urllib.request.urlopen获取股票信息]
    iptables 基本命令使用举例
    API控制VM虚拟机(VM Workstation or VM Server)
    vbs实现unicode和ascii的转化
    python语法31[string的print和format]
    Windows下运行XServer
    Perl IDE之Perl Express和Eclipse+EPIC+PadWalker
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199189.html
Copyright © 2011-2022 走看看