SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
开源应用日志收集系统

    产品数据采集系统

          [Sina 应用开发]项目组
                 2009年9月15
自我介绍
   王春生
       就职于SINA ,LAMP 平台高级架构师
       喜欢mysql、storage、web service等系统架
        构的设计和优化,目前比较关注分布式架构及
        OPENAPI相关
       联系方式:
           msn: vanilla_cn@hotmail.com
           Mail: chunshengster@gmail.com
文档介绍
   介绍本人今年的一个小项目
   从项目的需求出发,经历需求分析、技术
    方向选择、开源软件选型、性能测试、应
    用层协议封装以及最后的系统可靠性跟踪
    验证等过程
需求陈述
   应用项目存在大量接口使用情况,无法深
    入监控
   将服务器上分散存在的各种日志数据(访
    问日志、错误日志、程序跟踪日志、用户
    行为日志等混杂的数据)集中收集汇聚
   ……………………
   需要有一套能够深入到应用程序的系统快
    速收集各种日志
目标
   本系统目标为对上述各种日志进行采集,
    传输,汇集
   支持灵活的策略对日志进行过滤、分离
   针对日志内容进行存储、通知、警报等响
    应
项目范围:

   重点对数据传输层进行服务器选型、功能
    尝试、构想、架构设计、实现
   对数据采集层需求、策略、实现等进行分
    析、尝试,实现简单demo
   对数据存储做简单的策略,方便查询
项目进展
 • 选型和架构设计任务


 • 日志采集器分析及方案设计


 • 日志存储分析及方案设计
项目进展—选型任务
   重点关注三款日志服务器
       Syslog-ng
       Rsyslog
       Scribe server
项目进展—选型任务
   选型标准
       对系统日志的支持(不改变原始系统日志的记
        录方式)
       对PHP及其他应用语言的接口
       对syslog标准的支持(对扩展要求提供保证)
       功能及其扩展性
       性能及其可靠性
       灵活架构
项目进展—SYSLOG-NG
   重点对syslog-ng进行评测
       功能:
           数据接口支持:
               unix-stream
               TCP SSL-TLS (OSE支持TLS)
               Fifo-buffer
           对过滤器,格式化数据,和数据重写的支持
               Filter
               Parse
               Rewrite
项目进展—SYSLOG-NG
    性能
        日志采集层
        日志转发层
        日志存储层
    可靠性
项目进展—SYSLOG-NG
    扩展性(对分布式架构的支持)
        FC 3164中的定义
项目进展—SYSLOG-NG
    扩展性(对分布式架构的支持)
        SYSLOG-NG的扩展性支持
项目进展—SYSLOG-NG
    扩展性(对分布式架构的支持)
        SYSLOG-NG的扩展性支持
项目进展—SYSLOG-NG
    扩展性(对分布式架构的支持)
        SYSLOG-NG的扩展性支持
项目进展—SYSLOG-NG
   至此,结论:
       Syslog-ng基本上能够满足我们对日志记录、
        汇总、过滤、触发等需求
项目进展—其他
   RSYSLOG
   SCRIBE SERVER
选型任务总结及架构设计
   Syslog-ng是一个我们可以更加深入尝试
    的日志服务器,因为:
       Rfc
       Linux系统特性
       过滤器
       触发器
       存储
选型任务总结及架构设计
   结合syslog-ng自身特性及sina网络部署
    的状况,设计了如下结构-平面结构:
选型任务总结及架构设计
   立体部署结构
选型任务总结及架构设计
   该架构的优点
                  数据采集层


        层层控制 角色
                  数据转发层
          清晰


                  中心存储节点
响应策略

                  日志格式统一
        任务明确 稳定
          快速
                  过滤器快速触发
选型及架构设计存在的问题:
   当前问题
       转发层及中心存储节点数据收敛汇聚,解决重
        复数据大量发送的问题
       触发策略的进一步分析和明确
       跨网段可靠性保证 (TLS)
       严重依赖syslog-ng服务,其稳定性和监控措
        施


   其他问题
       ……
项目进展—采集器分析及方案
 • 需求分析-日志归类

 • 消息体格式定义

 • 采集器策略设计

 • 采集器DEMO
• PV日志                 • 调试日志
• 登录日志                 • 队列日志

 采集器分析及方案
