• 请不要在回答技术问题时复制粘贴 AI 生成的内容
steelshadow39
V2EX  ›  程序员

业务系统日志存储选型讨论

  •  
  •   steelshadow39 · Nov 21, 2023 · 8660 views
    This topic created in 1089 days ago, the information mentioned may be changed or developed.

    本人学生,最近项目在讨论日志存储的选型,后端是 springboot ,日志格式为 JSON ,组内有人提议使用 MYSQL 存储日志(因为系统体量不是特别大),我选的是 graylog (存储用的是 elasticsearch ,比 ELK 更轻量)。我觉得无论日志量大小,elasticsearch 的检索和日志处理都要比单纯用 MYSQL 强很多,用 MYSQL varchar 存 JSON ,查询出来还要解析,效率也太低了。并且处理日志本来就是 elasticsearch 的强项。

    想请教各位前辈,公司开发在日志这块一般是怎么处理的,感谢各位前辈指点。

    Supplement 1  ·  Nov 22, 2023
    现在架构想法是:子模块还要自己维护一个子日志库,同时所有组还要给上传给总的日志库,如果我用 graylog ,es 存储的话,也就意味着各个子模块的开发也要用 es ,对于学生来说存在学习成本,所以其他人提议使用 MySQL 存
    72 replies  •  2023-11-25 21:57:52 +08:00
    ccde8259
    ccde8259
    Nov 21, 2023
    1
    选不如买……
    iomect
    iomect
    Nov 21, 2023
    2
    我们用的 Mongo
    steelshadow39
    steelshadow39
    OP
    Nov 21, 2023
    3
    @ccde8259 学校项目,都是学生自己开发,没法买
    liuhan907
    liuhan907
    Nov 21, 2023
    4
    我们用 loki ,便宜
    steelshadow39
    steelshadow39
    OP
    Nov 21, 2023
    5
    @liuhan907 公司一般都是买吗?我以为都是自己搭的
    liuhan907
    liuhan907
    Nov 21, 2023
    6
    自己搭的
    nosilence
    nosilence
    Nov 22, 2023
    7
    从预估的日志量去选型
    coolcoffee
    coolcoffee
    Nov 22, 2023
    8
    elasticsearch+kibana 组合的全文搜索和索引条件搜索好用程度远超过 loki + grafana 。

    有钱 ELK ,没钱 Loki 。
    silvernoo
    silvernoo
    Nov 22, 2023
    9
    rsyslog
    bololobo
    bololobo
    Nov 22, 2023
    10
    mysql 现在支持 JSON 格式了
    xuanbg
    xuanbg
    Nov 22, 2023
    11
    业务日志还是 mysql 吧,7.6 就支持 json 了。
    tramm
    tramm
    Nov 22, 2023
    12
    现在用的 ELK. 但是占用有点高.
    我测试服务器上 docker 装了个 Loki,OpenObserve. 最终选择了 OpenObserve 记录一些以前未接入 ELK 的系统的日志(SpringBoot 本地日志通过 FluentBit 采集).
    yazinnnn0
    yazinnnn0
    Nov 22, 2023
    13
    graylog 是正经日志方案, 你是对的
    zed1018
    zed1018
    Nov 22, 2023
    14
    loki + minio
    lff0305
    lff0305
    Nov 22, 2023
    15
    如果不想花钱,存储用 ES 或者 Loki ,日志采集可以选用 Fluentbit/Fluentd ,Promtail ,或者直接代码里 POST Rest 过去
    面板选择很多,Grafana ,Kibana ,等等
    如果愿意花钱的选择就更多了,Datadog ,Splunk ,绝对要不不花钱的好用的多,一分钱一分货
    gabon
    gabon
    Nov 22, 2023 via iPhone
    16
    clickhouse
    levelworm
    levelworm
    Nov 22, 2023 via Android
    17
    不花钱 sqlite 不就行了。量不大 txt 也没啥问题。。。
    Aresxue
    Aresxue
    Nov 22, 2023
    18
    fluentbit + ELK, 这个是最流行的商业级方案,小项目就存文件算了吧,切好片做好格式等日志规范是最实用的,出于学习目的就上 loki
    root71370
    root71370
    Nov 22, 2023
    19
    clickhouse + iLogtail + clickVisual
    存储 收集 展示
    Insa
    Insa
    Nov 22, 2023
    20
    loki 不行,几千万条日志搜索就会超时
    FanError
    FanError
    Nov 22, 2023
    21
    现在学生做项目架构整这么复杂了吗?
    brom111
    brom111
    Nov 22, 2023
    22
    有钱就选云服务,比如阿里的 sls 。没钱就 loki 和 es 2 选一,看你对日志的需求。 mysql 存储都是扯淡。
    aboutyang
    aboutyang
    Nov 22, 2023
    23
    @lff0305 有 metrics 和 alarm 的方案吗?
    1QwQ1
    1QwQ1
    Nov 22, 2023❤️1
    24
    从压缩比来说 mongo 和 elk 、clickhouse 都可以。但是从日志类型、相关工具来看 elk 周边更丰富些,其次是 mongo 最后是 clickhouse 。当然从管理这些集群的角度来说,可能是 mongo 复制集相对于 elk 集群和 ck 集群简单些。所以考虑都是要全面一点,选型也是项系统工程。
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    Nov 22, 2023❤️2
    25
    等你们 awk 搞不定了再来搞这些玩意不迟
    Frankcox
    Frankcox
    Nov 22, 2023
    26
    elasticsearch+kibana
    数据库的话是 clickhouse
    victorc
    victorc
    Nov 22, 2023
    27
    就你们这个小 case ,用 graylog 就行了

    数据库跑日志分析也行,但是万万不能用 mysql ,选了这个,防不住某个 2b 就把日志放进业务数据库,这就要搞砸了
    levelworm
    levelworm
    Nov 22, 2023 via Android
    28
    @liprais 是啊我觉得还是简单点好。sed, awk 搞搞看,要不就 sqlite ,怎么也够了。
    hzfyjgw
    hzfyjgw
    Nov 22, 2023
    29
    Parseable
    hzfyjgw
    hzfyjgw
    Nov 22, 2023
    30
    Parseable + Vector
    4kingRAS
    4kingRAS
    Nov 22, 2023
    31
    量小 ELK ,量大 Cassandra ,Hive
    lkkl007
    lkkl007
    Nov 22, 2023
    32
    clickhouse 完胜
    Betsy
    Betsy
    Nov 22, 2023 via iPhone
    33
    学生+小项目,存到 MySQL 就行。ES 是强,但是也意味着要投人维护一个新的重量级的组件,有种杀鸡用牛刀的感觉…
    julyclyde
    julyclyde
    Nov 22, 2023
    35
    @Betsy 那改成 zincsearch 算了,不重量
    steelshadow39
    steelshadow39
    OP
    Nov 22, 2023
    36
    @Betsy 也不算是小项目,我研究生,导师接的国家级项目,我是主要开发
    steelshadow39
    steelshadow39
    OP
    Nov 22, 2023
    37
    现在架构想法是:子模块还要自己维护一个子日志库,同时所有组还要给上传给总的日志库,如果我用 graylog ,es 存储的话,也就意味着各个子模块的开发也要用 es ,对于学生来说存在学习成本,所以其他人提议使用 MySQL 存
    stephenxiaxy
    stephenxiaxy
    Nov 22, 2023
    38
    vector+clickhouse
    fatyoung
    fatyoung
    Nov 22, 2023
    39
    @steelshadow39 #37 你提供一个公共的 API (查询日志,写入日志)出来,其他人直接调用,可以省去其他人的学习成本
    Huelse
    Huelse
    Nov 22, 2023❤️1
    40
    前期可以直接用 MySQL/Postgresql 存,遇到需求了再从数据库发到 ES 检索,这种功能没必要提前优化
    dedemao
    dedemao
    Nov 22, 2023
    41
    先用 MySQL 存吧,遇到问题了再换也不迟
    steelshadow39
    steelshadow39
    OP
    Nov 22, 2023 via Android
    42
    @fatyoung 这是不是相当于我把 es 的 CRUD API 自己实现了一遍?我现在是通过配置 logback ,GELF UDP 发到 graylog ,这样是实时发送吧。如果用 API 的话,是不是只能定期上传,做不到实时吧,实时是否意味着要一直调 API
    Rorysky
    Rorysky
    Nov 22, 2023
    43
    直接写文件
    zhaohua
    zhaohua
    Nov 22, 2023
    44
    阿里云的 sls 非常便宜,小公司一年也就几百块钱顶天了.
    aaronkk
    aaronkk
    Nov 22, 2023
    45
    VictoriaLogs 看一下
    牛吹得很大,号称比 es 大幅节省成本,号称比 loki 快,号称比 clickhouse 易用
    wwwz
    wwwz
    Nov 22, 2023❤️1
    46
    如果都用 springboot
    日志生成用 logback 等生成格式相同的日志文件,这一步为止都是没有学习成本的

    再考虑采集加工储存查询使用什么,多台服务器采集可以搭集群然后集中管理
    ELK 资源耗用比较多,LOKI 轻量一点
    graylog 没用过不评价
    steelshadow39
    steelshadow39
    OP
    Nov 22, 2023 via Android
    47
    @wwwz 日志上传好像是无回执,就是没有返回值,所以别人可能不知道自己上传是否成功,还得简单学一下 es API
    julyclyde
    julyclyde
    Nov 22, 2023
    48
    @steelshadow39 导师的渠道搞来的国家级项目啊?那随便写写就行了
    Jat001
    Jat001
    Nov 22, 2023
    49
    选型最忌讳的就是搞一个所有人都没用过的超复杂工具,特别是那些配置复杂的分布式项目,谁去部署谁未来就是救火队员。我还见过日志存文件,自己写 api 查询的呢,又不是不能用😅
    steelshadow39
    steelshadow39
    OP
    Nov 22, 2023
    50
    @Jat001 嗯,这确实是我的错误,想选一个功能对口的组件,没太考虑学习成本
    Betsy
    Betsy
    Nov 22, 2023 via iPhone❤️1
    51
    @julyclyde 我的出发点是系统本身用的是 MySQL ,没有必要额外引入一个新的组件增加维护成本。所以换个代码更少依赖更少的组件,本质上还是需要新增人来维护,徒增烦恼。
    onceMore
    onceMore
    Nov 22, 2023
    52
    日志先全部存文件,效率比较高,后面做检索可以落地到 MySQL 、ES 加钱用服务都方便
    Betsy
    Betsy
    Nov 22, 2023 via iPhone
    53
    @steelshadow39 这样啊,你的初衷是快速完成这个项目?还是想学习点新的东西?还有这个项目有没有亮点?能不能放到你未来校招的简历上?如果真的普普通通毫不起眼,你将来还指望找个不错的工作,那么请务必力推 ES ,一套完整的日志系统也足够校招吹牛批了。如果想快速弄完这个项目,那 MySQL 就很不错
    FrankAdler
    FrankAdler
    Nov 22, 2023 via Android
    54
    可能 loki 都比 mysql 来的好,考量一下数据量稍微多一点点和查询性能
    f9EHtxE2UtX3fG3
    f9EHtxE2UtX3fG3
    Nov 22, 2023 via Android
    55
    公司有写文件的,写 MySQL ,写 es 的,还是看数据量吧?一天一条日志,上什么集群对吧?
    steelshadow39
    steelshadow39
    OP
    Nov 22, 2023
    56
    @Betsy 我的初衷是学东西,找工作。这个项目肯定是要作为简历中的一项。加上我是主要开发,所以我更倾向选择一些企业常用的,比较成熟的方案。
    Betsy
    Betsy
    Nov 22, 2023 via iPhone
    57
    @steelshadow39 其实写 MySQL 也是企业常用的、成熟的方案。🤣🤣
    sadfQED2
    sadfQED2
    Nov 22, 2023 via Android❤️1
    58
    目前使用最广的是 elk

    但是目前头部互联网公司很多都在往 ck 迁移(存储成本比 es 低)
    sadfQED2
    sadfQED2
    Nov 22, 2023 via Android
    59
    你数据没有达到 pb 级别的话,直接 es
    如果日志连 tb 级别都没达到的话,那无所谓,什么技术方案都没影响
    frank42a
    frank42a
    Nov 22, 2023
    60
    elk 太重
    Jat001
    Jat001
    Nov 22, 2023 via iPhone
    61
    @Betsy 其实存文件也是企业常用、成熟的方案,哪有这么多高大上的东西啊,又不是不能用🤣
    steelshadow39
    steelshadow39
    OP
    Nov 22, 2023
    62
    @Betsy 这样嘛,之前认为日志是非结构数据,所以觉得 MySQL 存不太好。现在学到了,谢谢
    TheGonG
    TheGonG
    Nov 22, 2023
    63
    k8s 集群上用了 helm 部署 minio+loki+grafana
    CaspianJou
    CaspianJou
    Nov 22, 2023
    64
    Grafana Loki ,如果觉得 Loki 的查询太弱可以看下 openobserve ,比 ELK 还是要省很多资源的
    veni2023
    veni2023
    Nov 23, 2023
    65
    能联网的话,直接用阿里云的 sls,费用比加一台机器部署日志系统便宜
    xzysaber
    xzysaber
    Nov 23, 2023
    66
    Loki 够了,只是需要注意打好 label ,不然就会容易出现 timeout 。
    crazyweeds
    crazyweeds
    Nov 23, 2023
    67
    为什么没人推荐用时序数据库呢?
    crazyweeds
    crazyweeds
    Nov 23, 2023
    68
    @crazyweeds 好像只解决了存储问题,没解决索引问题,好吧。
    whp1473
    whp1473
    Nov 23, 2023
    69
    Promtail + loki + grafana + Prometheus
    这是比较流行的商业化方案,日志+监控+界面展示+告警都有
    whp1473
    whp1473
    Nov 23, 2023
    70
    @whp1473
    Promtail:日志采集器
    Loki:基于标签的日志存储
    Grafana:可以直接连接 Loki 、Prometheus 做可视化
    Prometheus:基于标签的监控告警
    chlinlearn
    chlinlearn
    Nov 23, 2023❤️1
    71
    简单业务可以试一试这个方案,基于 Nginx+Logstash+Elasticsearch+Syslog 记录请求 accesslog 日志,打造一个排查接口问题、统计流量数据、慢接口优化的开发运维利器。https://mp.weixin.qq.com/s/r-QINvPHoZIEllJKepxh0w
    gujinwind
    gujinwind
    Nov 25, 2023
    72
    直接使用 mysql 存可以的, 我就见过一个用 MySQL 存大量日志的程序
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1711 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 121ms · UTC 15:57 · PVG 23:57 · LAX 07:57 · JFK 10:57
    ♥ Do have faith in what you're doing.