使用GrayLog对PrometheusAlert推送的安全告警进行图形报表统计与分析

简介: 使用GrayLog对PrometheusAlert推送的安全告警进行图形报表统计与分析

640.jpg

需求


GrayLog每天每周产生的安全告警数量较多,这些产生的告警都通过PrometheusAlert推送到钉钉webhook告警机器人 想对这些告警做一些汇总统计,报表分析


640.png

解决思路:


由于GrayLog Web界面上的告警界面无汇总统计的功能,只能寻找其他解决思路,查询prometheusalert是否有统计功能 但搜索过PrometheusAlert的相关功能,与需求不太吻合。突发奇想,看能否从PrometheusAlert.log的日志进行下手通过查看


PrometheusAlert.log的一些规律,最终确定的解决方法 包含value.go的这一行就是所需要的告警日志


2022/10/14 14:15:15.735 [D] [value.go:476]  [1665728115735353131] {"event_definition_id":"62d40b5bfbbe0a2fd4faf65d","event_definition_type":"aggregation-v1","event_definition_title":"堡垒机绕过提醒","event_definition_description":"安全助手检测到绕过堡垒机直接登陆服务器行为","job_definition_id":"62d3ff2bfbbe0a2fd4fadd35","job_trigger_id":"6348fe7213d8e16f7fe61732","event":{"id":"01GFAJ3W0SZSGJNTK01QKMRQXB","event_definition_type":"aggregation-v1","event_definition_id":"62d40b5bfbbe0a2fd4faf65d","origin_context":"urn:graylog:message:es:linuxserver_23:e6490781-4b86-11ed-aea0-005056b6acae","timestamp":"2022-10-14T06:10:46.428Z","timestamp_processing":"2022-10-14T06:15:14.713Z","timerange_start":null,"timerange_end":null,"streams":[],"source_streams":["62d3eed0fbbe0a2fd4facacd"],"message":"堡垒机绕过提醒","source":"localhost","key_tuple":[],"key":"","priority":2,"alert":true,"fields":{},"group_by_fields":{}},"backlog":[{"index":"linuxserver_23","message":"Accepted password for root from 192.168.29.41 port 60382 ssh2","timestamp":"2022-10-14T06:10:46.428Z","fields":{"process_id":"3194","gl2_accounted_message_size":292,"application_name":"sshd","level":6,"gl2_remote_ip":"172.16.252.134","gl2_remote_port":64781,"facility_num":10,"Linux_server_ssh_login_ip":"192.168.29.41","gl2_message_id":"01GFAHV3ZRYPS0G895J23348A6","gl2_source_node":"d20e3549-da0a-4ae9-af4a-d352e1c3deb5","gl2_source_input":"62d3ec98fbbe0a2fd4fac816","facility":"security/authorization"},"id":"e6490781-4b86-11ed-aea0-005056b6acae","source":"ec-server-test-172-16-252-134","stream_ids":["62d3eed0fbbe0a2fd4facacd"]}]}

1、使用rsyslog服务来读取prometheusalert.log日志文件


[root@centos ~]# cd /etc/rsyslog.d/
[root@centos rsyslog.d]# vi prometheusalert_read.conf 
[root@centos rsyslog.d]# cat prometheusalert_read.conf 
module(load="imfile" PollingInterval="1")
# Input for FILE1
#wildcard is allowed at file level only
input(
      type="imfile"
      tag="Alertlog"
      ruleset="filelog"
      Facility="local0"
      Severity="info"
      PersistStateInterval="1"
      reopenOnTruncate="on"
      freshStartTail="on"
      file="/opt/PrometheusAlert/logs/prometheusalertcenter.log"
) 
# Define a template for file events
template(name="GraylogFormatFilelog" type="string" string="%msg%\n")
#Replace the Target and Port values with your GrayLogServer IP address and port.
ruleset(name="filelog") {
   action(
        type="omfwd"
        protocol="udp"
        target="192.168.31.170"
        port="1524"
        template="GraylogFormatFilelog"
        queue.type="LinkedList"
        queue.filename="fileq1"
        queue.saveonshutdown="on"
        action.resumeRetryCount="-1"
   ) stop
}
[root@centos rsyslog.d]# systemctl restart rsyslog

640.png

2、创建Index,Input和Stream2、创建Index,Input和Stream

[root@centos ~]# firewall-cmd --permanent --zone=public --add-port=1524/udp
success
[root@centos ~]# firewall-cmd --reload
success
[root@centos ~]# systemctl restart rsyslog.service 
[root@centos ~]#

640.png

640.png


640.png

640.png

640.png

3、字段提取


在日志搜索栏中搜索告警日志后进行提取器配置,提取所需的字段

640.png


例如这里使用正则表达式进行字段的提取


640.png



640.png

以下为导出的提取器语法配置文件

