GrayLog+nxlog采集邮箱登录日志csv文件并实现邮箱异地登录钉钉机器人告警

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: GrayLog+nxlog采集邮箱登录日志csv文件并实现邮箱异地登录钉钉机器人告警

场景如下


某厂商邮箱的登录日志为xlsx/csv格式

只有如下四个字段 登录时间,邮箱地址,登录IP,登录方式

87b816f4f76eb08f7ffe7d844ae60595.png

(图片可点击放大查看)


想要根据邮箱地址关联出员工姓名,工号等相关

并且GeoIP地址库根据IP地址查询登录IP所在地理位置信息

比如登录的IP地理位置是非国内地址时实现钉钉机器人告警


实现思路及实践参考链接


1、csv是否可以转成sylog格式的日志发到GrayLog


解决办法:nxlog xm_csv功能


方法来源链接地址:


https://nxlog.co/question/6063/nxlog-read-multiple-csv-files-and-send-it-siem
https://gitlab.com/nxlog-public/contrib/-/blob/master/guide_configs/xm_gelf_example_csv-nxlog.conf

835bd3f7e2dc039af89385c718e51423.png

(图片可点击放大查看)


2、利用GrayLog的lookup table+pipeline处理功能进行关联查询,实现关联出员工工号,员工姓名等其他字段


解决办法:这个之前有实现过,移植过来即可


3、GrayLog告警+PrometheusAlert告警模板实现钉钉告警时呈现出相关告警字段


解决办法:这个之前有实现过,告警模板修改即可


具体实现的详细步骤如下


1、GrayLog服务器安装nxlog-ce并配置读取csv文件


yum localinstall nxlog-ce-2.11.2190-1_rhel7.x86_64.rpm 
cp /etc/nxlog.conf /etc/nxlog.conf_bak
echo > /etc/nxlog.conf
vi /etc/nxlog.conf

修改为如下内容


## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally under
## /usr/share/doc/nxlog-ce/ and is also available online at
## http://nxlog.org/docs
########################################
# Global directives                    #
########################################
User nxlog
Group nxlog
LogFile /var/log/nxlog/nxlog.log
LogLevel INFO
########################################
# Modules                              #
########################################
<Extension _syslog>
    Module      xm_syslog
</Extension>
<Extension gelf>
    Module      xm_gelf
</Extension>
<Extension charconv>
    Module              xm_charconv
    AutodetectCharsets  gbk,utf-8, euc-jp, utf-16, utf-32, iso8859-2
</Extension>
<Extension csv>
    Module      xm_csv
    Fields      $time, $email_address, $loginIP, $method
    FieldTypes  string, string, string,string
    Delimiter   ,
</Extension>
<Input file>
    Module      im_file
    File        "/home/nxlog/login.csv"
    Exec        csv->parse_csv();
</Input>
<Output udp>
    Module      om_udp
    Host        192.168.31.230
    Port        12201
    OutputType  GELF_UDP
</Output>
<Route csv_to_gelf>
    Path        file => udp
</Route>

45e5474b95769b908eb7f914291c67ef.png

(图片可点击放大查看)


启动nxlog服务


cd /home/
mkdir nxlog
chown -R nxlog:nxlog nxlog/
cd nxlog
rz上传邮件登录日志的csv文件
chown -R nxlog:nxlog login.csv 
chmod 777 login.csv 
firewall-cmd --add-port=12201/udp --permanent 
firewall-cmd --reload
systemctl restart nxlog
systemctl enable nxlog
如果有报错排查nxlog的运行日志
tail -f /var/log/nxlog/nxlog.log


说明:只有csv文件发生变化时才会产生日志


2、GrayLog配置GELF INPUT用于接收日志


c596e6b9ca305acbbc114106f0655139.png

(图片可点击放大查看)

0b6f5b43aead231bc17b1fa81af0cbf4.png

(图片可点击放大查看)


并配置相应的Stream

9a702f14a0b7cb7c11b8f77ff980f426.png

(图片可点击放大查看)


3、配置LookupTable和Pipeline


LookupTable配置过程及相关csv文件截图如下

1c5073e31e737dcc114a52b1174925b9.png

(图片可点击放大查看)

ca55402296edef0c32d4dd15d99e682a.png

(图片可点击放大查看)

d61fb8ef5689cfb1d8089cbdb065e52b.png

(图片可点击放大查看)


pipeline规则语法如下


rule "email2username_lookup_table"
when 
  //  true
   has_field("email_address") AND
   is_not_null(lookup_value("email2username",to_string($message.email_address)))
