filebeat+logstash收集错误日志发送邮件提醒

filebeat+logstash收集错误日志发送邮件提醒

20181109110339174.png

因为只收集错误日志并且数据量并不是非常大所以简化流程

使用filebeat+logstash发送异常日志

软件 版本 说明
filebeat filebeat-8.4.3-linux-x86_64.tar.gz 日志采集器
logstash logstash-8.5.3-linux-x86_64.tar.gz 日志收集、过滤、转发

一、filebeat配置

1、将安装包解压到指定目录
drwxr-xr-x  3 root root     4096 Oct 28 09:46 ./
drwx------ 13 root root     4096 Nov  1 13:30 ../
drwxr-xr-x  7 root root     4096 Oct 31 16:30 filebeat-8.4.3-linux-x86_64/
-rw-r--r--  1 root root 60723429 Oct 28 09:46 filebeat-8.4.3-linux-x86_64.tar.gz
2、找到filebeat.yml文件
root@e:/# cd filebeat-8.4.3-linux-x86_64/
root@e:/# filebeat-8.4.3-linux-x86_64# ls
@  data  fields.yml  filebeat  filebeat.reference.yml  filebeat.yml  kibana  LICENSE.txt  logs  module  modules.d  nohup.out  NOTICE.txt  README.md
3、配置采集

参考文档:https://www.elastic.co/guide/en/beats/filebeat/current/configuration-filebeat-options.html

# ============================== Filebeat inputs ===============================
max_procs: 1 # 配置cpu核数 减少资源占用
queue.mem.events: 2048                  # 存储于内存队列的事件数,排队发送 (默认4096)
queue.mem.flush.min_events: 1536        # 小于 queue.mem.events ,增加此值可提高吞吐量 (默认值2048)

filebeat.inputs:
# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

# filestream is an input for collecting log messages from files.
- type: filestream  # 指定数据的输入类型
  ignore_older: 48h # 忽略这个时间之前的文件(根据文件改变时间)
  max_bytes: 20480  # *单条日志的大小限制,将其从默认10M降低到20k,按照公式计算 20k * 4096 ~= 80M
  # Unique ID among all inputs, an ID is required.
  id: my-filestream-id
  # Change to true to enable this input configuration.
  enabled: true # 启用

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/logs/aaa/debug.log           # 日志路径
    #- c:\programdata\elasticsearch\logs\*
  tail_files: true   # 从日志最后一行开始读取
  # Exclude lines. A list of regular expressions to match. It drops the lines that are
  # matching any regular expression from the list.
  # Line filtering happens after the parsers pipeline. If you would like to filter lines
  # before parsers, use include_message parser.
  exclude_lines: ['DEBUG']

  # Include lines. A list of regular expressions to match. It exports the lines that are
  # matching any regular expression from the list.
  # Line filtering happens after the parsers pipeline. If you would like to filter lines
  # before parsers, use include_message parser.
  include_lines: ['ERROR','Exception']  #只处理包含ERROR 和 Exception日志
  parsers:
   - multiline:              #合并多行日志 
       pattern: '^\d{4}-\d{2}-\d{2}'       # 匹配以 YYYY-MM-DD HH:mm:ss 开头的行 
       negate: true                        # 是否匹配pattern的情况
       match: after                        # 将其追加到上一行之后 pattern + negate + match 组合成一条语意为: 如果匹配 YYYY-MM-DD HH:mm:ss 开头的行,则将其合并到当前行的上一行
       max_lines: 20                      # 最多匹配多少行,如果超出最大行数,则丢弃多余的行(默认500)
       timeout: 2s                         # 超时时间后,即使还未匹配到下一个行日志(下一个多行事件),也将此次匹配的事件刷出 (默认5s)
  
# ------------------------------ Logstash Output -------------------------------
#指定输出的logstash地址
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.1.12:5044"]

# Sets log level. The default log level is info.
# Available log levels are: error, warning, info, debug
logging.level: info  #filebeat日志级别 调试时可以设为debug
4、启动
/filebeat-8.4.3-linux-x86_64# ./filebeat -e -c filebeat.yml    前台启动
/filebeat-8.4.3-linux-x86_64# nohup ./filebeat -e -c filebeat.yml &  后台启动

:正常运行一段时间后filebeat自动关闭
解决:
1、使用service方式启动
2、在原来的命令之前加上disown参数,这个参数将会使启动的nohup进程从当前shell的作业列表中清除,从而避免nohup进程在关闭这个shell时接收到SIGHUP信号

nohup ./filebeat -e -c filebeat.yml & disown

二、logstash配置

1、将安装包解压到指定目录
drwxr-xr-x  4 root root      4096 Oct 31 14:13 ./
drwxr-xr-x 25 root root      4096 Oct 28 11:12 ../
drwxr-xr-x 14 root root      4096 Oct 31 16:29 logstash-8.5.3/
-rw-r--r--  1 root root 330116325 Oct 28 09:25 logstash-8.5.3-linux-x86_64.tar.gz

2、找到logstash-sample.conf 文件
root@e:/logstash-8.5.3/config# ls
jvm.options  log4j2.properties  logstash-sample.conf  logstash.yml  pipelines.yml  startup.options

3、配置

参考文档:https://www.elastic.co/guide/en/logstash/current/output-plugins.html

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  beats {
    host => '192.168.1.12'  #本机ip
    port => 5044
  }
}

filter {
   # 匹配message中的时间格式化到logdate
    grok {
        match => ["message", "%{TIMESTAMP_ISO8601:logdate}"]
    }  
   # 排除 IdempotentException 异常(不处理该异常)
    if [message] =~ "IdempotentException" {
      drop { }
    }
}

output {
  # 输出到文件
  #file{
  # path => "/test/test.log"
  # codec => line {format => "%{message}"}
  # }
  
  # 接收参数输出到控制台
  #  stdout { codec => rubydebug }
  
  #输出到邮件 腾讯企业邮箱为例
    email {
        port => 587
        address => 'smtp.exmail.qq.com'
        username => '***@***.com'
        password => '******'      #授权码
        authentication => 'plain'
        from => '***@***.com'
        subject => '错误告警:IP:%{[host][ip][0]}, 时间:%{logdate}'
        to => '***@***.com'
        use_tls => true
        domain => 'smtp.exmail.qq.com'
        body => '[服务器信息]IP:%{[host][ip][0]}\n[错误信息]:%{[log][file][path]}\n%{message}'
    }
}

4、启动
/logstash-8.5.3# ./bin/logstash -f ./config/logstash-sample.conf     前台启动
/logstash-8.5.3# nohup ./bin/logstash -f ./config/logstash-sample.conf  后台启动
5、 logstash配置调优 (logstash.yml、jvm.options)
lostash.yml: 
pipeline.workers: 1 (不配置的情况下,默认是系统核数,控制output或filter插件的工作线程数(只能设置正整数),当发现事件正在备份或CPU没有饱和,则可以增加工作线程,以提高性能。) 

#内存大小 根据服务器的性能进行配置
jvm.options: 
-Xms1g 
-Xmx1g
6、邮件内容
d0aa7d04d1015dc48272f2828085bf73.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容