Structured Streaming编程练习-日志分析

本文介绍如何使用Spark Streaming处理Syslog日志,包括统计特定进程日志数量、按时间窗口汇总不同进程日志及筛选错误日志。通过Python脚本实现对日志的实时收集与分析。

Syslog日志内一般包括产生日志的时间、主机名、程序模块、进程名、进程ID、严重性和日志内容。日志一般会通过Kafka等有容错保障的源发送,本实验为了简化,直接将Syslog通过Socket源发送。新建一个终端,执行如下命令:$tail -n+1 -f /var/log/syslog | nc -lk 9988“tail -n+1 -f /var/log/syslog”表示从第一行开始打印文件syslog的内容。“-f”表示如果文件有增加则持续输出最新的内容。然后,通过管道把文件内容发送到nc程序(nc程序可以进一步把数据发送给Spark)

对Syslog进行查询由Spark接收nc程序发送过来的日志信息,然后完成以下任务:

(1)统计CRON这个进程每小时生成的日志数,并以时间顺序排列,水印设置为1分钟
(2)统计每小时的每个进程或者服务分别产生的日志总数,水印设置为1分钟。
(3)输出所有日志内容带error的日志。

ps:基于pyspark

新建python脚本test.py如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from functools import partial

from pyspark.sql import SparkSession
from pyspark.sql.functions import *

if __name__ == "__main__":
    spark = SparkSession.builder.appName("syslog_ouput").getOrCreate()
    spark.sparkContext.setLogLevel('WARN')
    lines = spark.readStream.format(
根据厦门大学林子雨课后题完成以下头歌练习编程要求 打开右侧代码文件窗口,在 Begin 至 End 区域补充代码,完成任务。 监听本地端口 8888,其中保存了系统相关的日志信息,每行的数据如下所示: Nov 24 13:17:01 spark CRON[18455]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) 最前面的为时间(年份为 2019),接着是主机名,进程名,可选的进程 ID,冒号后是日志内容。 统计 CRON 这个进程每小时生成的日志数,将结果输出到控制台,并设置不截断输出内容。水印设置为 1 分钟,将程序最长等待时间设置为 70 秒。 输出示例如下: +------------------------------------------+-----+ |window |count| +------------------------------------------+-----+ |[2019-11-24 13:00:00, 2019-11-24 14:00:00]|111 | +------------------------------------------+-----+ 测试说明 平台将对你编写的代码进行评测,如果与预期结果一致,则通关,否则测试失败。from functools import partial from pyspark.sql import SparkSession from pyspark.sql.functions import * ################ Begin ################ # 创建SparkSession # 读取实时数据 # 定义一个偏应用函数,从固定的 pattern 获取日志内匹配的字段 # 统计 CRON 这个进程每小时生成的日志数,并以时间顺序排列,水印设置为 1 分钟 # 开始运行查询并在控制台输出 # 设置最长等待时长 ################ End ################
最新发布
06-13
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值