Logstash整合zabbix 过滤Nginx 错误日志并进行报警
admin
2023-03-23 15:20:01
0



通过logstash过滤nginx-error日志,筛选日志中比较严重报错,并进行报警。

由于网络上很多帖子都是要么写了怎么筛选报错,要么就只翻译了logstash-zabbix-output插件的使用说明,并没有一个完整的配置,整个项目做完,整理出来供大家阅读。 


【软件版本】

zabbix 版本:2.4.8 
logstash 版本:2.4.0 
JDK 版本: 1.8.0_101 


【zabbix配置】 
首先配置zabbix的item,使其能够成功接收logstash发送过来的信息. 
创建Template:“Configuration” -> “Templates” -> “Create template”

Logstash整合zabbix  过滤Nginx 错误日志并进行报警


这里我对Template的名字叫“Log file check” 
然后创建Application:“Create applicaton”


Logstash整合zabbix  过滤Nginx 错误日志并进行报警



Application名字还叫“Log file check” 
最后创建item:“Create item”: 
注意四个地方:
Type 一定要选择“Zabbix trapper”,否则无法接收logstash发送的信息; 
Key 一定要写正确,最好不要有空格,需要在logstash中配置; 
Type of information 选择 “Text”,因为我传过来的值是一段报错日志,所以选择文本; 
Allowed hosts:允许传送的主机,一定要设定为logstash所在的主机。


Logstash整合zabbix  过滤Nginx 错误日志并进行报警


【Logstash配置】


注:logstash的下载及安装不介绍。 


安装目录:/opt/logstash/ 


由于日志量并没有达到上W级,因此针对logstash进行了一些优化,降低了部分性能: 

# vim /opt/logstash/bin/logstash 

LS_HEAP_SIZE=500m 
LS_JAVA_OPTS="-server -Xmx200m"

【安装logstash-output-zabbix插件】


/opt/logstash/bin/logstash-plugin install logstash-output-zabbix


logstash 配置文件: 


input { 
    file { 
        type => "error-log" # 指定类型,用于以后判断操作 
        path => "/tmp/test.log" # 文件路径 
        start_position => "beginning" # 文件开始位置 
        codec => multiline { # 使用多行匹配方式进行过滤 
            pattern => "^\d{4}" # 以4个数字开头的为第一行, 
            negate => true # 所有不以4个数字开头的,均归于上一行(下面what配置) 
            what => "previous" 
        }
    } 
}

filter {
    grok {    
        match => {         
            message:\s+\n.*Code:(?\d+).*Message:(?.+)\n.*File:(?.+)\n.*Line:(?\s+\d+).*"     # 对于匹配规则,还是要针对自己场景自己写    }       add_tag => [ "zabbix-sender" ]  # 添加一个标签    add_field => [                  # 设定agent主机的主机名和key的映射        "zabbix_host", "web01",     # 主机名        "zabbix_key", "logstash"    # 添加item时,设定的key名称    ]}    if "_grokparsefailure" in [tags] {          # 如果过滤报错,那么移除报错标签,不进行其他处理        mutate {            remove_tag => "_grokparsefailure"        }    }
}
output { # 输出配置 
    stdout { # 测试时可以开启终端输出 
        codec => rubydebug 
        #codec => json # 可以选择json格式的输出还是rubydebug格式的输出 
    } 
    zabbix { # 发送给zabbix的配置 
        zabbix_host => "zabbix_host" # zabbix_host指上面映射的主机,不能用ip 
        zabbix_key => "zabbix_key" # zabbix_key指上面映射的key,意思就
                                     是发送给某主机的某key,值为zabbix_value 
        zabbix_server_host => "192.168.1.229" # zabbix server 
        zabbix_server_port => "10051" # zabbix server port 默认为10051 
        zabbix_value => "Message" # 要发送的key值 
    } 
}

如果需要进行测试,可以在zabbix agent使用zabbix_sender进行测试:


/opt/zabbix/sender -z zabbix-server -p port -s agentservername -k keyname -o keyvalue

所有配置完成后,可以在监测日志文件中输入一些测试数据,并在zabbix web上查看是否正常出现数据:



Logstash整合zabbix  过滤Nginx 错误日志并进行报警



【配置报警】 
“configuration” -> “Templates” -> “Triggers” -> “Create Trigger”: 
Name:log error check 
Expression:判断获取值的长度是否为0,如果不为0,trigger为problem状态,发送报警 


Logstash整合zabbix  过滤Nginx 错误日志并进行报警


其他关于报警相关配置请自行某度······


参考资料:

http://blog.sina.com.cn/s/blog_7ba28b620102xw2w.html

https://www.elastic.co/guide/en/logstash/current/plugins-outputs-zabbix.html

https://www.zabbix.org/wiki/Docs/protocols/zabbix_sender/2.0

相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...