Rails [调查] 关于服务端的 log 的疑问

humiaozuzu · 2014年03月03日 · 最后由 hozaka 回复于 2014年03月22日 · 5758 次阅读

大家能不能分享一下自己的公司怎么做的?

  • 比如手游公司,运营人员要能在 web 中看到用户充值的记录?(某个用户充值后发现钱没有到账,他会去找运营人员)
  • 比如运营想知道最热的商品有哪些,你们是用 log 做的吗?还是在数据库中添加一些项来记录,还是专门用的数据库记录?

大家还可以从下面的方向分享下自己公司的方案,无论是 small 还是 large 的 scale

what to log

  1. nginx/webapp/database 等系统的
  2. 业务和运营相关的日志类似,支付相关的操作/安全相关的操作/用户数据分析的 log

where to log

  • 到文件
  • 到数据库系统中
  • 到日志聚合系统中去

visualization

  • 老板想看看今天用户量(老板用的 ui)
  • 运维想看看今天的 4xx log 有没有人攻击系统(不需要 ui =。=)
  • 后端想看看 5xx log 修 bug(挫一点的 ui)
  • 运营人员想在 web 后台中看到昨天最热的 xxx,然后放进推荐的栏目(比老板用的 ui 挫一点)

我们目前用到的(很简单)

  • 5xx log app 会丢到 sentry 里面
  • 4xx 跑 cronjob
  • google analytics 上面看业务数据

#1 楼 @allenwei logstash + kibana +1,这个组合非常好用,搜索语法也非常易学

#1 楼 @allenwei 恩,有没有类似 Logstash + ES + Kibana 的分享呢?最近这个结局方案听到过很多次了,不过没有看到具体点的使用方案(不仅仅是教你怎么部署) 另外,业务方面的 log 觉得入 ES 应该不太合适吧?

作为 B2C 架构师,负责任的讲,任何涉及财务的操作都要记数据库,并从底层屏蔽删除权限

#3 楼 @humiaozuzu 先装 jvm,然后装 es,然后 logstash,kibana 从 github 上面 clone 下来,是一个 nodejs 程序,拿起跑就是了

#3 楼 @humiaozuzu 没看过类似的文章,都是根据业务配置的 至于存入 ES,具体看你业务,如果要求比较严谨,还是写个离线任务定时同步分析 log,然后像 @swordray 说的存入数据库 目前这套方案是最快速灵活的,Logstash 本身也提供多种输出,比如你可以存到 mongodb

#7 楼 @cassiuschen 感谢,不过我本身就是运维的。我需要的是和业务相关的例子 :)

咦,楼主提的这些基础需求,难道不是开发系统的时候就要纳入的吗?

#9 楼 @kgen 对的,我们目前还是比较小的创业公司,这方面确实不知道如何做,业界也没有看到可以参考的范例

#6 楼 @allenwei 充值过程存入数据库是必须的,要不然过不了上市审计

#7 楼 @cassiuschen 你好,我根据你的这篇文章对 logstash 做的配置,在/etc/logstash/local.conf 中配置完之后,启动 logstash 时报错,说是配置文件错误

Unknown setting 'debug' for stdout {:level=>:error} Unknown setting 'debug_format' for stdout {:level=>:error}

不用比如,楼主应该就是做手机游戏的创业公司吧……好吧我瞎猜的,猜错了莫见怪 ;-)

作为游戏业内人员,可以说这不是一个技术问题,所以直接从运营层面拆分需求,各自用自己的方法去做就好了。以我们的项目举例:

  1. 首先运营需要的数据,就如 4 楼所说,财务数据是必须计入数据库,而且数据粒度非常小,因为有会有审计的需求
  2. 对于创业公司,更建议所有用户的关键行为(功能使用,按钮点击,界面留存/弹出率)都需要记录
  3. 使用单独的日志数据库记录所有信息(我们是用 Oracle 建数据系统)
  4. 运营人员需要从日志数据库查阅单个用户行为数据,审查用户的数据作为操作的依据
  5. 运营统计数据可以通过 crontab 以一定时间间隔统计
  6. 需要阶段性进行大规模数据挖掘的时候,由 DBA 按照统计要求到日志库中筛查汇总
  7. 运维的日志由运维自己的系统和方式去做,怎么方便怎么来
  8. 运行时的异常必须记入日志,并且邮件通知

BTW,求别人肉……

用户关键行为我们用 Google Analytics 或者 Kiss Metric 记录。

#15 楼 @hisea 以前用过 kontagentMixPanel,通用的总是不如定制的

#12 楼 @feichan 诶?莫非 logstash 升级 api 变了?把那句话删了吧反正它是 logstash 自己的日志的内容……or 等我查查它的文档待会回复…

#13 楼 @hozaka 非常感谢。我们仅仅是一般的移动互联网创业公司,不是游戏的 :)

#13 楼 @hozaka 另外多问一下

  1. 财务数据在本身的数据库中是有了的,你说的“计入数据库”指的是计入到统计的数据库?
  2. 关键行为你们都是定制好日志格式记录的对吗?有没有介绍的技术文章
  3. 这里方便说下你们用的什么系统吗?
  4. 统计数据方便说下用的是数据库系统吗?还有可视化用的是?

#20 楼 @humiaozuzu

  1. 不是,在产品库中存详细的交易元数据,财务用独立的统计库,会每天一次从游戏库拉取数据做处理
  2. 每个项目都不同,一般都是沿用厂商自己的设定,必要的时候我们在数据库层面多做一层抽取封装
  3. 产品数据库一般都是 MySQL,数据仓库用的 Oracle,公司自己的数据体系和系统,所以整套都是自己开发的,就是不好用 Orz

#21 楼 @hozaka 在数据库层面多做一层抽取封装具体是什么意思?

#22 楼 @humiaozuzu 就是每个项目的数据库结构是不同的,只是内容有相似性(比如都是订单记录),而我们的系统基于一定的数据结构标准。所以就需要进行一次转换,这个转换在数据库层面进行

需要 登录 后方可回复, 如果你还没有账号请 注册新账号