Logstash+filebeat 7.6 实现监控服务异常日志并钉钉告警

1.背景描述

flume http resource作为我司数据上报的核心服务,为了保证稳定运行,及时发现异常,要求接入异常日志监控。我作为唯一的一个大数据运维,考虑将日志异常信息接入钉钉机器人告警。

由于java水平堪堪自慰,用linux bash shell 写又过于麻烦,各种过滤规则,想想就头大,想起了日志搜索神器TLK,反正以后还需要接入,借此机会就研究下。目前要求比较简单,用不到ES和 Kibana,光一个logstash就能满足要求。

 

2.Logstash简介

官网地址: https://www.elastic.co/guide/en/logstash/current/introduction.html

Logstash是一个实时流式数据采集的开源引擎,可以动态采集不同来源的数据,经过自定义处理再将数据标准化到目标位置。个人感觉像flume,但是功能更丰富。

输入源支持:kafka,file,ES,ganglia,http,jmx,jdbc,redis,tcp,udp ...等等

输出源支持:csv,email,http,kafka,redis,ES,http,tcp,udp,zabbix ...等等

还支持数据编码,格式转换,数据聚合,数据拼接,增删自定义字段

看起来是花里胡哨,无所不能哦。功能如图,自己体会:

logstash

 

3.实操记录

1) 安装+配置+运行 filebeat

filebeat是一个简约的数据上报客户端,实测运行时物理内存占用不到50MB,官网地址:https://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-overview.html    可以转发汇集日志数据(比如Log,Stdin,Kafka,Redis,UDP,TCP)到ES,Logstash,kafka,redis,File。主要是和Logstash配套。

下载 filebeat用于客户端,上报日志,哪有日志需要上报,就安装到哪里

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.0-x86_64.rpm

rpm -ivh filebeat-7.6.0-x86_64.rpm

配置文件/etc/filebeat/filebeat.yml   (这里需要看下自己的日志格式是怎么样的)

filebeat.inputs:
- type: log
#一个堆栈信息或者exception,因为会换行,需要将多行放在一起发送。匹配以日期开头的行
  multiline.pattern: '^\d{4}-\d{2}-\d{2}'
  multiline.negate: true
  multiline.match: after
#忽视最后更新时间在5分钟前的文件
  ignore_older: 5m
  paths:
    - /var/log/flume-ng/http-agent/flume-cmf-flume9-AGENT-hadoop-da-1.log
output.logstash:
#将日志文件推送到hadoop04 5044 端口
  hosts: ["hadoop04:5044"]

service filebeat start | stop | retsrat | status

2) 研究下钉钉的告警方式

 

官方文档地址   https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

主要就是看下请求方式:

curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
   -H 'Content-Type: application/json' \
   -d '{"msgtype": "text", 
        "text": {
             "content": "我就是我, 是不一样的烟火"
        }
      }'

3) 安装+配置+运行logstash

下载 logstash,用于处理日志,注意这是server端,我只安装了一个。

cd /root

wget  https://artifacts.elastic.co/downloads/logstash/logstash-7.6.0.tar.gz

cd /root/logstash-7.6.0

vi /root/logstash-7.6.0/config/clog-http-agent-log.conf

#输入
input {
    beats {
        port => "5044"
    }
}

#数据过滤,包含特定字符时丢弃该行
filter {
    if [message] =~ "Form too large" {
      drop { }
    }
    if [message] =~ "the name null" {
      drop { }
    }
    if [message] =~ "jetty\.EofException" {
      drop { }
    }
}

#数据输出
output {
# 输出到控制台,用于测试,生产中可以删除
    stdout { codec => rubydebug }
#日志异常信息通过钉钉告警
    http {
      url => "https://oapi.dingtalk.com/robot/send?access_token=488298742547xxxxxxxxxxxxx"
      http_method => "post" 
#这个mapping很重要,决定了http请求体的数据,要和钉钉上报格式一致
      mapping => {
        "msgtype" => "text" 
        "text" => "{'content':'clogHttpAgent--%{host}--%{message}'}"
      }
    }
}

测试配置文件正确与否

bin/logstash -f config/clog-http-agent-log.conf --config.test_and_exit

--config.test_and_exit选项会检查&测试配置文件,然后退出

运行piple收集客户端上报日志

nohup bin/logstash -f config/clog-http-agent-log.conf --config.reload.automatic  > /dev/null 2>&1 &

--config.reload.automatic 会动态加载配置文件,不需要每次修改重启

停止logstash 

kill -TERM {logstash_pid}

 

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值