V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nonesuccess
V2EX  ›  程序员

关于项目运行期间的项目状态监控、日志搜集、汇总,大家有什么好办法吗?

  •  
  •   nonesuccess · 2016-08-13 21:06:40 +08:00 · 3790 次点击
    这是一个创建于 3018 天前的主题,其中的信息可能已经有所发展或是发生改变。

    技术栈是 java web 的。项目中有各种各样需要的东西。说结构化肯定算不上,完全按照非结构化去处理,也不能满足要求,不知道这样说能不能理解。

    比如某用户登录时,打了一条日志,该有的信息都打进去了,但是是个非结构化的字符串。

    可能某天想统计用户登录情况,面对一堆堆的日志,很难去找到想要的信息。

    又比如项目会有一些夜里运行的批量任务,现在运行情况也是随手扔到日志里,突然有一天发现问题的时候,想统计近期两个月的运行情况,也非常困难。

    而且这些内容最好能让非技术人员能看懂,并做初步的处理。

    这种类似的需求有十几个甚至几十个,也许执行一段时间之后就不需要了。如果每个都去建表写功能的话,工作量是一方面,感觉多了一些这样的东西,对项目复杂度的控制也不太好,不知道大家有没有什么好主意。

    另外,求一个类似这样的日志工具:载入日志文件后,能按一定规则把用户分条显示出来,并且可以按照关键字做筛选,比如所有 INFO 级别的包含 id=xxxx 字样的日志。

    21 条回复    2016-08-14 11:34:05 +08:00
    yelite
        1
    yelite  
       2016-08-13 21:28:59 +08:00 via iPhone
    elasticsearch kibana logstash
    defunct9
        2
    defunct9  
       2016-08-13 21:39:12 +08:00 via iPhone
    elk 是不适合的,尤其是 java 抛出大段错误的时候,你让程序猿点几十下看错误,崩溃了
    nonesuccess
        3
    nonesuccess  
    OP
       2016-08-13 22:14:38 +08:00
    @defunct9 对,最好是能按照 INFO 、 ERROR 这些级别划分的
    hustlike
        4
    hustlike  
       2016-08-13 22:17:01 +08:00
    ELK 是没那么好用的。楼主下个 splunk 装一下。免费版每天 500m 数据,对你来说完全够用。结构化和非结构化都可以处理。你试完会回来感谢我的。
    defunct9
        5
    defunct9  
       2016-08-13 22:19:09 +08:00 via iPhone
    没办法,以前是用 rsyslog 推送日志到 elk 。结果文本一行就是一条记录。完全无法观看撒,放弃
    hustlike
        6
    hustlike  
       2016-08-13 22:22:41 +08:00
    @defunct9 大哥,推荐你也试一下 splunk 。实时日志索引,告警,可视化等都不是 elk 能比的。
    slixurd
        7
    slixurd  
       2016-08-13 22:24:30 +08:00
    不会用 ELK 也能说 ELK 不合适..
    defunct9
        8
    defunct9  
       2016-08-13 22:41:28 +08:00 via iPhone
    最先用的就是 splunk 。数据量大了,无法使用才换的 elk 。
    defunct9
        9
    defunct9  
       2016-08-13 22:53:14 +08:00 via iPhone
    @slixurd 请教了,我们是 tomcat 日志扔到 catalina.out ,如何才能让程序猿像 tail -f 一样在 elk 里查看上下文相关的一片日志,而不是每行都是一条记录,需要一条一条点开看
    alexapollo
        10
    alexapollo  
       2016-08-13 22:55:34 +08:00
    各个公司大多是自己造的轮子吧
    iyaozhen
        11
    iyaozhen  
       2016-08-13 23:03:46 +08:00 via Android
    还是用 elk 吧。很容易快速上手

    不推荐自己造轮子,太痛苦了,各种问题要解决。
    slixurd
        12
    slixurd  
       2016-08-13 23:06:04 +08:00
    @defunct9 最简单的方式就是存个自增 id 然后取这个 id 前后的一段记录。
    在 ELK 外面套层轮子很是很正常的处理方式
    cqcn1991
        13
    cqcn1991  
       2016-08-13 23:06:41 +08:00
    OneAPM? New Relic?
    mml
        14
    mml  
       2016-08-13 23:47:30 +08:00
    elk 和 graylog 都用过,没加其他轮子,我觉得,使用起来非常糟糕。特别是你这需求还要给非技术人员用。
    letitbesqzr
        15
    letitbesqzr  
       2016-08-13 23:50:43 +08:00   ❤️ 1
    @defunct9 谁说需要一条条看的..
    atpking
        16
    atpking  
       2016-08-14 00:24:52 +08:00
    @defunct9 splunk 好贵的说
    fatpa
        17
    fatpa  
       2016-08-14 01:10:53 +08:00
    将同类的服务日志打到一文件里面,前面加个 tag ,有 flume 之类的根据 tag 采到不同的 channel 然后入库
    defunct9
        18
    defunct9  
       2016-08-14 07:10:19 +08:00 via iPhone
    @letitbesqzr ?这个就是一条撒,再长点,从错误开始,到错误结束, 7 、 8 条跟你这样一样的合起来看。想要这种效果
    defunct9
        19
    defunct9  
       2016-08-14 07:19:26 +08:00 via iPhone
    用 rsyslog 扔到集中的 syslog-ng 中分别保存,用 Log.io 实时看。我们是这样搞法,很土炮
    defunct9
        20
    defunct9  
       2016-08-14 07:20:24 +08:00 via iPhone
    跑题了,跑到如何实时看集群日志了
    HunterPan
        21
    HunterPan  
       2016-08-14 11:34:05 +08:00
    调用链日志开发 确实是很难的.
    还是推荐 flume+kafak+(spark)storm 之类的,然后选择合适的存储引起,例如 es...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5542 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:00 · PVG 14:00 · LAX 22:00 · JFK 01:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.