logstash+grafana实现错误日志收集及可视化报警通知

1. 目标效果

当系统出现错误日志时,算法人员可查看日志及实现主动消息通知,如钉钉短信等

在这里插入图片描述

2. 配置logstash采集日志

2.1 修改k8s.yaml发布文件

         volumeMounts:
            - name: host-time
              mountPath: /etc/localtime
            - name: app-log
              mountPath: /home/sfxs/logs # 共享日志目录,为了读取
        - name: logstash
          image: logstash:7.11.2
          imagePullPolicy: IfNotPresent
          args: [ "-f", "/usr/share/logstash/config/logstash.conf" ] # 如果采用docker-compose方式,改为对应命令即可,如command: ["-f", "/usr/share/logstash/config/logstash.conf"]
          volumeMounts:
            - name: host-time
              mountPath: /etc/localtime
            - name: app-log
              mountPath: /home/sfxs/logs
            - name: nfs
              mountPath: /usr/share/logstash/config
      volumes:
        - name: host-time
          hostPath:
            path: /etc/localtime
        - name: nfs
          cephfs: # 我们采用的cephfs共享存储,根据实际情况修改
            monitors:
              - 192.168.0.XXX:6789
              - 192.168.0.XXX:6789
              - 192.168.0.XXX:6789
            user: admin
            path: /k8stest/logstash/nlp
            secretRef:
              name: ceph-secret
            readOnly: false
        - name: app-log
          emptyDir: { }

2.2 新增logstash相关文件

主要配置logstash.conf

input {
  file {
    path => "/home/sfxs/logs/*.log"
  }
}
filter {
  # 消息行不存在ERROR则跳过
  if (!([message] =~ ".*ERROR.*")) {
    drop {}
  }
  grok {
    # 正则匹配满足的消息,解析为ES的字段,如msg row等
	match => { "message" => ".*【%{TIMESTAMP_ISO8601:timestamp}\s+\|\s+%{DATA:class}\s+\|\s+%{DATA:row}\s+\|\s+%{DATA:msg}\s+\|\s+%{DATA:address}】.*"}
  }
  date {
    match => ["timestamp", "yyyy-MM-dd HH:mm:ss" ]
    target => "@timestamp"
    timezone => "Asia/Shanghai"
  }
  mutate{
    remove_field => ["host", "path", "@version", "message", "timestamp"]
  }
}
output {
  elasticsearch {
    hosts => ["127.0.0.1:9200"]
    index => "nlp-log"
  }
}

其他配置详见https://gitee.com/SJshenjian/blog-code/tree/master/src/main/java/online/shenjian/logstash

3. ES索引创建,存储数据

PUT nlp_log
{
  "mappings": {
    "dynamic" : "strict",
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        },
        "address" : {
          "type" : "text"
        },
        "class" : {
          "type" : "text"
        },
        "level" : {
          "type" : "text"
        },
        "msg" : {
          "type" : "text"
        },
        "row" : {
          "type" : "text"
        }
      }
  }
}

4. 配置grafana可视化

4.1 配置datasource

在这里插入图片描述

4.2 配置可视化面板

在这里插入图片描述
展示格式选择
在这里插入图片描述
展示哪些字段及别名显示
在这里插入图片描述
统计方式选择,我们计数

在这里插入图片描述
统计指标:五分钟内计数超过3个错误日志
统计间隔:每分钟监控,指标达到后2S触发消息通知
消息通知:配置略
在这里插入图片描述

### Apache Flume可视化工具或实现方案 #### 1. 数据流监控与管理 为了更好地管理和监控Apache Flume中的数据流动态,可以借助一些专门设计的可视化工具或者自定义开发的方式。这些工具有助于实时跟踪事件的数量、延迟时间以及其他性能指标。 一种常见的做法是利用 **Ganglia** 或者 **ZooKeeper UI** 来监视Flume节点的状态和活动情况[^1]。然而,更专业的解决方案可能涉及集成第三方平台,例如: - **Cloudera Manager**: 提供了一个图形界面用于配置、启动/停止服务以及查看日志文件等功能。 - **Ambari**: 类似于Cloudera Manager的功能集,允许管理员轻松部署并维护整个Hadoop生态系统内的各个组件,包括Flume实例。 #### 2. 自定义仪表盘构建 如果现有的现成产品无法完全满足特定需求,则可以通过编程手段创建个性化的控制面板。以下是几个推荐的技术栈选项及其用途概述: ##### (a) 使用ELK Stack(Elasticsearch, Logstash 和 Kibana) Elasticsearch 是一个高度可扩展的开源全文搜索引擎;Logstash 负责从不同来源提取结构化与非结构化信息并将它们发送到 Elasticsearch 中存储起来;而 Kibana 则提供了强大的前端展示层让用户能够方便快捷地浏览已索引的内容。具体流程如下所示: ```bash # 启动elasticsearch服务 ./bin/elasticsearch & # 配置logstash输入插件读取来自flume的消息队列 input { kafka { ... } } output { elasticsearch { ... } } ``` ##### (b) Grafana + Prometheus Prometheus 是一款高效的系统监控报警框架,支持多维度数据模型和灵活查询语言 PromQL 。配合上美观大方且易于定制报表样式的 Grafana ,便能打造出极具吸引力的数据中心概览图谱。 ```yaml scrape_configs: - job_name: 'flume_metrics' static_configs: - targets: ['localhost:8080'] ``` #### 3. 实际操作建议 当考虑实施上述任何一种策略之前,请务必确认当前环境是否已经具备必要的依赖项和服务运行条件。此外还需要注意版本兼容性和安全性设置等问题[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法小生Đ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值