• 激活日志                 • 删squid日志
• 上传插件日志               • 成功日志
        统计
     需求分析—日志分类程序跟踪
                  日志
           日志

           用户行为   错误
            日志    日志
• 也可算作                 • 数据库(包括
                       memecache服务器
  统计日志                 )错误
                       • HTTP接口错误
 一种
                       • 应用程序错误
采集器分析及方案
     针对上面各种日志,提取其关键属性:
       级别 时间 产品[模块] 类别 细节描述

       结合RFC3164及RFC5424,我们定义

        出如下日志格式,以满足记录需求:
PRI      TIMESTAMP            HOSTNAME      PRODUC     PROCID
                                            T
                                 Header部份

      MODULE         SUMMAR   DETAIL        FILENAME            LINENO
                        Y
                                  Body部分
采集器分析及方案-策略草案
   结合前面设计的系统架构,设计了如下策
    略草案:
       以级别来命名(七种级别和策略)

           define("LOG_INFO_STORE",1);      //
            信息日志,并转发到中心机
           define("LOG_WARNGING_STORE",2);  //
            警告日志,会发送邮件给相应工程师并转发到中心机
           define("LOG_ERROR_STORE",3); //错误日志
            ,发送邮件,短信给相应工程师并转发到中心机
采集器分析及方案-策略草案
    define("LOG_CRITICAL_STORE",4); //
     严重错误日志,发送邮件,短信给相应工程师,还会
     抄送邮件,发送短信给相应的领导,同时转发到中心
     机
    define("LOG_INFO_TEMP",5);      //
     信息日志,只在中转机上存储一段时间
    define("LOG_WARNGING_TEMP",6);  //
     警告日志,发送邮件给相应工程师,在中转机上存储
     一段时间
    define("LOG_ERROR_TEMP",7);     //
     错误日志,发送邮件,短信给相应工程师,在中转机
     上存储一段时间
采集器分析及方案-How To
采集器分析及方案-How To
   日志服务工作时序图
采集器分析及方案-DEMO
   目前实现了两个php的lib库
       Php4 实现
       Php5-class实现
   如何使用?
       日志记录接口函数:
           Int SinaLog::log(int $level , array $data)
How To—配置
   SinaLog.php文件放入某个产品项目下面
    的固定位置
    <?php
    //必须!产品名称,每个项目使用日志接口文件时必须定义PRODUCT的值
    define("PRODUCT", "blog");
    //可选!当前日志记录是那个模块
    define("MODULE", "default_module");
    //可选!如果日志记录出错,发邮件通知给谁(相关运维人员)
    define("MAIL_TO", "dexin@staff.sina.com.cn");
    ?>
How To—代码模板
//step1:包含
require_once ("../SinaLog.php");
....
//step2:准备数据
$data = array (
   'module' => 'test_module',
   'summary' => 'add data',
   'detail' => 'add some data: $msgstr : to database',
   'filename'=>__FILE__,
   'linenum'=>__LINE__
)
//step3:设置日志记录级别
$level = REALY;
//step4:调用
SinaLog::log($level,$data)
How To—其他样例 1
    只发送到中转机
 $level = RELAY; //或$level = LOG_INFO_TEMP
 $data = array(
          'module'=>'search',
          'summary'=>'user_serarch',
          'detail'=>'$username at time $time
process a search using keyword:$kerword',
          );
$result = SinaLog::log($level, $data);
How To—其他样例 2
   社区搜索产品,记录一些用户的行为日志,
    需要发送到中心服务器:

    $level = LOG_INFO_STORE; //或$level = RELAY
    $data = array('module'=>'search',
          'summary'=>'user_serarch',
          'detail'=>'$username at time $time process
    a search using keyword:$kerword',
          );
    $result = SinaLog::log($level, $data);
How To—其他样例 3
   发送到中心机,并发送邮件,手机短信
    $level = CENTER_MAIL_SMS;//或$level =
                           LOG_ERROR_STORE;
    $data = array('module'=>'comment',
              'summary'=>'add_comment',
              'detail'=>'$username add_commnet to
    article:$articlename failed, could not connect to
    database',
             'filename'=>__FILE__,
             'linenum'=>__LINE__
             );
    $result = SinaLog::log($level, $data);