{
  "extractors": [
    {
      "title": "alert_json_message",
      "extractor_type": "regex",
      "converters": [],
      "order": 1,
      "cursor_strategy": "copy",
      "source_field": "message",
      "target_field": "alert_json_message",
      "extractor_config": {
        "regex_value": "^.*\\[[0-9]{19}\\](.+)$"
      },
      "condition_type": "string",
      "condition_value": "value.go"
    },
    {
      "title": "json_extractor",
      "extractor_type": "json",
      "converters": [],
      "order": 2,
      "cursor_strategy": "copy",
      "source_field": "alert_json_message",
      "target_field": "",
      "extractor_config": {
        "list_separator": ", ",
        "kv_separator": "=",
        "key_prefix": "",
        "key_separator": "_",
        "replace_key_whitespace": false,
        "key_whitespace_replacement": "_"
      },
      "condition_type": "none",
      "condition_value": ""
    },
    {
      "title": "field_cut",
      "extractor_type": "copy_input",
      "converters": [
        {
          "type": "tokenizer",
          "config": {}
        }
      ],
      "order": 3,
      "cursor_strategy": "copy",
      "source_field": "backlog",
      "target_field": "backlog_detail",
      "extractor_config": {},
      "condition_type": "none",
      "condition_value": ""
    },
    {
      "title": "level_replace",
      "extractor_type": "regex_replace",
      "converters": [],
      "order": 0,
      "cursor_strategy": "copy",
      "source_field": "message",
      "target_field": "message",
      "extractor_config": {
        "replacement": "\"alertlevel\"",
        "regex": "\"level\""
      },
      "condition_type": "none",
      "condition_value": ""
    },
    {
      "title": "facility_num_replace",
      "extractor_type": "regex_replace",
      "converters": [],
      "order": 0,
      "cursor_strategy": "copy",
      "source_field": "message",
      "target_field": "message",
      "extractor_config": {
        "replacement": "\"alert_facility_num\"",
        "regex": "\"facility_num\""
      },
      "condition_type": "none",
      "condition_value": ""
    }
  ],
  "version": "4.2.10"
}


4、字段展示和报表大屏配置

640.png

最后的效果

640.png


相关文章
|
6月前
|
Prometheus 监控 Cloud Native
夜莺自定义告警模板
夜莺自定义告警模板
|
运维 监控 数据可视化
ELK日志监控分析系统的探索与实践(二):利用Metricbeat监控服务器系统指标
在ELK日志监控分析系统的探索与实践(一)中,我们介绍了如何利用ELK+Filebeat监控Springboot项目的日志,本篇则是重点介绍如何利用ELk+Metricbeat监控服务器系统CPU、内存、磁盘等系统指标。
ELK日志监控分析系统的探索与实践(二):利用Metricbeat监控服务器系统指标
|
5月前
|
消息中间件 监控 关系型数据库
134 日志监控告警系统案例(功能架构分析)
134 日志监控告警系统案例(功能架构分析)
70 0
|
11月前
|
Prometheus 监控 Cloud Native
【夜莺监控】从日志中提取指标的瑞士军刀
【夜莺监控】从日志中提取指标的瑞士军刀
|
数据采集 缓存 JavaScript
网站流量日志埋点收集- - 方案二--点击事件数据采集实现|学习笔记
快速学习网站流量日志埋点收集- -方案二--点击事件数据采集实现
328 0
网站流量日志埋点收集- - 方案二--点击事件数据采集实现|学习笔记
|
数据采集 JavaScript 应用服务中间件
网站流量日志埋点收集 --方案一-基本功能数据采集实现|学习笔记
快速学习网站流量日志埋点收集--方案一-基本功能数据采集实现
315 0
网站流量日志埋点收集 --方案一-基本功能数据采集实现|学习笔记
|
存储 监控 Cloud Native
【笔记】用户指南—监控与告警—配置告警
您可以在控制台上配置计算资源监控指标和存储资源监控指标的告警规则。本文将介绍如何配置实例的告警规则。
【笔记】用户指南—监控与告警—配置告警
|
JSON 编解码 监控
SLS告警重磅更新——让你的告警通知一目了然
SLS告警最近升级了通知的模板语法,在保持对原有模板语法兼容的情况下,增加了动态渲染的功能,不仅支持条件语句、循环语句等控制流,还内置了50+函数,可以非常方便地对数据进行各种处理,从而可以非常灵活方便地对通知内容进行定制,让通知内容呈现的效果更加丰富、内容一目了然。
790 0
SLS告警重磅更新——让你的告警通知一目了然
|
监控 数据可视化 测试技术
SLS新版告警入门——告警管理编排交互
在之前的告警策略和行动策略相关的文章中,我们可以看到,为了配置各种策略逻辑,使用的都是类似的交互方式,即基于可视化图的表单。本文主要来介绍一下策略图相关的交互和配置。
453 0
SLS新版告警入门——告警管理编排交互
|
SQL 弹性计算 监控
日志服务(SLS)初体验:采集、加工、查询分析及可视化
日志服务(SLS)是阿里集团自研的一站式日志平台,它包含数据实时采集、数据加工、智能查询分析以及数据分发四大基础功能,用户无需开发就能能够开箱即用地使用它来提升运维、运营效率,建立 DT 时代海量日志处理能力。 为了让大家对日志服务有更直观的感受,本文将带着大家体验一下这些基础功能,以最常见的 Linux Syslog 作为对象,看看如何简单快速地实现对它的采集、加工、查询分析以及可视化。
1320 0