
近期小孩放假在家,发现晚上还抱着平板不放,每天搞到凌晨。这得要劝说有正常的作息时间,少拿平板做与学习无关的事情,但又不能强制拿平板检查看在哪些时间段都在干啥。于是为了搞清楚其凌晨上网都在干啥,我建了一套AI上网行为分析系统,随时收到上网行为的分析报告。
原理很简单,通过Alloy采集路由器的上网行为日志,用Loki进行日志存储,然后通过n8n建立AI分析工作流,通过Loki的API接口定期获取上网行为日志,给AI大模型进行分析整理然后自动将上网行为分析结果整理发邮件出来。
原理图如下:
接下来看如何实现的完整过程。
一、上网行为的日志采集
要采集上网行为的日志,需要在路由器上进行配置,将上网行为的日志通过syslog的方式外发出来。这里可以参考《通过TPLink路由器进行用户行为审计实战》 另外需要有一套日志分析系统进行采集、存储。这里可以参考《Loki+Alloy+Grafana构建轻量级的日志分析系统》
二、上网行为的自动分析
基于前面介绍的采集到的上网行为数据,我们基于n8n来构建利用LLM大模型的分析能力实现上网行为的分析和整理。 关于如何搭建本地的n8n平台可以参考《飞牛NAS本地化部署n8n打造个人AI工作流中心》 整个n8n的工作流如下图所示:
1、获取上网行为的数据(HTTP Request)
n8n提供了Http Request节点,可以很方便的调用Http的API接口获取数据。而Loki也是很贴心的提供Http的API接口进行数据的查询。
n8n的Http Request节点配置如下,通过Get方法调用loki的查询接口地址http://192.168.0.30:3100/loki/api/v1/query_range
,查询条件设置{exporter="OTLP"} != "apptype:网络基础协议"
意思是排除掉apptype:网络基础协议,因为这部分不是用户的上网行为信息。设置查近2个小时的2000条日志信息。因为用的是开源LLM大模型,一次性处理token的数量有限。如果模型能力强可以设置查更多的数据。
点击“Execute step”就可以看到通过loki的API接口查到的上网行为的结果数据。
2、通过AI智能体进行行为分析(AI Agent)
我们要将上网行为的数据交给LLM大模型来进行分析,所以要引入AI智能体的节点。在AI Agent接口,把HTTP Request的结果给AI Agent,然后给出提示词。提示词就是告诉AI大模型要做什么。 我的提示词如下:
“你是一个安全分析专家,根据日志信息能够分析用户的异常行为,请根据得到信息进行用户行为分析,分析发现是否有异常的行为。请特别注意分析凌晨0点至5点时间段,如有用户在此时间段有上网行为,请详细分析在该时间段用了多少时间做了什么。”
在这里我用的大模型是google的Gemini2.5flash。
配置Gemini2.5flash的API key就可以使用了Gemini2.5了。如何白嫖Gemini可以参考《国内免代理免费使用Gemini大模型实战》和《使用Gemini Balance让Gemini免费到底》
当然也可以配置成其他的大模型。
3、整理分析结果(Markdown)
通过Markdown节点将大模型分析出来的结果进行美化整理成HTML的格式
4、自动发邮件报告(Send Mail)
加入自动发邮件的节点,将用户上网行为的分析报告通过邮件的方式发送出来。 配置SMTP account信息。 关于如何配置SMTP 信息可以参考以前的博文《通过Django发送邮件》里面有详细的介绍。
配置邮件的发送者和接收者,邮件主题等信息。
5、配置AI工作流定时启动(Schedule Trigger)
将n8n的工作流配置为Schedule Trigger根据周期定时触发,我这里设置的是每两个小时触发一次。
三、上网行为分析报告及效果
将n8n的工作流激活后,AI用户上网行为分析系统就开始勤勤恳恳的工作了。
每两个小时从路由器获取上网行为的日志,通过大模型进行上网行为的分析,整理后自动发邮件进行报告了。
最后看一下经过大模型分析的上网行为分析报告
也可以配置到网易邮箱大师通过手机收到上网行为分析报告的邮件通知了。
至此,我们通过综合运用alloy+loki构建了日志采集系统采集路由器的用户行为日志,通过n8n构建AI工作流调用Gemini大模型进行用户行为的分析自动发送上网行为的分析报告,构建了自动化的上网行为分析系统。
作者博客:http://xiejava.ishareread.com/
关注:微信公众号,一起学习成长!