存储方案的简单设计
   目前对存储的设计相对简单,只考虑文本
    的存储
       数据转发层
       中心存储节点
    目录规则:
        PROJMODULEDATELEVEL
        DATEPROJMODULELEVEL
   转储策略
       数据转发层服务器日志暂存7天,无特殊说明情况下删
        掉
       中心存储节点日志暂存30天,无特殊说明情况下删掉
其他展示-记录后的消息和协议对应
   log消息片段:
    Mar 31 13:59:01 hanyh-laptop
    blog[15029]: postmodule|this is sumarry|
    this is content :It's uid gid bid tid
    loveid|/home/hanyh/workspace/SuperMar
    io/src/t.php|9
其他展示-性能问题
   目前根据压力测试—1w/s
   可靠性监控问题(丢数据):
其他展示-日志统计
回顾&总结:
   对syslog协议的分析寻找技术方向,扩展
    标准协议
   通过对syslog-ng、rsyslog的了解和测试
    选定开源产品
   对扩展后的协议进行应用层封装,便于开
    发工程师使用
   通过适当的系统调试和跟踪记录手段对技
    术的有效性进行验证
Q&A
   ?
谢谢 

Mais conteúdo relacionado

Mais procurados

大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京vanadies10
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙posestudio
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
Single-Page App Development
Single-Page App DevelopmentSingle-Page App Development
Single-Page App Developmentgenify
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护mysqlops
 
数据访问层开发实践
数据访问层开发实践数据访问层开发实践
数据访问层开发实践xcq
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流liu sheng
 
手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享Dahui Feng
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享vanadies10
 
SQL Server效能調校
SQL Server效能調校SQL Server效能調校
SQL Server效能調校國昭 張
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍Leo Zhou
 
Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇小新 制造
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptjames tong
 
Xietingbao-Qcon2011
Xietingbao-Qcon2011Xietingbao-Qcon2011
Xietingbao-Qcon2011Yiwei Ma
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recoveryted-xu
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuningted-xu
 

Mais procurados (18)

大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
Single-Page App Development
Single-Page App DevelopmentSingle-Page App Development
Single-Page App Development
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护
 
数据访问层开发实践
数据访问层开发实践数据访问层开发实践
数据访问层开发实践
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
 
手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享
 
SQL Server效能調校
SQL Server效能調校SQL Server效能調校
SQL Server效能調校
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍
 
DNN
DNNDNN
DNN
 
Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.ppt
 
Xietingbao-Qcon2011
Xietingbao-Qcon2011Xietingbao-Qcon2011
Xietingbao-Qcon2011
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuning
 

Semelhante a 开源应用日志收集系统

Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & developmentXuefeng Zhang
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境drewz lin
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页liu sheng
 
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层yp_fangdong
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumOmni-Alex Chen
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails serverMichael Chen
 
改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能Rack Lin
 
从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计mysqlops
 
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性liu sheng
 
Struts快速学习指南
Struts快速学习指南Struts快速学习指南
Struts快速学习指南yiditushe
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展Sky Jian
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制maclean liu
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统melity78
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon databoxu42
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发mysqlops
 

Semelhante a 开源应用日志收集系统 (20)

Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
 
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 Greenplum
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails server
 
改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能
 
Spark tutorial
Spark tutorialSpark tutorial
Spark tutorial
 
从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计
 
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
 
Struts快速学习指南
Struts快速学习指南Struts快速学习指南
Struts快速学习指南
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon data
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发
 

