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(

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





