scribeutil.py
#coding=utf-8
#@author: panfei
try:
from scribe import scribe
from thrift.transport import TTransport, TSocket
from thrift.protocol import TBinaryProtocol
SCRIBE_AVAILABLE = True # 检查scribe相关库正常,不要影响业务系统
except ImportError, e:
print e
SCRIBE_AVAILABLE = False
class Singleton(type):
'''this is a meta class for Singleton,just ommit it '''
def __init__(cls, name, bases, dic):
super(Singleton, cls).__init__(name, bases, dic)
cls.instance = None
def __call__(cls, *args, **kwargs):
if cls.instance is None:
cls.instance = super(Singleton, cls).__call__(*args, **kwargs)
return cls.instance
class _Transport(object):
'''
use this class as a raw socket
'''
def __init__(self, host, port, timeout=None, unix_socket=None):
self.host = host
self.port = port
self.timeout = timeout # ms
self._unix_socket = unix_socket
self._socket = TSocket.TSocket(self.host, self.port, self._unix_socket)
self._transport = TTransport.TFramedTransport(self._socket)
def __del__(self):
self._socket.close()
def connect(self):
try:
if self.timeout:
self._socket.settimeout(self.timeout)
if not self._transport.isOpen():
self._transport.open()
else:
pass
except Exception, e:
self.close()
def isOpen(self):
return self._transport.isOpen()
def get_trans(self):
return self._transport
def close(self):
self._transport.close()
import time
class ScribeClient(object):
'''a simple scribe client'''
__metaclass__ = Singleton
def __init__(self, host, port, timeout=None, unix_socket=None):
self._transObj = _Transport(host, port, timeout=timeout, unix_socket=unix_socket)
self._protocol = TBinaryProtocol.TBinaryProtocol(trans=self._transObj.get_trans(), strictRead=False, strictWrite=False)
self.client = scribe.Client(iprot=self._protocol, oprot=self._protocol)
self._transObj.connect()
def log(self, category, message):
'''specify a category and send the message'''
message = time.strftime('%H:%M:%S') + '\t' + message # add timestamp before log
log_entry = scribe.LogEntry(category=category, message=message)
try:
self.client.Log([log_entry])
except Exception, e:
self._transObj.close()
self._transObj.connect()
if self._transObj.isOpen():
self.client.Log([log_entry])
else:
pass
@classmethod
def instance(cls):
'''create a Scribe Client'''
if not hasattr(cls, '_instance'):
cls._instance = cls()
static_api.py
#coding=utf8
import time
from django.conf import settings
from scribeutil import SCRIBE_AVAILABLE # 检查scribe是否可用
from scribeutil import ScribeClient
def scribesender(host, port, category_prefix=None):
scribe_client = ScribeClient(host, port)
def sender(data):
today = time.strftime('%Y-%m-%d')
category = category_prefix + '_' + today if category_prefix else today
scribe_client.log(category, data)
return sender
SCRIBE_SERVER = getattr(settings, 'SCRIBE_SERVER', '127.0.0.1')
SCRIBE_PORT = getattr(settings, 'SCRIBE_PORT', 8250)
CATEGORY_PREFIX = getattr(settings, 'CATEGORY_PREFIX', '')
if SCRIBE_AVAILABLE: # 如果scribe可用,则创建scribe的通道
output = scribesender(SCRIBE_SERVER, SCRIBE_PORT, CATEGORY_PREFIX)
else:
output = None
分享到:
相关推荐
基于日志统计表,可以设置告警规则,当特定条件满足时(如错误数量超过阈值),触发通知,帮助运维人员及时响应问题。 8. 性能优化: 通过对日志的深入分析,可以识别系统瓶颈,优化资源分配,提升系统性能。例如...
基于kafka和spark streaming和hbase的日志统计分析系统.zip基于kafka和spark streaming和hbase的日志统计分析系统.zip基于kafka和spark streaming和hbase的日志统计分析系统.zip基于kafka和spark streaming和hbase的...
基于机器学习的Web日志统计分析与异常检测工具python源码+项目说明.zip 【资源功能介绍】 命令行下的Web日志审计工具,旨在帮助使用者能够在终端上快速得进行Web日志审计和排查,包含了日志审计、统计的终端图形化和...
总结来说,这个"java基于spark streaming和kafka,hbase的日志统计分析系统"是一个集成的解决方案,通过Java编程,利用Kafka收集和分发实时日志,Spark Streaming进行实时处理,最后将结果存储在HBase中,实现了高效...
基于大数据的日志统计分析解决方案.ppt基于大数据的日志统计分析解决方案.ppt基于大数据的日志统计分析解决方案.ppt基于大数据的日志统计分析解决方案.ppt基于大数据的日志统计分析解决方案.ppt
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设...基于spark streaming+kafka+hbase的日志统计分析系统源码+项目说明.zip
PV、UV统计用到的数据文件
本文综述了基于日志数据的分布式软件系统故障诊断的研究现状和关键技术。随着智能化技术的发展,特别是在智能运维(AIOps)领域,日志数据的故障诊断技术逐渐成为学术界和工业界研究的热点。日志数据作为软件运行...
标题中的“一款基于机器学习的Web日志统计分析与异常检测命令行工具”指的是一个专门设计用于处理Web服务器日志的软件,它利用了机器学习技术来实现对日志数据的统计分析和异常检测。这样的工具对于网络安全和网站...
【作品名称】:基于机器学习的Web日志统计分析与异常检测命令行工具 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...
针对这些问题,2013年,引入了基于Hadoop的日志统计平台,将开发周期从天级缩短到分钟级,运行时间也从小时级提升至分钟级,极大地提升了效率。然而,随着计算资源的需求激增,数据质量问题凸显,数据的价值并未得到...
2. **基于日志数据的异常检测**:常用的方法有统计模型(如滑动窗口统计)、聚类分析、时间序列异常检测算法以及基于深度学习的序列模式分析。这些方法可以检测出与正常模式显著偏离的行为。 3. **基于日志数据的...
钉钉工作日志填写示例: 1. 新增用户功能开发#用户管理项目#(4H) 2. Token调用规则讨论#XX项目#(1H) 3. 协助XX部门解决客户的问题#部门间协助#(2H) 4. 给北京代理商带来的客户讲解XX产品#产品讲解#(1H)
基于Hadoop网站流量日志数据分析系统项目源码+教程.zip网站流量日志数据分析系统 典型的离线流数据分析系统 技术分析 hadoop nginx flume hive sqoop mysql springboot+mybatisplus+vcharts 基于Hadoop网站流量日志...
【IIS日志分析工具】是一款基于ASP.NET技术开发的应用,专门用于对IIS服务器的日志数据进行深度分析。在互联网服务中,IIS(Internet Information Services)是微软提供的一个强大的Web服务器,它记录了服务器上的...
基于Hive的搜狗日志分析 本文档主要介绍了基于Hive的搜狗日志分析的整个过程,从数据预处理、构建数据仓库、数据分析到其他数据操作等方面进行了详细的介绍。 一、 数据预处理 数据预处理是整个日志分析的第一步...
总结,基于Hadoop的Web日志分析是一个复杂而重要的过程,涵盖了数据预处理、统计分析、结果导出和数据可视化等多个环节。通过对这些知识点的深入理解和应用,可以有效地利用Web日志数据,提升网站运营效率和用户体验...