<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>FinOps on 翟志军 Jack Zhai</title>
    <link>https://showme.codes/tags/finops/</link>
    <description>Recent content in FinOps on 翟志军 Jack Zhai</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>showme.codes</copyright>
    <lastBuildDate>Sat, 22 Apr 2023 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://showme.codes/tags/finops/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>我是如何进行日志降本的</title>
      <link>https://showme.codes/zh-cn/2023-09-22-logs-finops/</link>
      <pubDate>Sat, 22 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://showme.codes/zh-cn/2023-09-22-logs-finops/</guid>
      <description>&lt;p&gt;最近行业里流行降本增效。本文就一个现实中经常发生的日志成本的案例进行讨论，讨论该如何降本。&lt;/p&gt;
&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;假如存在一家IoT公司，它拥有1亿的在线设备（长连接着云端）。这些设备每21秒会向云端发送心跳，以进行连接的保活。假如1次连接的保活，在云端产生1条日志，那么1台设备1天产生的日志量是：&lt;code&gt;24 * 60 * 60 / 21 = 4114条&lt;/code&gt;，假设1条日志100字节，所以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1台设备1天保活日志数：&lt;code&gt;24 * 60 * 60 / 21 = 4114&lt;/code&gt;条&lt;/li&gt;
&lt;li&gt;1条日志占用100字节，1台设备1天产生保活日志：&lt;code&gt;4114 * 100 = 411400&lt;/code&gt;byte&lt;/li&gt;
&lt;li&gt;1天内1亿的设备产生日志：&lt;code&gt;411400 * 100000000&lt;/code&gt; ≈ 37.4T&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我们来看下该保活日志内容：
&lt;code&gt;2021-02-12:12:32:12 application-abc-prod INFO com.platform.cloud.impl keep alive, deviceId:1a2b3b3p8&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;从日志内容来看，没有什么“营养”，纯粹是为方便程序员debug。&lt;/p&gt;
&lt;h2 id=&#34;这是问题吗&#34;&gt;这是问题吗？&lt;/h2&gt;
&lt;p&gt;一行没有营养的日志每天产生37.4T的日志，是个问题吗？对谁是个问题？&lt;/p&gt;
&lt;p&gt;对于写那行代码的人来说，并不是问题，因为日志量大小本身并不是他的KPI。&lt;/p&gt;
&lt;p&gt;对于运维可能是个问题，因为他们可能因此需要增加存储服务扩容的工作。但是从另一个方面来看不是个问题，因为他们有借口招更多的人。&lt;/p&gt;
&lt;p&gt;对于大数据团队可能是个问题，因为他们发现数据清洗pipeline比之前更慢了，进而导致每日报表都被延迟了。但是从另一个角度来看不是个问题，因为这是一个表现的机会——在人员不变的情况下优化清洗速度的机会。&lt;/p&gt;
&lt;p&gt;这对于关心成本的人来说是个问题。谁关心成本呢？这不是本文讨论的话题。&lt;/p&gt;
&lt;h2 id=&#34;如何面对问题&#34;&gt;如何面对问题？&lt;/h2&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;应用维度&lt;/li&gt;
&lt;li&gt;实例维度&lt;/li&gt;
&lt;li&gt;设备维度：部分设备可能有Bug，会死循环会不停进行连接请求&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;/ul&gt;
&lt;p&gt;在收到告警后，找到相应的应用的owner，让其检查日志是否合理，不合理则需要制定改进措施。&lt;/p&gt;
&lt;p&gt;同时，每周都向相应的owner发送日志量报告，让其了解当前生产环境的日志量情况。&lt;/p&gt;
&lt;h3 id=&#34;code-review时面对&#34;&gt;Code Review时面对&lt;/h3&gt;
&lt;p&gt;Code Review时，有经验的人会看出日志问题，但是这种方式并不可靠。&lt;/p&gt;
&lt;h3 id=&#34;写代码时就避免&#34;&gt;写代码时，就避免&lt;/h3&gt;
&lt;p&gt;指的是在程序员写在&lt;code&gt;log.info(&amp;quot;无营养日志&amp;quot;)&lt;/code&gt;的那一时刻，IDE就提醒程序员：这行日志每日将产生4114条日志，将占所有日志总量的80%，请注意！&lt;/p&gt;
&lt;p&gt;当然，除了在IDE时提醒，我们可以在Code Review时，review机器人自动对该行代码进行评论。&lt;/p&gt;
&lt;p&gt;这个实现起来难度会比较大。&lt;/p&gt;
&lt;p&gt;但是并不是没有思路。笔者的思路如下，仅供参考，欢迎交流：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我们要知道，只有被请求到API，API执行时，被执行到的代码才会打日志。所以，只要能知道打日志的代码在过去一段时间内，在生产环境的相应的API被请求了多少次，我们就可以预测到增加1行日志会增加多少日志了。进而在IDE里提示，或者Code Review进行评论。&lt;/p&gt;
&lt;p&gt;而对于那些完全新增的API，就没有办法预测了，因为没有历史纪录。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