开源应用日志收集系统

  • 1. 开源应用日志收集系统 产品数据采集系统 [Sina 应用开发]项目组 2009年9月15
  • 2. 自我介绍  王春生  就职于SINA ,LAMP 平台高级架构师  喜欢mysql、storage、web service等系统架 构的设计和优化,目前比较关注分布式架构及 OPENAPI相关  联系方式:  msn: vanilla_cn@hotmail.com  Mail: chunshengster@gmail.com
  • 3. 文档介绍  介绍本人今年的一个小项目  从项目的需求出发,经历需求分析、技术 方向选择、开源软件选型、性能测试、应 用层协议封装以及最后的系统可靠性跟踪 验证等过程
  • 4. 需求陈述  应用项目存在大量接口使用情况,无法深 入监控  将服务器上分散存在的各种日志数据(访 问日志、错误日志、程序跟踪日志、用户 行为日志等混杂的数据)集中收集汇聚  ……………………  需要有一套能够深入到应用程序的系统快 速收集各种日志
  • 5. 目标  本系统目标为对上述各种日志进行采集, 传输,汇集  支持灵活的策略对日志进行过滤、分离  针对日志内容进行存储、通知、警报等响 应
  • 6. 项目范围:  重点对数据传输层进行服务器选型、功能 尝试、构想、架构设计、实现  对数据采集层需求、策略、实现等进行分 析、尝试,实现简单demo  对数据存储做简单的策略,方便查询
  • 7. 项目进展 • 选型和架构设计任务 • 日志采集器分析及方案设计 • 日志存储分析及方案设计
  • 8. 项目进展—选型任务  重点关注三款日志服务器  Syslog-ng  Rsyslog  Scribe server
  • 9. 项目进展—选型任务  选型标准  对系统日志的支持(不改变原始系统日志的记 录方式)  对PHP及其他应用语言的接口  对syslog标准的支持(对扩展要求提供保证)  功能及其扩展性  性能及其可靠性  灵活架构
  • 10. 项目进展—SYSLOG-NG  重点对syslog-ng进行评测  功能:  数据接口支持:  unix-stream  TCP SSL-TLS (OSE支持TLS)  Fifo-buffer  对过滤器,格式化数据,和数据重写的支持  Filter  Parse  Rewrite
  • 11. 项目进展—SYSLOG-NG  性能  日志采集层  日志转发层  日志存储层  可靠性
  • 12. 项目进展—SYSLOG-NG  扩展性(对分布式架构的支持)  FC 3164中的定义
  • 13. 项目进展—SYSLOG-NG  扩展性(对分布式架构的支持)  SYSLOG-NG的扩展性支持
  • 14. 项目进展—SYSLOG-NG  扩展性(对分布式架构的支持)  SYSLOG-NG的扩展性支持
  • 15. 项目进展—SYSLOG-NG  扩展性(对分布式架构的支持)  SYSLOG-NG的扩展性支持
  • 16. 项目进展—SYSLOG-NG  至此,结论:  Syslog-ng基本上能够满足我们对日志记录、 汇总、过滤、触发等需求
  • 17. 项目进展—其他  RSYSLOG  SCRIBE SERVER
  • 18. 选型任务总结及架构设计  Syslog-ng是一个我们可以更加深入尝试 的日志服务器,因为:  Rfc  Linux系统特性  过滤器  触发器  存储
  • 19. 选型任务总结及架构设计  结合syslog-ng自身特性及sina网络部署 的状况,设计了如下结构-平面结构:
  • 21. 选型任务总结及架构设计  该架构的优点 数据采集层 层层控制 角色 数据转发层 清晰 中心存储节点 响应策略 日志格式统一 任务明确 稳定 快速 过滤器快速触发
  • 22. 选型及架构设计存在的问题:  当前问题  转发层及中心存储节点数据收敛汇聚,解决重 复数据大量发送的问题  触发策略的进一步分析和明确  跨网段可靠性保证 (TLS)  严重依赖syslog-ng服务,其稳定性和监控措 施  其他问题  ……
  • 23. 项目进展—采集器分析及方案 • 需求分析-日志归类 • 消息体格式定义 • 采集器策略设计 • 采集器DEMO
  • 24. • PV日志 • 调试日志 • 登录日志 • 队列日志 采集器分析及方案 • 激活日志 • 删squid日志 • 上传插件日志 • 成功日志  统计 需求分析—日志分类程序跟踪 日志 日志 用户行为 错误 日志 日志 • 也可算作 • 数据库(包括 memecache服务器 统计日志 )错误 • HTTP接口错误 一种 • 应用程序错误
  • 25. 采集器分析及方案  针对上面各种日志,提取其关键属性:  级别 时间 产品[模块] 类别 细节描述  结合RFC3164及RFC5424,我们定义 出如下日志格式,以满足记录需求: PRI TIMESTAMP HOSTNAME PRODUC PROCID T Header部份 MODULE SUMMAR DETAIL FILENAME LINENO Y Body部分
  • 26. 采集器分析及方案-策略草案  结合前面设计的系统架构,设计了如下策 略草案:  以级别来命名(七种级别和策略)  define("LOG_INFO_STORE",1); // 信息日志,并转发到中心机  define("LOG_WARNGING_STORE",2); // 警告日志,会发送邮件给相应工程师并转发到中心机  define("LOG_ERROR_STORE",3); //错误日志 ,发送邮件,短信给相应工程师并转发到中心机
  • 27. 采集器分析及方案-策略草案  define("LOG_CRITICAL_STORE",4); // 严重错误日志,发送邮件,短信给相应工程师,还会 抄送邮件,发送短信给相应的领导,同时转发到中心 机  define("LOG_INFO_TEMP",5); // 信息日志,只在中转机上存储一段时间  define("LOG_WARNGING_TEMP",6); // 警告日志,发送邮件给相应工程师,在中转机上存储 一段时间  define("LOG_ERROR_TEMP",7); // 错误日志,发送邮件,短信给相应工程师,在中转机 上存储一段时间
  • 29. 采集器分析及方案-How To  日志服务工作时序图
  • 30. 采集器分析及方案-DEMO  目前实现了两个php的lib库  Php4 实现  Php5-class实现  如何使用?  日志记录接口函数:  Int SinaLog::log(int $level , array $data)
  • 31. How To—配置  SinaLog.php文件放入某个产品项目下面 的固定位置 <?php //必须!产品名称,每个项目使用日志接口文件时必须定义PRODUCT的值 define("PRODUCT", "blog"); //可选!当前日志记录是那个模块 define("MODULE", "default_module"); //可选!如果日志记录出错,发邮件通知给谁(相关运维人员) define("MAIL_TO", "dexin@staff.sina.com.cn"); ?>
  • 32. How To—代码模板 //step1:包含 require_once ("../SinaLog.php"); .... //step2:准备数据 $data = array ( 'module' => 'test_module', 'summary' => 'add data', 'detail' => 'add some data: $msgstr : to database', 'filename'=>__FILE__, 'linenum'=>__LINE__ ) //step3:设置日志记录级别 $level = REALY; //step4:调用 SinaLog::log($level,$data)
  • 33. How To—其他样例 1  只发送到中转机 $level = RELAY; //或$level = LOG_INFO_TEMP $data = array( 'module'=>'search', 'summary'=>'user_serarch', 'detail'=>'$username at time $time process a search using keyword:$kerword', ); $result = SinaLog::log($level, $data);
  • 34. How To—其他样例 2  社区搜索产品,记录一些用户的行为日志, 需要发送到中心服务器: $level = LOG_INFO_STORE; //或$level = RELAY $data = array('module'=>'search', 'summary'=>'user_serarch', 'detail'=>'$username at time $time process a search using keyword:$kerword', ); $result = SinaLog::log($level, $data);
  • 35. How To—其他样例 3  发送到中心机,并发送邮件,手机短信 $level = CENTER_MAIL_SMS;//或$level = LOG_ERROR_STORE; $data = array('module'=>'comment', 'summary'=>'add_comment', 'detail'=>'$username add_commnet to article:$articlename failed, could not connect to database', 'filename'=>__FILE__, 'linenum'=>__LINE__ ); $result = SinaLog::log($level, $data);
  • 36. 存储方案的简单设计  目前对存储的设计相对简单,只考虑文本 的存储  数据转发层  中心存储节点 目录规则: PROJMODULEDATELEVEL DATEPROJMODULELEVEL  转储策略  数据转发层服务器日志暂存7天,无特殊说明情况下删 掉  中心存储节点日志暂存30天,无特殊说明情况下删掉
  • 37. 其他展示-记录后的消息和协议对应  log消息片段: Mar 31 13:59:01 hanyh-laptop blog[15029]: postmodule|this is sumarry| this is content :It's uid gid bid tid loveid|/home/hanyh/workspace/SuperMar io/src/t.php|9
  • 38. 其他展示-性能问题  目前根据压力测试—1w/s  可靠性监控问题(丢数据):
  • 40. 回顾&总结:  对syslog协议的分析寻找技术方向,扩展 标准协议  通过对syslog-ng、rsyslog的了解和测试 选定开源产品  对扩展后的协议进行应用层封装,便于开 发工程师使用  通过适当的系统调试和跟踪记录手段对技 术的有效性进行验证
  • 41. Q&A 