then 
    let email_addresslookup_multivalue = lookup("email2username",to_string($message.email_address));
    let email_addressmultivalue = split("#",to_string(email_addresslookup_multivalue.value));
    set_field("Employee_Username",to_string(email_addressmultivalue[0]));
    //debug($message.Employee_Username);
    set_field("Employee_Mobile",to_string(email_addressmultivalue[1]));
     //debug($message.Employee_Mobie);
    set_field("Employee_alias_emailaddress",to_string(email_addressmultivalue[2]));
    //debug($message.Employee_alias_emailaddress);
     set_field("Employee_ID",to_string(email_addressmultivalue[3]));
     //debug($message.Employee_ID);
end

129251597cde8c8ff985e5ce52edb2c5.png

(图片可点击放大查看)


pipeline的配置,并应用到对应的Stream中



9975f7d122707c3b7ea4adca672e4a14.png

(图片可点击放大查看)


4、日志查询效果如下


可以看到关联查询出来的字段都出来了


403cc54b9c88a7093fdac7f90059a087.png

(图片可点击放大查看)


5、配置并优化PrometheusAlert告警模板

640.png

(图片可点击放大查看)


6、GraylogAlert告警条件配置

640.png

(图片可点击放大查看)

640.png

(图片可点击放大查看)

640.png

(图片可点击放大查看)


7、最终的告警效果如下

640.png

(图片可点击放大查看)


8、总结


当然这个只是简单的功能实现的测试过程还有很多细节问题需要考虑


例如由于csv文件是一次性导入,这样会出现瞬间钉钉机器人告警数量过大,触发1分钟20条的阈值,导致告警不再产生的情况


需要用一种方式每几秒读几行csv日志文件的方式避免一次性导入造成日志量过大告警停止的问题


这个应该好实现,后续再优化

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9月前
|
安全 机器人 API
简单几步,钉钉机器人秒变通义千问对话机器人
通过阿里云计算巢AppFlow平台,无需编码,只需简单几步,即可将钉钉机器人转化为通义千问对话机器人。首先在灵积模型服务平台获取API Key,然后在AppFlow中配置连接器,授权并保存Webhook Url。在钉钉中创建自定义机器人,选择Outgoing功能,填写签名和Webhook地址。最后,@机器人即可开始对话。此外,还提供了通过钉钉开放平台创建机器人的步骤。AppFlow简化了集成过程,加速了企业自动化服务流程。
|
1月前
|
存储 移动开发 程序员
alist对接钉钉sso登录
本文介绍了如何将Alist与钉钉SSO登录对接。Alist是一个基于Go语言开发的文件管理程序,支持多平台和多种存储方式。通过设置自定义头部、配置钉钉开放平台应用及回调参数,并获取Client ID和Client Secret,可实现钉钉SSO登录功能。最后根据需求配置用户权限,默认权限值可通过相加不同权限数字获得。成品展示了一个美观且实用的文件管理系统。
118 8
alist对接钉钉sso登录
|
3月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
117 1
|
6月前
|
监控 机器人 Shell
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
231 1
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
|
7月前
|
存储 NoSQL 中间件
【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
在当今的数字化时代,用户认证是任何在线服务安全性的基石。本文将简明扼要地介绍登录注册流程中的核心概念:HTTP无状态性、Session、Token与JWT,并详细阐述两种实用登录方式—— 手机号登录验证(借助容联云/云通讯服务) 与钉钉第三方登录。我们将探讨这些概念的基本原理,并深入解析两种登录方式的实现流程,旨在帮助开发者提升用户认证的安全性与便捷性。
【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
|
6月前
|
JSON 机器人 Go
go接收alertmanager告警并发送钉钉
go接收alertmanager告警并发送钉钉
|
6月前
|
存储 Prometheus Cloud Native
[prometheus]配置alertmanager和钉钉告警
[prometheus]配置alertmanager和钉钉告警
306 0
|
8月前
|
数据管理 机器人 BI
数据管理DMS产品使用合集之如何让报表自动更新推送到钉钉机器人
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
117 3
|
8月前
|
运维 机器人 开发者
使用阿里云百炼通过appflow模板,组合钉钉机器人搭建个人知识库评测与感想
尝试构建个人助手机制,用阿里云百炼+AppFlow+钉钉机器人,花费两午休时间解决配置问题。百炼appid复制时多出空格致错,文档未提及,耗时排查。应用创建时模型选项限于max, plus, turbo,性价比高的qwen-long未上线。期望尽快修复bug和上线新模型以降低成本。附故障排查截图。
315 1
|
8月前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之sls日志告警调用函数计算,出现抛出的结果异常,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。