业务数据分析系统

    由于项目需求,需要将玩家信息从日志中存入到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,有兴趣的朋友可以和我聊天.课程说明:国内首部完整讲述 ...
一周排行
  • 前端工作一年了,期间由于工作需要,也做了一些产品的设计,因为自己的目标就是做编程,所以婉拒了与产品相关的一些任务,打算主要把精力放到编程这方面. PS:2015年1月进军编程行业. 废话不多讲,这一年页面改版了N次, ...
  • 部署两节点cassandra集群确保系统已安装jdk,可不配置JAVA环境变量cassandra版本:apache-cassandra-1.1.5jdk版本:jdk1.6.0_381.cassandra 日志路径#v ...
  •  package com.hanchao.test;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File ...
  • 需求:读取指定目录下的文件名和目录名 实现如下: package com.test.common.util; import java.io.File; public class ReadFile { /* * 读取指 ...
  • Duke大学富卡商学院(Fuqua school of business)的高级选修课. 全名:Statistical forecasting: notes on regression and time series ...
  • 有时我们需要为在线系统添加热插拔的SCSI硬盘,此时我们不能停机,可以以下指令将新的硬盘加入系统中# echo "scsi add-single-device 0 0 1 0" > /pro ...
  • 先使用 date -s 10/17/2008 修改日期然后 date -s 3 修改时间clock -w 写入bios
  • sqoop导出hive数据到oracle
    利用sqoop将hive中的数据导入到oracle中 1.根据hive表结构,在oracl ...
  • package study; import java.util.Scanner; public class ATM {          private static int[] users = { 111111, ...
  • // _webView = [[UIWebView alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 0)]; _webView.d ...