<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>日志系统设计 on IT 运维小秋</title>
        <link>/categories/%E6%97%A5%E5%BF%97%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1.html</link>
        <description>Recent content in 日志系统设计 on IT 运维小秋</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>chenwx716@139.com</managingEditor>
        <webMaster>chenwx716@139.com</webMaster>
        <lastBuildDate>Fri, 13 Dec 2024 00:00:00 +0800</lastBuildDate><atom:link href="/categories/%E6%97%A5%E5%BF%97%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>日志系统设计</title>
        <link>/p/logs-system-platform.html</link>
        <pubDate>Fri, 13 Dec 2024 00:00:00 +0800</pubDate>
        <author>chenwx716@139.com</author>
        <guid>/p/logs-system-platform.html</guid>
        <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;就目前来说开源日志系统功能已经非常完善, 除非大企业如有特殊需求否则没必要自研日志系统;&lt;/p&gt;
&lt;h2 id=&#34;日志的作用&#34;&gt;日志的作用&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;线上问题跟踪&lt;/li&gt;
&lt;li&gt;场景还原&lt;/li&gt;
&lt;li&gt;监控调优&lt;/li&gt;
&lt;li&gt;业务记录&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;什么时候记录日志&#34;&gt;什么时候记录日志&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;编程语言提示异常：即语言中的异常模块反馈出来的错误信息&lt;/li&gt;
&lt;li&gt;业务流程与预期不符&lt;/li&gt;
&lt;li&gt;系统核心角色，组件关键动作&lt;/li&gt;
&lt;li&gt;系统初始化时环境的检查&lt;/li&gt;
&lt;li&gt;有必要才记录日志，频繁过量日志对性能是有损耗的&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;日志处理流程&#34;&gt;日志处理流程&lt;/h2&gt;
&lt;p&gt;产生-&amp;gt;采集-&amp;gt;传输-&amp;gt;过滤/转换-&amp;gt;存储-&amp;gt;分析&lt;/p&gt;
&lt;h2 id=&#34;相关开源组件&#34;&gt;相关开源组件&lt;/h2&gt;
&lt;p&gt;采集侧:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;filebeat&lt;/li&gt;
&lt;li&gt;syslog/rsyslog&lt;/li&gt;
&lt;li&gt;fluentd/fluent-bit&lt;/li&gt;
&lt;li&gt;logtail&lt;/li&gt;
&lt;li&gt;plumelog&lt;/li&gt;
&lt;li&gt;Vector&lt;/li&gt;
&lt;li&gt;otel Collectors&lt;/li&gt;
&lt;li&gt;Packetbeat 网络流量数据&lt;/li&gt;
&lt;li&gt;Winlogbeat Windows 事件日志数据&lt;/li&gt;
&lt;li&gt;promtail/Alloy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;缓冲中间件&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kafka&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;过滤/转换&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;logstash&lt;/li&gt;
&lt;li&gt;otel Collectors&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;存储层&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;elasticsearch&lt;/li&gt;
&lt;li&gt;minio&lt;/li&gt;
&lt;li&gt;loki&lt;/li&gt;
&lt;li&gt;clickHouse&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;告警&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;elasticAlert&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;采集方式&#34;&gt;采集方式&lt;/h2&gt;
&lt;p&gt;目前云原生主流推荐方式有几种&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;应用程序不写日志文件, 直接标准输出, 由容器服务捕获转成日志文件, 再由agent采集;&lt;/li&gt;
&lt;li&gt;应用程序通过内置sdk, 发送到远程日志服务器;&lt;/li&gt;
&lt;li&gt;应用程序标准输出, 由 otel 自动注入agent进行采集;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;日志不落盘: 不用担心日志占用磁盘空间过多, 少一次日志审计, 可用集中处理敏感信息;&lt;br /&gt;
日志落盘: 就需要考虑空间占用, 需要处理轮转和权限, 需要落盘前处理脱敏：&lt;/p&gt;
&lt;h2 id=&#34;标准化日志&#34;&gt;标准化日志&lt;/h2&gt;
&lt;h3 id=&#34;日志级别&#34;&gt;日志级别&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;crit 最高级别错误, 反映系统发生了非常严重的故障, 无法自动恢复到正常态工作, 需要人工介入处理&lt;/li&gt;
&lt;li&gt;error 严重的错误, 某项业务出现的异常&lt;/li&gt;
&lt;li&gt;warn 低级别异常日志, 反映系统在业务处理时触发了异常流程; 但系统可恢复到正常态, 下一次业务逻辑还可以正常执行;&lt;/li&gt;
&lt;li&gt;INFO 主要记录系统关键信息, 旨在保留系统正常工作期间关键运行指标&lt;/li&gt;
&lt;li&gt;DEBUG 详细的调试信息&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;日志格式规范&#34;&gt;日志格式规范&lt;/h3&gt;
&lt;p&gt;目前主推结构化日志;&lt;/p&gt;
&lt;p&gt;标准元数据字段&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;request_id: 唯一请求id&lt;/li&gt;
&lt;li&gt;trace_id: 链路跟踪id&lt;/li&gt;
&lt;li&gt;time: 日志产生时间, 时间戳 /ISO8601/ 毫秒级别, 包含时区&lt;/li&gt;
&lt;li&gt;level: 日志等级&lt;/li&gt;
&lt;li&gt;app_id: 应用 id, 用于标示日志来源, 全局唯一&lt;/li&gt;
&lt;li&gt;instance_id: 实例 id, 用于区分同一应用不同实例, 格式业务方自行设定&lt;/li&gt;
&lt;li&gt;message: string 正文, 或结构化 json&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其它可选字段&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;业务模块名称&lt;/li&gt;
&lt;li&gt;版本号&lt;/li&gt;
&lt;li&gt;函数名称&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;集中式日志系统设计&#34;&gt;集中式日志系统设计&lt;/h2&gt;
&lt;p&gt;数据流: 采集-&amp;gt;传输-&amp;gt;过滤/转换-&amp;gt;存储-&amp;gt;检索/分析&lt;/p&gt;
&lt;p&gt;业务功能点:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;方便搜索, 统计, 异常排查&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;非业务功能点:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可根据数据规模横向扩展&lt;/li&gt;
&lt;li&gt;跨数据中心支持&lt;/li&gt;
&lt;li&gt;数据生命周期支持&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;设计要点&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;实时性和非实时性&lt;/li&gt;
&lt;li&gt;日志格式能否统一&lt;/li&gt;
&lt;li&gt;采集阶段不能占用业务太多计算资源&lt;/li&gt;
&lt;li&gt;离线分析需求&lt;/li&gt;
&lt;li&gt;有优先级控制和流量控制&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;过滤/转换&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;补元数据&lt;/li&gt;
&lt;li&gt;去除无效日志&lt;/li&gt;
&lt;li&gt;记录重点日志&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;存储&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;存储的索引、压缩、和查询&lt;/li&gt;
&lt;li&gt;体量：分布式存储, 横向扩容&lt;/li&gt;
&lt;li&gt;速度：内存缓存, 索引&lt;/li&gt;
&lt;li&gt;生命周期: 冷热数据存放，设定日志清理轮转时间&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
