业务数据分析系统

    由于项目需求,需要将玩家信息从日志中存入到DB中,DB暂选MySQL.

    本文并未使用开源的向fluentd  http://fluentd.org/doc/overview.html一样的系统,我的工作只是日志分析,存入DB,剩下的是开发人员如何展示数据啦。现列出部分脚本,欢迎各位提出意见:

    日志收集脚本(用shell搞定),核心思想是scp,并用cat 合并文件。

    此程序分3个目录,bin目录下可执行脚本collect_log.sh  expect_rsync.sh

    conf 目录,service_server  sync_file  web_server  三个文件存储ip,和文件名称

    data目录 存储收集、合并结果

    expect_rsync.sh  远程传输:

     #!/usr/bin/expect -f

 set host [lindex $argv 0]
    set remote_dir [lindex $argv 1]
    set file [lindex $argv 2]
    set local_dir [lindex $argv 3]
    spawn scp "xxxxxx@$host#36000:$remote_dir/$file" $local_dir
    expect {
        -re "assword:" {
            send "xxxxxx\r"
        } -re "Permission denied, please try again." {
            exit
        } -re "Connection refused" {
            exit
        } timeout {
            exit
        } eof {
            exit
        }
    }
    expect eof
    exit

   collect_log.sh 判断机器和文件名

 #!/bin/bash
WEB_REMOTE_DIR=/data/matrixjoyweb/matrixjoy-dragon-web/logs
SERVICE_REMOTE_DIR=/data/matrixjoyservice/matrixjoy-dragon-gameserver/logs/
SCDIR=/data/log-system/
RAWDATADIR=$SCDIR/data/raw/
LOGDATE=$(date  +%Y%m%d --date="-$1 day")

#transport function
function expect_rsync_logs() {
        /usr/bin/expect -f $SCDIR/bin/expect_rsync.sh $@
}

#mkdir directory
function ensure_dir() {
        if [ ! -d $1 ]
        then
                mkdir -p $1
        fi
}

function  collect() {
        server_list=$1
        remote_dir=$2
        dirtype=$3

        for serverip in $server_list
        do
                store_dir="$RAWDATADIR/$serverip/$dirtype/$LOGDATE"
                ensure_dir  $store_dir  
                for file in $(cat $SCDIR/conf/sync_file)
                do
                        file_name=$file$LOGDATE
                        #Call the funciton to sync file
                        expect_rsync_logs $serverip  $remote_dir $file_name  $store_dir

                done

        done
}

function main() {
        source /etc/profile
        ensure_dir $RAWDATADIR
        IFS="
"
        collect  $(cat $SCDIR/conf/service_server) $SERVICE_REMOTE_DIR service
        collect  $(cat $SCDIR/conf/web_server) $WEB_REMOTE_DIR web
}


#merge log 

function merge() {
        TARGET="$SCDIR/data/total/$LOGDATE"
        server_ip_list=$1
        dir_type=$2
        echo $TARGET
        ensure_dir $TARGET
        for file in $(cat $SCDIR/conf/sync_file)
        do
                file_name=$file$LOGDATE
                for ip in $server_ip_list
                do
                srcdir="$RAWDATADIR/$ip/$dir_type/$LOGDATE"
                cat "$srcdir/$file_name" >> "$TARGET/$file_name"
                done
        done

}

function merge_result() {
        ensure_dir $TARGET
        IFS="
"
        merge $(cat $SCDIR/conf/service_server) service
        merge $(cat $SCDIR/conf/web_server) web 
}

main
merge_result 

     待续。。。

