业务数据分析系统
2012-10-12 16:10
399 查看
由于项目需求,需要将玩家信息从日志中存入到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
collect_log.sh 判断机器和文件名
待续。。。
本文并未使用开源的向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
待续。。。
相关文章推荐
- 浅谈公司核心业务数据的重构——结合Memcache分析缓存策略与系统数据交互
- 商业智能系统--公司业务、系统执行统计数据和分析
- android 系统数据业务---模式切换分析(上)
- 原因分析如下: 遇到这种情况,很有可能是把一个int型业务数据的 设置setText()或者类似的方法中, 这样Android系统就会主动去资源文件当中寻找, 但是它不是一个资源文件ID, 所
- 【案例实战】餐饮企业分店财务数据分析系统解决方案:业务需求
- 【案例实战】餐饮企业分店财务数据分析系统解决方案:业务需求
- android 系统上做GC双模的---数据业务的处理分析
- 【案例实战】餐饮企业分店财务数据分析系统解决方案:业务需求
- android 系统上做GC双模的---数据业务的处理分析
- android 系统数据业务---模式切换分析(下)
- 浅谈公司核心业务数据表的重构——结合Memcache分析缓存策略与系统数据交互
- 浅谈公司核心业务数据表的重构——结合Memcache分析缓存策略与系统数据交互
- 系统内部矛盾的解决思路 业务查询和后台查询,偏向数据分析
- 研读《基于Hadoop的海量业务数据分析平台的设计与实现》----flume的数据收集系统的设计
- 【案例实战】餐饮企业分店財务数据分析系统解决方式:业务需求
- 工资发放系统,数据分析
- 大数据日志分析系统-介绍 二-整体架构介绍
- Elastic Stack (ELK 5)- 运维数据分析系统
- Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
- 大数据实战:用户流量分析系统