上一章博客已经搭建elkf成功,请参见https://blog.csdn.net/zhangsaho/article/details/103390710
在需要收集日志的客户机上已经成功安装filebeat,打开/etc/filebeat/filebeat.yml使用tags给不同日志打上标签,在logstash里会用到
然后服务端logstash再增加配置文件/etc/logstash/conf.d/logstash.conf,编辑如下内容
input{
beats {
port => 5044
}
}
output{
if “logs1” in [tags]{
elasticsearch{
hosts => [“192.168.6.169:9200”]
index => “logs1-%{+YYYY.MM.dd}”
}
}
if “logs2” in [tags]{
elasticsearch{
hosts => [“192.168.6.169:9200”]
index => “logs2-%{+YYYY.MM.dd}”
}
}
}
最后重启logstash和filebeat在web验证我们添加的索引是否存在,通过验证成功
使用grok过滤filebeat收集到的日志修改logstash1.conf如下
input{
beats {
port => 5044
}
}
filter {
if “logs1” in [tags]{
grok {
match => {
“message” => “%{DATESTAMP:time}\s*[%{LOGLEVEL:level}]%{GREEDYDATA:data}”
}
}
}
}
output{
if “logs1” in [tags]{
elasticsearch{
hosts => [“192.168.6.169:9200”]
index => “logs3-%{+YYYY.MM.dd}”
}
}
if “logs2” in [tags]{
elasticsearch{
hosts => [“192.168.6.169:9200”]
index => “logs2-%{+YYYY.MM.dd}”
}
}
}
elk结合zabbix实现错误日志及时报警
首先进行logstash-output-zabbix安装(一个不可缺少的插件)
/usr/local/logstash/bin/logstash-plugin install logstash-output-zabbix #注意logstash-plugin位置)
input{
beats {
port => 5044
}
}
filter {
if “logs1” in [tags]{
grok {
match => {
“message” => “%{DATESTAMP:time}\s*[%{LOGLEVEL:level}]%{GREEDYDATA:data}”
}
} #这里通过grok对message字段的数据进行字段划分,其中level字段会在output中用到。
mutate {
add_field => [ “[zabbix_key]”, “oslogs” ]#新增的字段,字段名是zabbix_key,值为oslogs。
add_field => [ “[zabbix_host]”, “Zabbix-agent1” ]#新增的字段,字段名是zabbix_host,值最好写为agent里定义的主机名
}
mutate {
remove_field => “@version”
remove_field => “message”
}#删除多余字段
date {
match => [ “time”,“MMM d HH:mm:ss”, “MMM dd HH:mm:ss”, “ISO8601”]
}#这里是对日志输出中的日期字段进行转换,其中time字段是默认输出的时间日期字段,将这个字段的值传给 @timestamp字段。
}
}
output{
if “logs1” in [tags]{
elasticsearch{
hosts => [“192.168.6.169:9200”]
index => “logs3-%{+YYYY.MM.dd}”
}
if [level] =~ /(ERR|error|ERROR|Failed)/ {#进行正则匹配
zabbix {
zabbix_host => “[zabbix_host]”#这个zabbix_host将获取上面filter部分定义的字段变量%{host}的值
zabbix_key => “[zabbix_key]”#这个zabbix_key将获取上面filter部分中给出的值
zabbix_server_host => “192.168.6.177”#这是指定zabbix server的IP地址
zabbix_server_port => “10051”#这是指定zabbix server的监听端口
zabbix_value => “data”#很重要指定要传给zabbix的内容
}
}
}
if “logs2” in [tags]{
elasticsearch{
hosts => [“192.168.6.169:9200”]
index => “logs2-%{+YYYY.MM.dd}”
}
}
}
点击应用集—–>创建应用集,如下图所示:
创建一个监控项,点击监控项—–>创建监控项,如下图所示
注意!!!!信息类型那里不要选文本,选择日志,不然会传输不了日志到zabbix,本人踩的坑(比较懒在网上找的图,网上大部分都选的这个,是不对的)
到此为止,zabbix监控logstash的日志数据配置完成。
可以使用zabbix_sender -z 192.168.6.177 -p 10051 -s Zabbix-agent1 -k “oslogs” -o "hello"进行测试
-z:监控端IP
-p:监控端端口
-s:监控端主机名
-k:上面定义的
-o:输出的内容
好了今天先折腾到这里,明天再加强一下增加证书,保证日志传输的安全,对您有用的的话点个赞鼓励一下呗,有什么不足的地方欢迎大家提出您宝贵的意见,互相学习