更多相关文章
  • 案例实战餐饮企业分店财务数据分析系统解决方案:系统功能开发
    [案例实战]餐饮企业分店财务数据分析系统解决方案:系统功能开发建设目的某餐饮集团需要将每个分店的财务状况进行分析,目前使用的是excel来存储查看各区域的收入情况,每个区域各年月的收入情况汇总数据都是通过多sheet的方式展示,由于此餐饮集团是一个比较大型的餐饮集团,很多区域都有分店.所以,单是针对 ...
  • 连锁百货企业数据分析系统建设方案
    连锁百货企业数据分析系统建设方案数据系统建设方案FineReport数据系统的总体流程为:整合和获取数据,将数据应用于报表的开发,将开发完的报表进行逻辑展示处理和部署,最后呈现给使用者使用.开发报表的过程中,必须结合企业流程和企业内部的系统数据,进行统一搭建,最终要求开发出一个结合了各个系统数据的报 ...
  • 业务监控系统MEDIVH架构设计和接入方案
    Medivh监控系统- 系统介绍 本系统旨在提供业务监控实时数据和历史数据以及报表.阈值报警.同比增长分析等一体化的历史业务数据解决方案. 技术选型 sdk部门有C#版和java版,api和website采用golang语音开发,数据库采用mysql,数据传输采用socket+http 架构设计 系 ...
  •     业界谈论了很久的BSM概念,却鲜有听到符合国内用户需求的实现BSM的有效方法论或者解决方案.原因何在呢?我认为应该从基础谈起早期的IT管理尚未完成管理筑基,基础技术积累不过关上,有不少厂商在没有实现IT基础设施管理,在IT尚未管好就仓促想"融入"业务,因而造成管理的概念多 ...
  • 大数据分析时代:任何东西都可以是数据
    大数据分析系统最常见的应用是企业业务,但其实它也可以直接应用到一些消费市场.你可曾想过,大数据分析同样可用于体育数据分析.是的,你没有看错,大数据分析也可以应用于幻想体育,一种比以往任何时候都流行的消遣,目前已有参与者已经数百万.据最近的一项调查显示,约25万人今年秋天将会玩梦幻足球联赛,这个新兴的 ...
  • 企业核心竞争能力的提升,需要强壮的运营管理能力,需要及时.准确.全面的业务数据分析作为参考与支撑. 某集团是大型时尚集团,内部报表系统用的QlikView,但是管理分配不够灵活,不能满足数据安全的要求,其次并发数只有10个,仅能满足部分使用者的报表查看需求,所以亟需一个统一的能够集中体现企业运营活动 ...
  • 转载大道至简的数据分析方法论
    http://www.36dsj.com/archives/40569 作者:王桐 永洪科技 副总裁 引言:你有没有觉得学习数据分析方法时很痛苦?本文,笔者用简单易懂的文笔总结出来一套易学易用的数据分析方法论,让初学者快速掌握数据分析方法中最核心.最常用的要点,至少能满足90%的日常需求. 学习对大 ...
  • ASP.NET典型三层架构企业级医药行业ERP系统实战(8大模块22个子系统,价值3000万)课程讲师:Tiger 课程分类:.net 适合人群:高级 课时数量:192课时 更新程度:完毕我这里有一套课程和大家分享,我的qq是2059055336,有兴趣的朋友可以和我聊天.课程说明:国内首部完整讲述 ...
一周排行
  • 缓存:命中率文档命中率字节命中率缓存类型:私有缓存公共缓存内容路由:ICP:互联网缓存协议HTCP:超文本缓存协议Cache Digest:Cache Pre-filling:CARP:缓存阵列路由协议缓存处理的具体 ...
  • 在近几年的信息发展历程中,互联网的全领域渗透方式给更多细分领域带来了新的变革契机,在商业模式和产品创新方面,一些产业开创性地结合了理论与实践的落地行动,从本质上完善了互联网思维模式的植入与应用.在这方面,家电产业的变 ...
  • Cobbler作为一个预备工具,使部署RedHat/Centos/Fedora系统更容易,同时也支持Suse和Debian系统的部署.它提供以下服务集成:* PXE服务支持* DHCP服务管理* DNS服务管理* K ...
  • const的作用:    a.使用习惯,若变量的值不会被修改,则在声明时就应当加上:    b.该关键字可用来修饰变量,函数返回值,形式参数等等,表示不可修改:    c.增加程序的健壮性.如,char* strcp ...
  •     在这个美好一年的开始,在领略了各位讲师和51CTO强大而又自由的后台支撑体系后,我决定在新春到来之际,发出我的声音:入驻这个大家庭.    首先我从事IT行业已经有一段时间,主要涉足软件测试和项目管理以及部分 ...
  • 三次握手tcp是一种面向链接的.可靠的.基于字节流的传输层通信协议,提供可靠的连接服务,采用三次握手确认建立一个连接.位码即tcp标志位,有6种标示:1.SYN(synchronous建立连接)2.ACK(ackno ...
  • jsDate.UTC()与phpstrtotime()生成的时间截不一样
    Difference in UTC date between PHP and Javasc ...
  • 图片文件名调整图标大小
    文件名中的数字越大,图标越小     
  • ubuntu的分辨率只能调到800*600,不能全屏,解决如下: 1.安装VboxLinuxadditionsa)安装make gcc lib等执行指令:------------------------------- ...
  • DHCP 全称 Dynamic Host Configuration Protocol(动态主机分配协议).Dhcp的前身是bootp,BOOTP 最初是用于无磁盘主机连接的网络上面的,BOOTP 可以自动地为那些主 ...