logstasg zabbix插件详解

Logstash错误日志发送到Zabbix并报警


1.安装logstash-output-zabbix
logstash-output-zabbix是一个社区维护的插件,它默认不安装,但是它安装起来也很容易,直接在logstash中运行即可:

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

对于内网环境,我们可以将插件打包然后在内网环境进行本地安装即可:

# ./bin/logstash-plugin prepare-offline-pack --overwrite --output /root/logstash-output-zabbix.zip logstash-output-zabbix 
Offline package created at: /root/logstash-output-zabbix.zip

You can install it with this command `bin/logstash-plugin install file:///root/logstash-output-zabbix.zip`

2.创建一个logstash测试文件,测试到zabbix的输出是否在正常

input {
   file {
        path => "/home/elk/test.log"
        start_position => "beginning"
        add_field => [ "[@metadata][zabbix_key]" , "logstash" ]
        add_field => [ "[@metadata][zabbix_host]" , "node1" ]
   }
}
output {
        stdout { codec => rubydebug }
        zabbix {
                zabbix_host => "[@metadata][zabbix_host]"
                zabbix_key => "[@metadata][zabbix_key]"
                zabbix_server_host => "192.168.20.200"
                zabbix_server_port => "10051"
                zabbix_value => "message"
        }
}

3.配置zabbix
新建模板:logstash-output-zabbix,新建es群组;
在模板中创建监控项,类型选择zabbix采集器,信息类型设置为文本,键值和logstash配置文件中的zabbix_key对应
这里写图片描述
添加一个名为node1的主机,名称需要和logstash配置文件中的zabbix_host对应,添加logstash-output-zabbix模板

直接指定现有主机会出现如下问题:
[WARN ][logstash.outputs.zabbix ] Zabbix server at 192.168.20.200 rejected all items sent. {:zabbix_host=>”node1”}

4.查看zabbix获取到最新数据

echo "text" >>test.log

这里写图片描述

5.自定义字段来区分来自不同主机不同服务的错误日志
以收集一台服务器上不同服务的错误日志为例:

filebeat配置如下:对每个日志添加一个能区分不同服务的字段

filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /home/elk/server1_error.log
  fields:
    test: server1_error 
- type: log
  enabled: true
  paths:
    - /home/elk/server2_error.log
  fields:
    test: server2_error 

logstash配置如下所示:
添加一个messager字段,格式为%{[beat][name]}-%{[fields][test]}-%{message},如果不想在报警邮件中包含错误日志内容设置为%{[beat][name]}-%{[fields][test]}即可。

input {
        beats {
                port => "5044"
        }
}
filter {
        mutate{
                add_field => [ "[@metadata][zabbix_key]" , "logstash" ]
                add_field => [ "[@metadata][zabbix_host]" , "node1" ]
                add_field => [ "messager","%{[beat][name]}-%{[fields][test]}-%{message}" ]
                #remove_field =>["message"]
        }
}
output {
        stdout { codec => rubydebug }
        zabbix {
                zabbix_host => "[@metadata][zabbix_host]"
                zabbix_key => "[@metadata][zabbix_key]"
                zabbix_server_host => "192.168.20.200"
                zabbix_server_port => "10051"
                zabbix_value => "messager"
        }
}   

通过beat.name来区分不同主机,通过fields.test字段区分不同的服务日志

6.测试

echo "test1" >>server1_error.log 

这里写图片描述

echo "test2" >>server2_error.log

这里写图片描述

7.设置触发器
思路:logstash收集服务日志,如果有错误日志会将错误信息发送到zabbix进行报警通知,所以触发器这里可以设定有有数据就报警。通过字符串长度进行判断。
这里写图片描述
勾选多重问题事件生成可以实现每条数据的邮件报警

邮件报警:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/wfs1994/article/details/80839245