<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Apache SkyWalking – Community</title>
    <link>/tags/community/</link>
    <description>Recent content in Community on Apache SkyWalking</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Thu, 30 Apr 2026 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="/tags/community/feed.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Blog: Monitoring WeChat and Alipay Mini Programs with SkyWalking</title>
      <link>/blog/2026-04-30-mini-program-monitoring-with-skywalking/</link>
      <pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate>
      <guid>/blog/2026-04-30-mini-program-monitoring-with-skywalking/</guid>
      <description>
        
        
        &lt;p&gt;Mini programs are a major part of the mobile experience in China, but the open-source observability ecosystem has long focused on web browsers and native apps. SkyWalking already covers browser (client-js), iOS, and the server side; mini programs and Android were the remaining gaps. With &lt;a href=&#34;https://github.com/SkyAPM/mini-program-monitor&#34;&gt;SkyAPM/mini-program-monitor&lt;/a&gt; joining the SkyWalking ecosystem, the mini-program half of that gap is closed — one SDK supports both WeChat and Alipay, and the matching OAP-side component IDs, MAL rules, and UI templates are merged on &lt;code&gt;main&lt;/code&gt; and will ship with 10.5.0.&lt;/p&gt;
&lt;p&gt;This post is for teams that already run a SkyWalking backend and want to bring their mini programs into the same observability stack. The interesting parts aren&amp;rsquo;t &lt;em&gt;that&lt;/em&gt; the project exists — they are how the data flows from a mini program to a SkyWalking dashboard, how the two platforms coexist, and what design trade-offs you should know about before rolling this out.&lt;/p&gt;
&lt;h2 id=&#34;data-path&#34;&gt;Data path&lt;/h2&gt;
&lt;p&gt;The SDK uses two protocols:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OTLP HTTP&lt;/strong&gt; (error logs, performance metrics, request metrics) → OAP &lt;code&gt;/v1/logs&lt;/code&gt;, &lt;code&gt;/v1/metrics&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SkyWalking native&lt;/strong&gt; (distributed tracing segments, optional) → OAP &lt;code&gt;/v3/segments&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why not a single protocol? OTLP already covers logs and metrics, so there&amp;rsquo;s no point reinventing native endpoints for those. But for tracing, OAP&amp;rsquo;s native &lt;code&gt;SegmentObject&lt;/code&gt; maps more cleanly onto SkyWalking&amp;rsquo;s trace model, and &lt;code&gt;sw8&lt;/code&gt; header propagation to the backend works without any conversion. So traces go native, everything else goes OTLP, and neither side has to translate.&lt;/p&gt;
&lt;p&gt;OTLP defaults to protobuf; JSON is available for debugging. The SDK has zero runtime dependencies.&lt;/p&gt;
&lt;h2 id=&#34;two-platforms-two-independent-layers-and-dashboards&#34;&gt;Two platforms, two independent Layers and dashboards&lt;/h2&gt;
&lt;p&gt;Many teams maintain a WeChat mini program and an Alipay mini program against a shared backend. Rather than collapsing them into a single tagged service, the design promotes each platform to its own Layer — &lt;code&gt;WECHAT_MINI_PROGRAM&lt;/code&gt; and &lt;code&gt;ALIPAY_MINI_PROGRAM&lt;/code&gt; — with its own dashboard set. The SDK tags every signal with a resource attribute &lt;code&gt;miniprogram.platform = wechat | alipay&lt;/code&gt; and assigns each platform its own component ID (WeChat = 10002, Alipay = 10003).&lt;/p&gt;
&lt;p&gt;On the OAP side, the MAL rule&amp;rsquo;s &lt;code&gt;filter&lt;/code&gt; routes data into the right Layer at ingest:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metricPrefix&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;meter_wechat_mp&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;filter&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{ tags -&amp;gt; tags.miniprogram_platform == &amp;#39;wechat&amp;#39; }&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Alipay rule mirrors this with &lt;code&gt;&#39;alipay&#39;&lt;/code&gt;. The two rules are mutually exclusive — no double counting — and produce distinct metric prefixes (&lt;code&gt;meter_wechat_mp_*&lt;/code&gt; vs &lt;code&gt;meter_alipay_mp_*&lt;/code&gt;) that feed each Layer&amp;rsquo;s dashboards. Even when both platforms use the same &lt;code&gt;service.name&lt;/code&gt; (e.g. &lt;code&gt;mini-program-demo&lt;/code&gt;), the UI exposes two completely separate entry points.&lt;/p&gt;
&lt;h2 id=&#34;asymmetric-metric-semantics&#34;&gt;Asymmetric metric semantics&lt;/h2&gt;
&lt;p&gt;This is the design choice I want to highlight. WeChat&amp;rsquo;s base library exposes &lt;code&gt;PerformanceObserver&lt;/code&gt;, which gives you renderer-authoritative timings: app launch, first render, route navigation, script execution, sub-package load — all real measurements. Alipay&amp;rsquo;s base library doesn&amp;rsquo;t offer an equivalent, so the SDK falls back to lifecycle hooks: the &lt;code&gt;App.onLaunch → App.onShow&lt;/code&gt; delta is used as an approximation of launch time, and renderer-level timings simply aren&amp;rsquo;t available.&lt;/p&gt;
&lt;p&gt;So the two MAL rule sets are deliberately not the same:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WeChat&lt;/strong&gt;: &lt;code&gt;app_launch_duration&lt;/code&gt;, &lt;code&gt;first_render_duration&lt;/code&gt;, &lt;code&gt;route_duration&lt;/code&gt;, &lt;code&gt;script_duration&lt;/code&gt;, &lt;code&gt;package_load_duration&lt;/code&gt;, &lt;code&gt;request_duration_percentile&lt;/code&gt;, &lt;code&gt;request_cpm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alipay&lt;/strong&gt;: &lt;code&gt;app_launch_duration&lt;/code&gt;, &lt;code&gt;first_render_duration&lt;/code&gt;, &lt;code&gt;request_duration_percentile&lt;/code&gt;, &lt;code&gt;request_cpm&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Alipay &lt;code&gt;app_launch_duration&lt;/code&gt; is a lifecycle approximation and is not directly comparable to WeChat&amp;rsquo;s renderer timing — the dashboard tooltip says so explicitly. Putting the two numbers side by side is comparing two different measurement definitions.&lt;/p&gt;
&lt;h2 id=&#34;what-the-sdk-does&#34;&gt;What the SDK does&lt;/h2&gt;
&lt;p&gt;Four signals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Errors&lt;/strong&gt; — JS exceptions, unhandled promise rejections, and &lt;code&gt;pageNotFound&lt;/code&gt; go out as OTLP logs, following the OTel &lt;code&gt;exception.*&lt;/code&gt; semantic conventions (&lt;code&gt;exception.type&lt;/code&gt;, &lt;code&gt;exception.stacktrace&lt;/code&gt;). Anything downstream that speaks OTLP — SkyWalking, OTel Collector, Grafana — recognizes them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt; — the metrics listed above. OTLP gauge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requests&lt;/strong&gt; — &lt;code&gt;wx.request&lt;/code&gt; / &lt;code&gt;my.request&lt;/code&gt; / &lt;code&gt;downloadFile&lt;/code&gt; / &lt;code&gt;uploadFile&lt;/code&gt; are reported as OTLP delta histograms, one batch per &lt;code&gt;flushInterval&lt;/code&gt; (default 5s). The &lt;code&gt;le&lt;/code&gt; bucket labels are already in milliseconds, and the MAL rule explicitly declares &lt;code&gt;MILLISECONDS&lt;/code&gt; to disable the default SECONDS→MS rescale. Failed requests (4xx / 5xx / timeout) additionally emit an error log so you can pivot from a dashboard to a concrete failure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracing (opt-in)&lt;/strong&gt; — when enabled, outbound requests get &lt;code&gt;sw8&lt;/code&gt; header injection, and the resulting segments stitch together with backend traces into one end-to-end view. Trace data goes out as SkyWalking &lt;code&gt;SegmentObject&lt;/code&gt;, not OTLP traces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two reliability and cardinality details worth calling out:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Persisting events on app hide.&lt;/strong&gt; Mini programs get killed by the framework after some time in background, and weak networks make in-flight events easy to lose. The SDK writes unsent events to &lt;code&gt;wx.setStorage&lt;/code&gt; / &lt;code&gt;my.setStorage&lt;/code&gt; on &lt;code&gt;onAppHide&lt;/code&gt; and restores them on the next launch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Avoiding cardinality explosions.&lt;/strong&gt; Set &lt;code&gt;serviceInstance&lt;/code&gt; to the app version (e.g. &lt;code&gt;1.4.2&lt;/code&gt;), not a device ID — at a million DAU the device-ID dimension blows up the OAP instance index. For request paths, the SDK exposes &lt;code&gt;urlGroupRules&lt;/code&gt; regex patterns to fold parameterized URLs like &lt;code&gt;/api/user/12345&lt;/code&gt; into &lt;code&gt;/api/user/{id}&lt;/code&gt; so the endpoint dimension doesn&amp;rsquo;t blow up either.&lt;/p&gt;
&lt;h2 id=&#34;what-oap-needs&#34;&gt;What OAP needs&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re on &lt;code&gt;main&lt;/code&gt; or a release ≥ 10.5.0, the following are already shipped:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;config/component-libraries.yml&lt;/code&gt; registers &lt;code&gt;WeChat-MiniProgram: 10002&lt;/code&gt; and &lt;code&gt;AliPay-MiniProgram: 10003&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/otel-rules/miniprogram/&lt;/code&gt; holds four MAL rules — service-scoped and instance-scoped for each platform&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/ui-initialized-templates/wechat_mini_program/&lt;/code&gt; and &lt;code&gt;alipay_mini_program/&lt;/code&gt; carry root / service / instance / endpoint dashboards&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/ui-initialized-templates/menu.yaml&lt;/code&gt; registers both layers under the Mobile menu group&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only thing left is enabling the OTel receiver and giving the SDK an OTLP HTTP port it can reach. SkyWalking OAP binds its OTLP HTTP handler onto the receiver-sharing-server port, and that port defaults to &lt;code&gt;0&lt;/code&gt; — meaning it&amp;rsquo;s folded into the core REST port (12800). If you want the SDK to use the standard OTLP HTTP port 4318, set the sharing port to 4318:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -d --name sw-oap &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -p 11800:11800 -p 12800:12800 -p 4318:4318 &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#953800&#34;&gt;SW_STORAGE&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;banyandb &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#953800&#34;&gt;SW_STORAGE_BANYANDB_TARGETS&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;banyandb:17912 &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#953800&#34;&gt;SW_OTEL_RECEIVER&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;default &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#953800&#34;&gt;SW_RECEIVER_SHARING_REST_PORT&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;4318&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  apache/skywalking-oap-server:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All receivers (OTLP, native segment, browser perf, log report) move to 4318 together, while GraphQL stays on 12800 for the UI.&lt;/p&gt;
&lt;p&gt;Minimal SDK config:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;MiniProgramMonitor&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;mini-program-monitor&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;MiniProgramMonitor&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;init&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;service&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;mini-program-demo&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;serviceInstance&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;1.4.2&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;          &lt;span style=&#34;color:#57606a&#34;&gt;// Recommended: app version
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;collector&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;http://your-oap:4318&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;enable&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;error&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;perf&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;request&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;tracing&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;                  &lt;span style=&#34;color:#57606a&#34;&gt;// Off by default; enable as needed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;WeChat and Alipay use the same config — the SDK detects the platform at runtime and tags the data accordingly.&lt;/p&gt;
&lt;h2 id=&#34;compatibility&#34;&gt;Compatibility&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;WeChat base library ≥ 2.11&lt;/li&gt;
&lt;li&gt;Alipay base library ≥ 2.0&lt;/li&gt;
&lt;li&gt;Apache SkyWalking OAP &lt;code&gt;main&lt;/code&gt; or ≥ 10.5.0, with the OTLP HTTP receiver enabled&lt;/li&gt;
&lt;li&gt;Any other OTLP-compatible backend (OpenTelemetry Collector, Grafana, etc.) also works, but you won&amp;rsquo;t get the SkyWalking-specific cross-platform dashboards&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;p&gt;To get involved, head over to &lt;a href=&#34;https://github.com/SkyAPM/mini-program-monitor&#34;&gt;SkyAPM/mini-program-monitor&lt;/a&gt; and open an issue or PR. The repo also ships a &lt;code&gt;make preview&lt;/code&gt; target that boots OAP, the UI, and both platform simulators locally — handy if you want to play with it end-to-end.&lt;/p&gt;
&lt;p&gt;Android end-user experience monitoring is still a gap in the SkyWalking ecosystem; contributors interested in closing that one are very welcome.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Zh: 用 SkyWalking 监控微信和支付宝小程序</title>
      <link>/zh/2026-04-30-mini-program-monitoring-with-skywalking/</link>
      <pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate>
      <guid>/zh/2026-04-30-mini-program-monitoring-with-skywalking/</guid>
      <description>
        
        
        &lt;p&gt;小程序是国内移动端体验里绕不过去的一块，但开源监控生态长期偏向 Web 浏览器和原生 App。SkyWalking 自身已经覆盖了浏览器（client-js）、iOS、服务端，缺口主要在小程序和 Android。&lt;a href=&#34;https://github.com/SkyAPM/mini-program-monitor&#34;&gt;SkyAPM/mini-program-monitor&lt;/a&gt; 加入 SkyWalking 生态后，把这块缺口的小程序部分补上了 —— 一份 SDK 同时支持微信和支付宝，OAP 端的 component、MAL 规则、UI 模板已经合进 main 分支，会随 10.5.0 一起发布。&lt;/p&gt;
&lt;p&gt;这篇博客面向已经跑着 SkyWalking 后端、希望把小程序也接进来的团队。重点不是&amp;quot;项目存在&amp;quot;这件事，而是数据从小程序到 SkyWalking dashboard 走的是哪条路、双平台是怎么共存的、以及上线之前需要知道哪些设计取舍。&lt;/p&gt;
&lt;h2 id=&#34;数据通路&#34;&gt;数据通路&lt;/h2&gt;
&lt;p&gt;SDK 走两条腿：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OTLP HTTP&lt;/strong&gt;（错误日志、性能指标、请求指标）→ OAP 的 &lt;code&gt;/v1/logs&lt;/code&gt;、&lt;code&gt;/v1/metrics&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SkyWalking 原生协议&lt;/strong&gt;（链路追踪 segment，可选）→ OAP 的 &lt;code&gt;/v3/segments&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么不是单协议？OTLP 已经覆盖了 logs 和 metrics 两类信号，没必要再造一份原生 endpoint；但分布式追踪上 OAP 的原生 &lt;code&gt;SegmentObject&lt;/code&gt; 比 OTLP traces 表达力更贴 SkyWalking 自己的 trace 模型，且与服务端通过 &lt;code&gt;sw8&lt;/code&gt; header 透传时无需任何转换。所以追踪走原生，其它走 OTLP，两边都不绕路。&lt;/p&gt;
&lt;p&gt;OTLP 默认用 protobuf，调试时可切成 JSON。SDK 没有任何运行时依赖。&lt;/p&gt;
&lt;h2 id=&#34;双平台对应两个独立的-layer-与监控面板&#34;&gt;双平台对应两个独立的 Layer 与监控面板&lt;/h2&gt;
&lt;p&gt;很多团队会同时维护一个微信小程序和一个支付宝小程序，业务逻辑共享一个后端。这套设计没有把它们塞进同一个 service 用 tag 区分，而是直接做成两个独立的 Layer：&lt;code&gt;WECHAT_MINI_PROGRAM&lt;/code&gt; 和 &lt;code&gt;ALIPAY_MINI_PROGRAM&lt;/code&gt;，对应两套独立的监控面板。SDK 在每个信号上打 resource 属性 &lt;code&gt;miniprogram.platform = wechat | alipay&lt;/code&gt;，并给两端各分配独立的 component ID（微信 10002、支付宝 10003）。&lt;/p&gt;
&lt;p&gt;OAP 这一头是用 MAL 规则的 &lt;code&gt;filter&lt;/code&gt; 把数据在 ingest 阶段就分流到对应 Layer 的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metricPrefix&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;meter_wechat_mp&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;filter&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;{ tags -&amp;gt; tags.miniprogram_platform == &amp;#39;wechat&amp;#39; }&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;支付宝那份规则同理过滤 &lt;code&gt;alipay&lt;/code&gt;。两份规则互斥，不会重复计数；输出的 metric 前缀也不一样（&lt;code&gt;meter_wechat_mp_*&lt;/code&gt; vs &lt;code&gt;meter_alipay_mp_*&lt;/code&gt;），各自落在对应 Layer 的 dashboard 上。即使两端用同一个 &lt;code&gt;service.name&lt;/code&gt;（比如都叫 &lt;code&gt;mini-program-demo&lt;/code&gt;），UI 里也是两套完全独立的入口。&lt;/p&gt;
&lt;h2 id=&#34;不对等的指标语义&#34;&gt;不对等的指标语义&lt;/h2&gt;
&lt;p&gt;这是这套设计里我特别想强调的一处诚实选择。微信的基础库提供 &lt;code&gt;PerformanceObserver&lt;/code&gt;，能拿到来自渲染层的权威时序：app launch、first render、route navigation、script execution、sub-package load 都是真实指标。支付宝的基础库不提供等价 API，SDK 只能用生命周期回退做近似：&lt;code&gt;App.onLaunch → App.onShow&lt;/code&gt; 的 delta 当作启动时间，渲染相关的拿不到。&lt;/p&gt;
&lt;p&gt;所以两份 OAP 规则里的 metric 集合不对等：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;微信：&lt;code&gt;app_launch_duration&lt;/code&gt;、&lt;code&gt;first_render_duration&lt;/code&gt;、&lt;code&gt;route_duration&lt;/code&gt;、&lt;code&gt;script_duration&lt;/code&gt;、&lt;code&gt;package_load_duration&lt;/code&gt;、&lt;code&gt;request_duration_percentile&lt;/code&gt;、&lt;code&gt;request_cpm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;支付宝：&lt;code&gt;app_launch_duration&lt;/code&gt;、&lt;code&gt;first_render_duration&lt;/code&gt;、&lt;code&gt;request_duration_percentile&lt;/code&gt;、&lt;code&gt;request_cpm&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;支付宝侧的 &lt;code&gt;app_launch_duration&lt;/code&gt; 是生命周期近似值，与微信的渲染层数值不可直接对比，这一点在 dashboard 的字段提示里也写明了。把两个数字放一起做横评等于在比较两种不同测量定义。&lt;/p&gt;
&lt;h2 id=&#34;sdk-端做了什么&#34;&gt;SDK 端做了什么&lt;/h2&gt;
&lt;p&gt;四类信号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误&lt;/strong&gt;：JS 异常 / unhandled promise rejection / pageNotFound 走 OTLP logs，按 OTel &lt;code&gt;exception.*&lt;/code&gt; 语义约定（&lt;code&gt;exception.type&lt;/code&gt;、&lt;code&gt;exception.stacktrace&lt;/code&gt;），下游不光 SkyWalking，OTel Collector / Grafana 也都认。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能&lt;/strong&gt;：上面那张表里那些。OTLP gauge。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;请求&lt;/strong&gt;：&lt;code&gt;wx.request&lt;/code&gt; / &lt;code&gt;my.request&lt;/code&gt; / &lt;code&gt;downloadFile&lt;/code&gt; / &lt;code&gt;uploadFile&lt;/code&gt; 都走 OTLP delta histogram，每个 flush 间隔（默认 5s）发一次增量。&lt;code&gt;le&lt;/code&gt; 桶标签直接用 ms，OAP MAL 里显式声明 &lt;code&gt;MILLISECONDS&lt;/code&gt; 阻止默认的 SECONDS→MS 缩放。失败请求（4xx/5xx/超时）额外发一条错误日志，方便从 dashboard 跳到具体错误。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;追踪（可选）&lt;/strong&gt;：开启后给出站请求注入 &lt;code&gt;sw8&lt;/code&gt; 头，落到 OAP 后能与服务端 trace 拼成一条完整链路。trace 段以 SkyWalking &lt;code&gt;SegmentObject&lt;/code&gt; 形式发出，不走 OTLP traces。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可靠性和基数控制的两个细节值得一提：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;App hide 时落本地存储&lt;/strong&gt;。小程序后台一段时间会被框架杀掉，弱网时也容易丢包。SDK 在 &lt;code&gt;onAppHide&lt;/code&gt; 时把未发送的事件写到 &lt;code&gt;wx.setStorage&lt;/code&gt; / &lt;code&gt;my.setStorage&lt;/code&gt;，下次启动恢复并继续上报。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;反基数膨胀&lt;/strong&gt;。强烈建议把 &lt;code&gt;serviceInstance&lt;/code&gt; 设成应用版本号（如 &lt;code&gt;1.4.2&lt;/code&gt;），不要用设备 ID —— 小程序日活百万级时设备 ID 维度直接把 OAP 的 instance 索引打爆。请求路径方面 SDK 提供 &lt;code&gt;urlGroupRules&lt;/code&gt; 正则把 &lt;code&gt;/api/user/12345&lt;/code&gt; 这类参数化路径归并到 &lt;code&gt;/api/user/{id}&lt;/code&gt;，避免 endpoint 维度也膨胀。&lt;/p&gt;
&lt;h2 id=&#34;oap-端要做什么&#34;&gt;OAP 端要做什么&lt;/h2&gt;
&lt;p&gt;如果你用的是 main 分支或者 10.5.0 之后的发布版，下面这些已经内置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;config/component-libraries.yml&lt;/code&gt;：注册了 &lt;code&gt;WeChat-MiniProgram: 10002&lt;/code&gt; 和 &lt;code&gt;AliPay-MiniProgram: 10003&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/otel-rules/miniprogram/&lt;/code&gt;：四份 MAL 规则，按 service / instance 维度分别定义&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/ui-initialized-templates/wechat_mini_program/&lt;/code&gt; 和 &lt;code&gt;alipay_mini_program/&lt;/code&gt;：root / service / instance / endpoint 四张 dashboard&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/ui-initialized-templates/menu.yaml&lt;/code&gt;：把两个 layer 注册到 Mobile 菜单组下&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;唯一需要做的就是确认 OTel receiver 启用、给 OTLP HTTP 一个 SDK 能直连的端口。SkyWalking OAP 的 OTLP HTTP handler 默认绑在 receiver-sharing-server 的端口上，而该端口默认值是 0（即复用 core REST 端口 12800）。如果想让 SDK 用标准 OTLP HTTP 端口 4318，把 sharing 端口设到 4318：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -d --name sw-oap &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -p 11800:11800 -p 12800:12800 -p 4318:4318 &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#953800&#34;&gt;SW_STORAGE&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;banyandb &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#953800&#34;&gt;SW_STORAGE_BANYANDB_TARGETS&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;banyandb:17912 &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#953800&#34;&gt;SW_OTEL_RECEIVER&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;default &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -e &lt;span style=&#34;color:#953800&#34;&gt;SW_RECEIVER_SHARING_REST_PORT&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;4318&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  apache/skywalking-oap-server:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样所有 receiver（OTLP + native segment + browser perf + log report）一起搬到 4318，GraphQL 仍在 12800 给 UI 用。&lt;/p&gt;
&lt;p&gt;SDK 端配置最小集：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;MiniProgramMonitor&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;mini-program-monitor&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;MiniProgramMonitor&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;init&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;service&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;mini-program-demo&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;serviceInstance&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;1.4.2&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;          &lt;span style=&#34;color:#57606a&#34;&gt;// 推荐：应用版本号
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;collector&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;http://your-oap:4318&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;enable&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;error&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;perf&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;request&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;tracing&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;                  &lt;span style=&#34;color:#57606a&#34;&gt;// 默认关，按需开
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;微信和支付宝两端配置一模一样，平台标签由 SDK 在运行时自动判定。&lt;/p&gt;
&lt;h2 id=&#34;兼容性&#34;&gt;兼容性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;微信基础库 ≥ 2.11&lt;/li&gt;
&lt;li&gt;支付宝基础库 ≥ 2.0&lt;/li&gt;
&lt;li&gt;Apache SkyWalking OAP main 分支或 ≥ 10.5.0；OTLP HTTP receiver 启用即可&lt;/li&gt;
&lt;li&gt;也可对接任意 OTLP 后端（OpenTelemetry Collector、Grafana 等），但那条路上拿不到 SkyWalking 专属的双平台 dashboard&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;后续&#34;&gt;后续&lt;/h2&gt;
&lt;p&gt;参与方式直接去 &lt;a href=&#34;https://github.com/SkyAPM/mini-program-monitor&#34;&gt;SkyAPM/mini-program-monitor&lt;/a&gt; 提 issue / PR。仓库里有一个 &lt;code&gt;make preview&lt;/code&gt; 一键拉起 OAP、UI、两端模拟器的本地 demo 环境，想看效果可以直接跑。&lt;/p&gt;
&lt;p&gt;Android 端的端用户体验监控目前还是 SkyWalking 生态的空白，欢迎对这块感兴趣的同学一起补齐。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Agentic Vibe Coding in a Mature OSS Project: What Worked, What Didn&#39;t</title>
      <link>/blog/2026-03-08-agentic-vibe-coding/</link>
      <pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/blog/2026-03-08-agentic-vibe-coding/</guid>
      <description>
        
        
        &lt;p&gt;Most &amp;ldquo;vibe coding&amp;rdquo; stories start with a greenfield project. This one doesn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Apache SkyWalking is a 9-year-old observability platform with hundreds of production deployments, a complex DSL stack, and an external API surface that users have built dashboards, alerting rules, and automation scripts against. When I decided to replace the core scripting engine — purging the Groovy runtime from four DSL compilers — the constraint wasn&amp;rsquo;t &amp;ldquo;can AI write the code?&amp;rdquo; It was: &amp;ldquo;can AI write the code without breaking anything for existing users?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The answer turned out to be yes — &lt;strong&gt;~77,000 lines changed across 10 major PRs in about 5 weeks&lt;/strong&gt; — but only because the AI was tightly guided by a human who understood the project&amp;rsquo;s architecture, its compatibility contracts, and its users. This post is about the methodology: what worked, what didn&amp;rsquo;t, and what mature open-source maintainers should know before handing their codebase to AI agents.&lt;/p&gt;
&lt;h2 id=&#34;the-project-in-brief&#34;&gt;The Project in Brief&lt;/h2&gt;
&lt;p&gt;The task was to replace SkyWalking&amp;rsquo;s Groovy-based scripting engines (MAL, LAL, Hierarchy) with a unified ANTLR4 + Javassist bytecode compilation pipeline, matching the architecture already proven by the OAL compiler. The internal tech stack was completely overhauled; the external interface had to remain identical.&lt;/p&gt;
&lt;p&gt;Beyond the compiler rewrites, the scope included a new queue infrastructure (threads dropped from 36 to 15), virtual thread support for JDK 25+, and E2E test modernization. By conventional estimates, this was 5-8 months of senior engineer work.&lt;/p&gt;
&lt;p&gt;For the full technical details on the compiler architecture, see the &lt;a href=&#34;https://github.com/apache/skywalking/discussions/13716&#34;&gt;Groovy elimination discussion&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;what-is-agentic-vibe-coding&#34;&gt;What is Agentic Vibe Coding?&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;Vibe coding&amp;rdquo; — a term coined by Andrej Karpathy — describes a style of programming where you describe intent and let AI write the code. It&amp;rsquo;s powerful for prototyping, but on its own, it&amp;rsquo;s risky for production systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agentic vibe coding&lt;/strong&gt; takes this further: instead of a single AI autocomplete, you orchestrate multiple AI agents — each with different strengths — under your architectural direction, with automated tests as the safety net. In my workflow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code (plan mode)&lt;/strong&gt;: Primary coding agent. Plan mode lets me review the approach before any code is generated. This is critical for architectural decisions — I steer the design, Claude handles the implementation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gemini&lt;/strong&gt;: Code review, concurrency analysis, and verification reports. Gemini reviewed every major PR for thread-safety, feature parity, and edge cases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex&lt;/strong&gt;: Autonomous task execution for well-defined, bounded work items.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key insight: &lt;strong&gt;AI writes the code, but the architect owns the design.&lt;/strong&gt; Without deep domain knowledge of SkyWalking&amp;rsquo;s internals, no AI could have planned these changes. Without AI, I couldn&amp;rsquo;t have executed them in 5 weeks.&lt;/p&gt;
&lt;h2 id=&#34;how-tdd-made-ai-coding-safe&#34;&gt;How TDD Made AI Coding Safe&lt;/h2&gt;
&lt;p&gt;The reason I could move this fast without breaking things comes down to one principle: &lt;strong&gt;never let AI code without a test harness.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My workflow for each major change:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Plan mode first&lt;/strong&gt;: Describe the goal to Claude, review the plan, iterate on architecture before any code is written.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write the test contract&lt;/strong&gt;: Define what &amp;ldquo;correct&amp;rdquo; means — for the compiler rewrites, this meant cross-version comparison tests that run every expression through both the old and new engines, asserting identical results across 1,290+ expressions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Let AI implement&lt;/strong&gt;: With the test contract in place, Claude can write thousands of lines of implementation code. If it&amp;rsquo;s wrong, the tests catch it immediately.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E2E as the final gate&lt;/strong&gt;: Every PR must pass the full E2E test suite — Docker-based integration tests that boot the entire server with real storage backends.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI code review&lt;/strong&gt;: Gemini reviewed each PR for concurrency issues, thread-safety, and feature parity — catching things that unit tests alone wouldn&amp;rsquo;t find.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is the opposite of &amp;ldquo;hope it works&amp;rdquo; vibe coding. The AI writes fast, the tests verify fast, and I steer the architecture. The feedback loop is tight enough that I can iterate on complex compiler code in minutes instead of days.&lt;/p&gt;
&lt;h2 id=&#34;lessons-learned&#34;&gt;Lessons Learned&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AI is a force multiplier, not a replacement.&lt;/strong&gt; Before any AI agent wrote a single line, a human had to define the replacement solution: &lt;em&gt;what&lt;/em&gt; gets replaced, &lt;em&gt;how&lt;/em&gt; it gets replaced, and — critically — &lt;em&gt;where the boundaries are&lt;/em&gt;. Which APIs could break? The internal compilation pipeline was fair game for a complete overhaul. Which APIs must stay aligned? Every external-facing DSL syntax, every YAML configuration key, every metrics name and tag structure had to remain byte-for-byte identical — because hundreds of deployed dashboards, alerting rules, and user scripts depend on them. Drawing these boundaries required deep knowledge of the codebase and its users. AI executed the plan at extraordinary speed, but the plan itself — the scope, the invariants, the compatibility contract — had to come from a human who understood the blast radius of every change.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plan mode is non-negotiable for architectural work.&lt;/strong&gt; Letting AI jump straight to code on a compiler rewrite would be a disaster. Plan mode&amp;rsquo;s strength is that it collects code context — scanning imports, tracing call chains, mapping class hierarchies — and uses that context to help me fill in implementation details I&amp;rsquo;d otherwise have to look up manually. But it can&amp;rsquo;t tell you the design principles. That direction had to come from me, stated clearly upfront, so the AI&amp;rsquo;s planning stayed on the right track instead of optimizing toward a locally reasonable but architecturally wrong solution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Know when to hit ESC.&lt;/strong&gt; Claude has a clear tendency to dive deep into solution code writing once it starts — and it won&amp;rsquo;t stop on its own when it encounters something that conflicts with the original plan&amp;rsquo;s concept. Instead of pausing to flag the conflict, it will push forward, improvising around the obstacle in ways that silently violate the design intent. I had to learn to watch for this: when Claude&amp;rsquo;s output started drifting from the plan, I&amp;rsquo;d manually cancel the task (ESC), call it off, identify where the plan and reality diverged, adjust the plan, and restart. This interrupt-replan cycle was a regular part of the workflow, not an exception. The architect has to stay in the loop — not just at planning time, but during execution — because AI agents don&amp;rsquo;t yet know when to stop and ask.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spec-driven testing is necessary but not sufficient — the logic workflow matters more.&lt;/strong&gt; It&amp;rsquo;s tempting to think that if you define the input/output spec clearly enough, AI can fill in the implementation and tests will catch any mistakes. I tried this. It doesn&amp;rsquo;t work for anything non-trivial. During the expression compiler rewrite, Claude would sometimes change code in unreasonable ways just to make the spec tests pass — the inputs went in, the expected outputs came out, and everything looked green. But the internal logic was wrong: inconsistent with the design patterns the rest of the codebase relied on, impossible to extend, or solving the specific test case through a hack rather than a general mechanism. A spec only checks &lt;em&gt;what&lt;/em&gt; the code produces; it says nothing about &lt;em&gt;how&lt;/em&gt; the code produces it. For a mature project, the &amp;ldquo;how&amp;rdquo; matters enormously — the solution needs to be consistent with the existing architecture, widely adoptable by contributors, and maintainable long-term. That&amp;rsquo;s why I needed cross-version testing &lt;em&gt;and&lt;/em&gt; human review of the implementation path, not just the results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Testing at two levels kept the rewrite honest.&lt;/strong&gt; Cross-version testing was part of my design plan from the start — I architected the dual-path comparison framework so that every production DSL expression runs through both the old and new engines, asserting identical results across 1,290+ expressions. This gave me confidence no human review could match, and it was a deliberate planning decision: I knew AI-generated compiler code needed a mechanical proof of behavioral equivalence, not just eyeball review. On top of that, E2E tests served as the project&amp;rsquo;s existing infrastructure safety net — Docker-based integration tests that boot the entire server with real storage backends. Unit tests and cross-version tests verify logic in isolation; E2E tests verify the system actually works end-to-end. For infrastructure-level changes like queue replacement and thread model changes, E2E is the only gate that truly matters. Together, the two layers — designed-for-this-rewrite cross-version tests and pre-existing E2E infrastructure — caught different classes of bugs and made shipping with confidence possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multiple AIs have different strengths.&lt;/strong&gt; Claude excels at large-scale code generation with plan mode. Gemini is exceptional at logic review — it can mentally trace code branches with given input data, simulating execution without actually running the code. This is significant for reviewing AI-generated code: Gemini would walk through a generated compiler method step by step, flagging where a null check was missing or where a branch would produce wrong output for a specific edge case. Codex proved most valuable as a test reviewer and honesty checker. AI-generated code has a subtle failure mode: the coding agent can make wrong assumptions and then write tests that pass by setting expected values to match the wrong behavior — effectively bypassing the test safety net. Codex caught cases where Claude had set unreasonable expected values that happened to make tests green, masking logic errors that would have surfaced in production. Using all three as checks on each other was far more effective than relying on any single one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Mythical Man-Month still applies — and so does the Mythical Token-Month.&lt;/strong&gt; Brooks taught us that a task requiring 12 person-months does not mean 12 people can finish it in one month. The same law applies to AI: you cannot simply throw more tokens, more agents, or more parallel sessions at a problem and expect it to converge faster. Communication costs, coordination overhead, requirements analysis, and conceptual integrity — these software engineering fundamentals do not disappear just because your workforce is artificial. Worse, when the direction is wrong — when there&amp;rsquo;s a conceptual error in the design or an unreasonable architectural choice — AI will not recognize it. It will charge down the wrong path at extraordinary speed, burning tokens furiously while trapped in a vortex of self-justification: patching code to make failing tests pass, adjusting expected values to match wrong behavior, adding workarounds on top of workarounds — each iteration making the codebase look more &amp;ldquo;complete&amp;rdquo; while drifting further from correctness. AI vibe coding cannot break out of this spiral on its own. Only a human who understands the domain can recognize &amp;ldquo;this is fundamentally wrong, stop,&amp;rdquo; discard the work, and redirect. Speed without direction is just expensive chaos.&lt;/p&gt;
&lt;h2 id=&#34;the-bigger-picture&#34;&gt;The Bigger Picture&lt;/h2&gt;
&lt;p&gt;The agentic vibe coding approach worked because it combined AI&amp;rsquo;s speed with human architectural judgment and automated test discipline. It&amp;rsquo;s not magic — it&amp;rsquo;s engineering, accelerated.&lt;/p&gt;
&lt;p&gt;Brooks also gave us &amp;ldquo;No Silver Bullet,&amp;rdquo; and its core distinction matters more than ever: software complexity comes in two kinds. &lt;strong&gt;Essential complexity&lt;/strong&gt; comes from the problem itself — the domain semantics, the behavioral contracts, the concurrency invariants. No tool can eliminate this; it must be understood, modeled, and reasoned about by someone who knows the domain. &lt;strong&gt;Accidental complexity&lt;/strong&gt; comes from the tools and implementation — boilerplate code, manual refactoring across hundreds of files, the mechanical work of translating a design into compilable source. This is exactly where AI excels. What made this project work was recognizing which complexity was which: I owned the essential complexity (architecture, API boundaries, correctness invariants), and AI demolished the accidental complexity (generating 77K lines of implementation, scaffolding test harnesses, rewriting repetitive patterns across dozens of config files). Confuse the two — let AI make essential decisions, or waste human time on accidental work — and you get the worst of both worlds.&lt;/p&gt;
&lt;p&gt;Qian Xuesen(Tsien Hsue-shen)&amp;rsquo;s &lt;em&gt;Engineering Cybernetics&lt;/em&gt; offers another lens that proved surprisingly relevant. His core framework — &lt;strong&gt;feedback&lt;/strong&gt;, &lt;strong&gt;control&lt;/strong&gt;, &lt;strong&gt;optimization&lt;/strong&gt; — describes how to keep complex systems running toward their target. AI vibe coding at full speed is like a hypersonic missile: extraordinarily fast, but without a guidance system it just creates a bigger crater in the wrong place. The feedback loop in my workflow was the test harness — cross-version tests and E2E tests providing continuous signal on whether the system was still on course. Control was the human architect deciding when to intervene: reviewing plans before execution, hitting ESC when the direction drifted, choosing which AI to trust for which task. Optimization was iterative: each interrupt-replan cycle refined the approach, each Gemini review tightened the logic, each Codex audit caught assumptions the coding agent had smuggled past the tests. Without all three — feedback to detect deviation, control to correct course, optimization to converge — the speed of AI coding would be not an advantage but a liability. The faster the missile, the more precise the guidance must be.&lt;/p&gt;
&lt;p&gt;For more details or to share your own experience with agentic coding on production systems, feel free to reach me on &lt;a href=&#34;https://github.com/wu-sheng&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Zh: 在成熟开源大型项目中实践 Agentic Vibe Coding：软件工程与工程控制论还在延续</title>
      <link>/zh/2026-03-08-agentic-vibe-coding/</link>
      <pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/zh/2026-03-08-agentic-vibe-coding/</guid>
      <description>
        
        
        &lt;p&gt;大多数&amp;quot;vibe coding&amp;quot;的故事都从一个全新项目开始，讲述一个快速构建原型或者可运行项目的过程，但这篇不是。&lt;/p&gt;
&lt;p&gt;Apache SkyWalking 是一个有 9 年历史的Apache顶级项目，线上数以千计的集群部署，内部有一套复杂的 DSL 编译栈，对外暴露的 API 上承载着用户构建的仪表盘、告警规则和自动化脚本。当我决定替换核心脚本引擎——从四个 DSL 编译器中彻底移除 Groovy 运行时——面临的问题不是&amp;quot;AI 能不能写出代码&amp;quot;，而是&amp;quot;也许只有AI能完成如此大规模的一致性迭代&amp;quot;，以及&amp;quot;AI 能不能在不破坏系统的前提下写出完整且高效的代码&amp;quot;。&lt;/p&gt;
&lt;p&gt;答案是可以——&lt;strong&gt;约 7.7 万行代码变更，10 个主要 PR，历时约 5 周&lt;/strong&gt;——但前提是 AI 始终在一个深刻理解项目架构、兼容性要求和用户场景的人的引导下工作。这篇文章分享了我在过去几个月的实践体验，以及成熟开源项目的维护者在把代码库交给 AI 智能体之前应该知道什么。&lt;/p&gt;
&lt;h2 id=&#34;项目概况&#34;&gt;项目概况&lt;/h2&gt;
&lt;p&gt;这次的任务是将 SkyWalking 基于 Groovy 的脚本引擎（MAL、LAL、Hierarchy）替换为统一的 ANTLR4 + Javassist 字节码编译管线，对齐 OAL 编译器已经验证过的架构。内部技术栈彻底重构，但对外接口必须保持完全一致。&lt;/p&gt;
&lt;p&gt;除了编译器重写，范围还包括新的线程管理策略（线程数从 36 降到 15）、JDK 25+ 虚拟线程支持，以及端到端测试的现代化改造。按传统估算，这是 5-8 个月的资深工程师（以我自己为例）工作量。&lt;/p&gt;
&lt;p&gt;编译器架构的完整技术细节，参见 &lt;a href=&#34;https://github.com/apache/skywalking/discussions/13716&#34;&gt;Groovy 移除讨论&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;什么是-agentic-vibe-coding&#34;&gt;什么是 Agentic Vibe Coding？&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;Vibe coding&amp;rdquo;——Andrej Karpathy 提出的概念——描述的是一种你表达意图、让 AI 来写代码的编程风格。整个AI编程过程，一直以来都是用来做原型，效果强大且速度迅猛，但单独用于生产系统是有风险的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agentic vibe coding&lt;/strong&gt; 更进一步：不是单一的 AI 自动补全，而是在你的架构指导下编排多个 AI 智能体——各有所长——以自动化测试作为安全网。我的工作流是这样的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code（plan 模式）&lt;/strong&gt;：主力编码智能体。Plan 模式让我在生成任何代码之前先审查方案。这对架构决策至关重要——我把控设计方向，Claude 负责实现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gemini&lt;/strong&gt;：代码审查、并发分析和验证报告。每个主要 PR 都经过 Gemini 审查线程安全性、功能对等性和边界情况。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex&lt;/strong&gt;：对定义明确、边界清晰的工作项进行自主任务执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心洞察：&lt;strong&gt;AI 写代码，但架构师掌控设计。&lt;/strong&gt; 没有对 SkyWalking 内部机制的深入领域知识，任何 AI 都无法规划这些变更。没有 AI，我也不可能在 5 周内完成执行。&lt;/p&gt;
&lt;h2 id=&#34;tdd-如何让-ai-编程变得安全&#34;&gt;TDD 如何让 AI 编程变得安全&lt;/h2&gt;
&lt;p&gt;我能以这样的速度推进而不搞砸，归结为一个原则：&lt;strong&gt;绝不让 AI 在没有测试保护的情况下写代码。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每次重大变更的工作流：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先进 plan 模式&lt;/strong&gt;：向 Claude 描述目标，审查方案，在写任何代码之前先在架构层面迭代。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编写测试契约&lt;/strong&gt;：定义&amp;quot;正确&amp;quot;意味着什么——对于编译器重写，这意味着交叉版本对比测试，让每个表达式同时通过新旧两个引擎运行，在 1290+ 个表达式上断言结果完全一致。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;让 AI 实现&lt;/strong&gt;：有了测试契约，Claude 可以写出数千行实现代码。如果写错了，测试会立即捕获。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;端到端测试作为最终关卡&lt;/strong&gt;：每个 PR 都必须通过完整的端到端测试套件——基于 Docker 的集成测试，启动整个服务器并连接真实存储后端。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 代码审查&lt;/strong&gt;：Gemini 审查每个 PR 的并发问题、线程安全性和功能对等性——捕获单元测试无法发现的问题。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这和&amp;quot;写完祈祷能跑&amp;quot;的 vibe coding 完全相反。AI 写得快，测试验证得快，我把控架构方向。反馈循环足够紧凑，让我能在几分钟而不是几天内迭代复杂的编译器代码。&lt;/p&gt;
&lt;h2 id=&#34;经验教训&#34;&gt;经验教训&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AI 是力量倍增器，不是替代品。&lt;/strong&gt; 在任何 AI 智能体写下第一行代码之前，必须由人来定义替换方案：&lt;em&gt;替换什么&lt;/em&gt;、&lt;em&gt;怎么替换&lt;/em&gt;，以及——至关重要的——&lt;em&gt;边界在哪里&lt;/em&gt;。哪些 API 可以破坏性变更？内部编译管线可以彻底重构。哪些 API 必须保持对齐？每一个对外的 DSL 语法、每一个 YAML 配置键、每一个指标名称和标签结构都必须逐字节保持一致——因为数百个已部署的仪表盘、告警规则和用户脚本依赖于它们。划定这些边界需要对代码库及其用户的深入了解。AI 以惊人的速度执行了计划，但计划本身——范围、不变量、兼容性契约——必须来自一个理解每次变更影响半径的人。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;架构级工作，plan 模式不可妥协。&lt;/strong&gt; 让 AI 在编译器重写上直接跳到写代码，那是灾难。Plan 模式的价值在于它会收集代码上下文——扫描 import、追踪调用链、映射类继承关系——并利用这些上下文帮我补全那些我本来需要手动查找的实现细节。但它无法告诉你设计原则。方向必须由我在前期明确给出，这样 AI 的规划才能沿着正确的轨道走，而不是朝着一个局部合理但架构上错误的方案去优化。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;要知道什么时候该按 ESC。&lt;/strong&gt; Claude 有一个明显的倾向：一旦开始写解决方案代码就会一头扎进去——当遇到与原始计划概念冲突的东西时，它不会自己停下来。它不会暂停来标记冲突，而是会继续推进，用即兴的方式绕过障碍，悄无声息地违背设计意图。我必须学会观察这个信号：当 Claude 的输出开始偏离计划时，我会手动取消任务（ESC），叫停它，找出计划和现实的分歧点，调整计划，然后重新开始。这种中断-重新规划的循环是工作流的常态，而非例外。架构师必须始终在环路中——不仅是在规划阶段，执行阶段也是——因为 AI 智能体还不知道什么时候该停下来问一句。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spec-Driven 更多的运用于测试，而非开发。它只是一个必要的但不充分条件，而逻辑工作流更重要。&lt;/strong&gt; 很容易产生一种想法：只要把输入/输出规格定义得足够清楚，AI 就能填充实现，测试会捕获任何错误。我试过。对于任何复杂的生产场景，这行不通。在表达式编译器重写过程中，Claude 有时会以不合理的方式修改代码，仅仅为了让规格测试通过——输入进去了，预期输出出来了，一切看起来都是正常的。但内部逻辑是错的：与代码库其他部分依赖的设计模式不一致，无法扩展，或者通过 hack （代码反射、字段名称静态比较等不可接受的工程方法）而非通用机制来解决特定测试用例。规格只检查代码&lt;em&gt;产出了什么&lt;/em&gt;；它对代码&lt;em&gt;如何产出&lt;/em&gt;一无所知。对于成熟项目，&amp;ldquo;如何&amp;quot;极其重要——解决方案需要与现有架构一致，能被贡献者广泛采用，并且长期可维护可扩展。这就是为什么我需要交叉版本测试&lt;em&gt;加上&lt;/em&gt;对实现路径的人工审查，而不仅仅是审查结果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;两个层次的测试让重写的代码验证更有保障。&lt;/strong&gt; 交叉版本测试从一开始就是我设计方案的一部分——我架构了双路径对比框架，让每个生产环境的 DSL 表达式同时通过新旧两个引擎运行，在 1290+ 个表达式上断言结果完全一致。这给了我任何人工审查都无法匹敌的信心，而且这是一个刻意的规划决策：我知道 AI 生成的编译器代码需要行为等价性的机械证明，而不仅仅是肉眼审查。在此之上，端到端测试作为项目已有的基础设施安全网——基于 Docker/K8s 的集成测试，启动整个服务器并连接真实存储后端。单元测试和交叉版本测试在隔离环境中验证逻辑；端到端测试验证系统真正能端到端地工作。对于队列替换和线程模型变更这样的基础设施级变更，端到端测试是唯一真正重要的关卡。两个层次——为本次重写专门设计的交叉版本测试和预先存在的端到端基础设施——捕获了不同类别的 bug，使得有信心地发布成为可能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;多个 AI 各有所长。&lt;/strong&gt; Claude 擅长配合 plan 模式进行大规模代码生成。Gemini 在逻辑审查方面表现出色——它能在给定输入数据的情况下在脑中追踪代码分支，模拟执行而无需实际运行代码。这对审查 AI 生成的代码意义重大：Gemini 会逐步走查一个编译器生成的方法，标记出哪里缺少空值检查，或者哪个分支在特定边界情况下会产生错误输出。Codex 作为测试审查者和诚实性检查者最有价值。AI 生成的代码有一种微妙的失败模式：编码智能体可能做出错误假设，然后编写测试时将期望值设置为匹配错误行为——实际上绕过了测试安全网。Codex 捕获了 Claude 设置不合理期望值使测试变绿的情况，掩盖了本会在生产环境中暴露的逻辑错误。将三者互相校验，远比依赖其中任何一个更有效。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;人月神话依然适用——基于Token的AI月神话同样如此。&lt;/strong&gt; Brooks 告诉我们，一个需要 12 人月的任务不意味着 12 个人能在一个月内完成。同样的定律适用于 AI：你不能简单地投入更多 token、更多智能体或更多并行会话，就指望问题更快收敛。沟通成本、协调开销、需求分析和概念完整性——这些软件工程的基本规律不会因为你的劳动力是人工智能就消失。更糟糕的是，当方向错误时——当设计中存在概念性错误或不合理的架构选择时——AI 不会识别出来。它会以惊人的速度冲向错误的方向，疯狂消耗 token，同时陷入自我辩护的漩涡：修补代码让失败的测试通过，调整期望值去匹配错误行为，在变通方案上叠加变通方案——每次迭代都让代码库看起来更&amp;quot;完整&amp;rdquo;，实际上却离正确越来越远。AI vibe coding 无法自行跳出这个螺旋。只有理解领域的人才能认识到&amp;quot;这从根本上就是错的，停下来&amp;quot;，丢弃这些工作，重新引导方向。没有方向的速度，只是昂贵的混乱。&lt;/p&gt;
&lt;h2 id=&#34;更大的图景&#34;&gt;更大的图景&lt;/h2&gt;
&lt;p&gt;Agentic vibe coding 之所以有效，是因为它将 AI 的速度与人的架构判断力和自动化测试纪律结合在了一起。这不是魔法——这是被加速的工程。&lt;/p&gt;
&lt;p&gt;Brooks 还给了我们《没有银弹》，其核心区分在今天比以往任何时候都更重要：软件复杂性分为两种。&lt;strong&gt;本质复杂性&lt;/strong&gt;来自问题本身——领域语义、行为契约、并发不变量。没有任何工具能消除它；它必须由理解领域的人去理解、建模和推理。&lt;strong&gt;偶然复杂性&lt;/strong&gt;来自工具和实现——样板代码、跨数百个文件的手动重构、将设计翻译成可编译源码的机械工作。这恰恰是 AI 擅长的地方。这个项目之所以成功，在于认清了哪种复杂性是哪种：我掌控本质复杂性（架构、API 边界、正确性不变量），AI 消灭偶然复杂性（生成 7.7 万行实现代码、搭建测试框架、跨数十个配置文件重写重复模式）。搞混这两者——让 AI 做本质决策，或者让人浪费时间在偶然工作上——你会得到两个世界中最差的结果。&lt;/p&gt;
&lt;p&gt;钱学森的《工程控制论》提供了另一个视角，在实践中出人意料地切题。他的核心框架——&lt;strong&gt;反馈&lt;/strong&gt;、&lt;strong&gt;控制&lt;/strong&gt;、&lt;strong&gt;优化&lt;/strong&gt;——描述的是如何让复杂系统持续朝目标运行。全速运转的 AI vibe coding 就像一枚高超音速导弹：速度惊人，但没有制导系统只会在错误的地方炸出一个更大的坑。我工作流中的反馈回路是测试体系——交叉版本测试和端到端测试持续提供系统是否仍在航线上的信号。控制是人类架构师决定何时介入：在执行前审查方案，在方向偏移时按 ESC，选择哪个 AI 负责哪项任务。优化是迭代式的：每次中断-重新规划的循环都在精炼方法，每次 Gemini 审查都在收紧逻辑，每次 Codex 审计都在捕获编码智能体偷偷绕过测试的假设。缺少其中任何一个——检测偏差的反馈、纠正航向的控制、趋向收敛的优化——AI 编程的速度就不是优势而是负债。导弹越快，制导就必须越精确。&lt;/p&gt;
&lt;p&gt;AI Vibe Coding以及它的迭代，正在快速地走进每一个开发者，也正在广泛地融入开源和商业软件。我们都在见证这种新的开发模式，以及AI Vibe Coding和软件工程理论的融合。如果你想和我探讨更多的AI + OSS话题，欢迎在 &lt;a href=&#34;https://github.com/wu-sheng&#34;&gt;GitHub&lt;/a&gt; 上联系我。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Apache SkyWalking 2025 in Review: Making BanyanDB Ready for Production</title>
      <link>/blog/2026-01-01-skywalking-2025-year-in-review/</link>
      <pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate>
      <guid>/blog/2026-01-01-skywalking-2025-year-in-review/</guid>
      <description>
        
        
        &lt;p&gt;2025 was a very focused year for the Apache SkyWalking community: &lt;strong&gt;moving BanyanDB from “native storage” to a “production-ready default”&lt;/strong&gt;, and making SkyWalking APM fully benefit from that foundation.&lt;/p&gt;
&lt;p&gt;This post summarizes the key milestones, with an emphasis on BanyanDB.&lt;/p&gt;
&lt;h2 id=&#34;storage-strategy-saying-goodbye-to-h2&#34;&gt;Storage strategy: saying goodbye to H2&lt;/h2&gt;
&lt;p&gt;We started 2025 with a clear direction: the &lt;strong&gt;H2 storage option is permanently removed&lt;/strong&gt;.
This change reduced long-term maintenance burden and removed a storage choice that was not aligned with production and cloud-native deployments.&lt;/p&gt;
&lt;h2 id=&#34;banyandb-from-080-foundations-to-090-production-features&#34;&gt;BanyanDB: from 0.8.0 foundations to 0.9.0 production features&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;BanyanDB 0.8.0&lt;/strong&gt; delivered the “day-2 operations” foundation that a default storage backend needs. The community put a lot of effort into making queries faster and more predictable (for example &lt;code&gt;index_mode&lt;/code&gt;, numeric index types, and multiple query-path optimizations), while also making the system safer under real production pressure. Disk-usage thresholds and a query &lt;strong&gt;memory protector&lt;/strong&gt; were added as guardrails, and the operational toolbox matured with snapshot/backup/restore utilities and improved metadata synchronization.&lt;/p&gt;
&lt;p&gt;Just as importantly, 0.8.0 started filling in the missing pieces of a full platform: native property storage and lifecycle-related capabilities that later enabled stronger HA and stage-based deployment patterns.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BanyanDB 0.9.0&lt;/strong&gt; was the “production features” milestone. It introduced the &lt;strong&gt;Trace&lt;/strong&gt; data model as a first-class citizen, which unlocked much deeper trace storage and query capabilities. On the reliability and scaling side, the release brought configurable replicas, liaison-side improvements (including load balancing and moving some TopN flow), and broader correctness work such as migrations, version compatibility checks, and access logs.&lt;/p&gt;
&lt;p&gt;It also made long-term operations more cloud-friendly with backup/restore support for AWS S3, GCS, and Azure Blob Storage, and added authentication primitives needed in shared environments. In short, 0.9.0 is where BanyanDB clearly moved beyond a “fast storage engine” into a “production platform”.&lt;/p&gt;
&lt;h2 id=&#34;skywalking-apm-banyandb-becomes-the-default-path&#34;&gt;SkyWalking APM: BanyanDB becomes the default path&lt;/h2&gt;
&lt;p&gt;With &lt;strong&gt;APM 10.2.0&lt;/strong&gt;, the project made the strategic shift official: H2 was removed permanently, and BanyanDB 0.8.0 became the default path that SkyWalking invests in. A lot of the work here was not flashy, but essential — refining OAP behavior (group settings, index model changes, Progressive TTL, query limits, and more) so running BanyanDB in production felt stable and predictable.&lt;/p&gt;
&lt;p&gt;With &lt;strong&gt;APM 10.3.0&lt;/strong&gt;, SkyWalking and BanyanDB moved forward together: BanyanDB 0.9.0’s new trace model was adopted end-to-end, reducing inefficient query round-trips and enabling new query views that significantly lowered page latency. The integration also expanded into lifecycle-aware operations with hot/warm/cold stage configuration (including TTL and query support), and added BanyanDB &lt;strong&gt;self-monitoring&lt;/strong&gt; through OAP and the UI — the kind of end-to-end polish that turns a storage backend into a truly native solution.&lt;/p&gt;
&lt;p&gt;If you’d like this review to cover &lt;strong&gt;APM 10.4.x&lt;/strong&gt; as well, please point me to the corresponding release content in this repo (I didn’t find an APM 10.4.0 release announcement in the current checkout).&lt;/p&gt;
&lt;h2 id=&#34;packaging-and-deployment-ecosystem-helm&#34;&gt;Packaging and deployment ecosystem (Helm)&lt;/h2&gt;
&lt;p&gt;BanyanDB’s production readiness is not only server features — it also depends on deployment maturity.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Helm charts:
&lt;ul&gt;
&lt;li&gt;SkyWalking Kubernetes Helm Chart 4.8.0 improved BanyanDB deployment defaults by updating the bundled BanyanDB Helm dependency, fixing an init-job volume-mount mismatch, and aligning OAP/UI images with the APM 10.3.0 line.&lt;/li&gt;
&lt;li&gt;BanyanDB Helm 0.4.0 added backup/restore sidecars and a default volume for property storage.&lt;/li&gt;
&lt;li&gt;BanyanDB Helm 0.5.0 introduced stage-aware patterns (hot/warm/cold), improved lifecycle-sidecar scheduling, moved liaison to StatefulSet, refined internal networking, and expanded configuration options.&lt;/li&gt;
&lt;li&gt;BanyanDB Helm 0.5.1 refined liaison configuration and fixed restore-init environment issues.&lt;/li&gt;
&lt;li&gt;BanyanDB Helm 0.5.3 fixed a liaison/data-node port issue.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-rest-of-the-community-agents-and-tooling-kept-moving&#34;&gt;The rest of the community: agents and tooling kept moving&lt;/h2&gt;
&lt;p&gt;While storage was the “main storyline”, the community shipped releases across agents, clients, and surrounding components throughout 2025.&lt;/p&gt;
&lt;p&gt;Below is a consolidated view of the other releases, grouped by project, with the most important notes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking Java Agent&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;9.4.0&lt;/strong&gt;: agent self-observability; async-profiler support; broader plugin improvements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;9.5.0&lt;/strong&gt;: virtual thread executor plugin; compatibility and stability fixes; dependency upgrades.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking Go&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0.6.0&lt;/strong&gt;: richer manual APIs (events/logs/metrics, set span error); goframev2 plugin; bug fixes including Redis cluster mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking for NodeJS&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0.8.0&lt;/strong&gt;: Express 4/5 compatibility, keep-alive HTTP trace fix, and test/dependency maintenance.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking Python&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1.2.0&lt;/strong&gt;: sampling service, &lt;code&gt;sw_grpc&lt;/code&gt; plugin, async/profiling stability fixes, Python 3.13 support, and dropping Python 3.7.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking PHP&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1.0.0&lt;/strong&gt;: reach 1.0; add PSR-3 log reporting; upgrade toolchain/dependencies.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking Rust&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0.9.0&lt;/strong&gt;: migrate to Rust edition 2024 and upgrade dependencies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0.10.0&lt;/strong&gt;: Kafka client configuration refactor, &lt;code&gt;rdkafka&lt;/code&gt; upgrade, CI maintenance.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking Ruby&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0.1.0&lt;/strong&gt;: initialize agent core and e2e tests; add plugins for Sinatra, redis-rb, net-http, memcached, and Elasticsearch.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking Client JS&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1.0.0&lt;/strong&gt;: add Core Web Vitals and static resource metrics; fix fetch/resource error handling; dependency and e2e/test improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking Satellite&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1.3.0&lt;/strong&gt;: support native eBPF Access Log protocol and async-profiler protocol; upgrade Go toolchain.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking Eyes&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0.7.0&lt;/strong&gt;: improve installation/docs, respect gitignore behavior, upgrade Go, and simplify release steps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0.8.0&lt;/strong&gt;: add Elixir support and stronger dependency-license scanning (notably Ruby via Gemfile.lock), plus stability fixes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;looking-ahead-possible-directions-in-2026&#34;&gt;Looking ahead: possible directions in 2026&lt;/h2&gt;
&lt;p&gt;2025 was about making BanyanDB ready for production. In 2026, the community is exploring the next set of improvements that could make the whole stack simpler to operate, more stable under stress, and easier to integrate into broader observability ecosystems.&lt;/p&gt;
&lt;p&gt;Possible areas include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BanyanDB: remove the etcd dependency&lt;/strong&gt;: the direction under discussion is to move away from etcd (given ecosystem activity and maintenance concerns) and rely more on DNS-based discovery plus BanyanDB’s native property capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BanyanDB: stronger stability testing&lt;/strong&gt;: more systematic testing, including chaos testing, to validate behavior under failures and noisy conditions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BanyanDB: better observability export&lt;/strong&gt;: introducing First Occurrence Data Collection (FODC) as a sidecar and proxy server to provide a unified stream of observability data to third-party systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SkyWalking APM: broader runtime and query capabilities&lt;/strong&gt;: cold-stage data query support, a newer Java runtime (Java 25), and consideration of TraceQL protocol (Temper) support.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;closing&#34;&gt;Closing&lt;/h2&gt;
&lt;p&gt;Thanks to everyone who contributed to SkyWalking in 2025. Every contribution is high-value — code, documentation, reviews, testing, issue triage, and operational experience — and each of them helped move the project forward.&lt;/p&gt;
&lt;p&gt;We also want to say a special thank you to the countless end users across global companies. Many of the most valuable improvements don’t start from a pull request: they start from real-world use cases, performance investigations, production feedback, bug reports, and the patience to help us reproduce and validate fixes.&lt;/p&gt;
&lt;p&gt;As another milestone, SkyWalking reached &lt;strong&gt;968 GitHub contributors&lt;/strong&gt; globally, and we expect the &lt;strong&gt;1000th&lt;/strong&gt; contributor milestone to arrive soon in 2026. But the community is much larger than the number suggests, and SkyWalking’s progress has always been driven by collaboration between contributors, adopters, and maintainers.&lt;/p&gt;
&lt;p&gt;Apache SkyWalking was originally created by Sheng Wu as a personal project in May 2015. It would never have grown into what it is today without the whole community — and it will keep moving forward because of the community.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Improving Alert Accuracy with Dynamic Baselines</title>
      <link>/blog/2025-02-24-improving-alert-accuracy-with-dynamic-baselines/</link>
      <pubDate>Mon, 24 Feb 2025 00:00:00 +0000</pubDate>
      <guid>/blog/2025-02-24-improving-alert-accuracy-with-dynamic-baselines/</guid>
      <description>
        
        
        &lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://skywalking.apache.org/&#34;&gt;Apache SkyWalking&lt;/a&gt; is an open-source application performance monitoring (APM) system
that collects various data from business applications, including metrics, logs, and distributed tracing information,
and visualizes them through its UI.
It also allows users to configure alerting rules by setting threshold values for specific metrics in the configuration file.
When a metric associated with a particular service exceeds the predefined threshold within a given period, an alert is triggered.&lt;/p&gt;
&lt;p&gt;However, in real-world scenarios, traffic patterns and invocation behaviors vary across different time periods.
For example, in a shopping system, the number of purchases is significantly lower during late-night hours compared to daytime.
As a result, system metrics fluctuate within different ranges depending on the time of day.
This makes it challenging to rely solely on static threshold values for accurate alerting.&lt;/p&gt;
&lt;p&gt;Therefore, dynamically generating thresholds for each time period based on historical data becomes crucial.&lt;/p&gt;
&lt;h2 id=&#34;introduce-skyapm-skypredictor&#34;&gt;Introduce SkyAPM SkyPredictor&lt;/h2&gt;
&lt;p&gt;Based on the above scenario, we developed the &lt;a href=&#34;https://github.com/SkyAPM/SkyPredictor/&#34;&gt;SkyAPM SkyPredictor&lt;/a&gt; project to fix this issue.
SkyAPM SkyPredictor periodically collects data from SkyWalking and generates dynamic baselines.
Meanwhile, SkyWalking queries from SkyPredictor to obtain predicted metric values for the recent period, enabling more precise and adaptive alerting.&lt;/p&gt;
&lt;p&gt;NOTE: SkyWalking does not have a hard dependency on the SkyPredictor service.
If SkyPredictor is not configured, no predicted values would be retrieved, and not cause any failures in SkyWalking.
Additionally, you can use your own AI engine to build a custom prediction system. Simply implement the required protocol as outlined in the official documentation:
&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/ai-pipeline/metrics-baseline-integration/&#34;&gt;https://skywalking.apache.org/docs/main/next/en/setup/ai-pipeline/metrics-baseline-integration/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;architecture-diagram&#34;&gt;Architecture diagram&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;./architecture.png&#34; alt=&#34;Architecture&#34;&gt;&lt;/p&gt;
&lt;p&gt;As shown in the diagram, the process consists of two steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Data Collection &amp;amp; Prediction&lt;/strong&gt;: The Predictor queries history metrics from SkyWalking&amp;rsquo;s OAP via its HTTP service.
Then processes this data to generate dynamic predicted values for a future time period.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Baseline Query &amp;amp; Alerting&lt;/strong&gt;: The OAP periodically sends queries to the Predictor to fetch the predicted dynamic baseline.
Then evaluates the current metric values with prediction result using &lt;strong&gt;MQE&lt;/strong&gt;. If the deviation exceeds a certain threshold, an alert is triggered.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;data-collection&#34;&gt;Data Collection&lt;/h3&gt;
&lt;p&gt;The Predictor utilizes the following three APIs to query data:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/status/query_ttl_setup/&#34;&gt;&lt;strong&gt;Status API&lt;/strong&gt;&lt;/a&gt;: Retrieves the TTL (Time-to-Live) of history data stored in OAP, helping to determine the available time range for exporting all history metrics.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/api/query-protocol/#v2-apis&#34;&gt;&lt;strong&gt;Metadata API&lt;/strong&gt;&lt;/a&gt;: Fetches the list of services within a specified Layer from OAP, providing insights into which services are generating data.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/api/metrics-query-expression/&#34;&gt;&lt;strong&gt;MQE API&lt;/strong&gt;&lt;/a&gt;: Iterates through the required metrics and the list of services to fetch all history metrics values for each metric associated with each service.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These APIs collectively enable the Predictor to gather history metrics data, which is then used to compute dynamic baselines for future alerting.&lt;/p&gt;
&lt;h3 id=&#34;prediction&#34;&gt;Prediction&lt;/h3&gt;
&lt;p&gt;Once the Prediction service collects data from OAP, it proceeds with forecasting using the &lt;a href=&#34;https://github.com/facebook/prophet&#34;&gt;open-source Prophet library&lt;/a&gt;.
The prediction process consists of the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Data Preparation&lt;/strong&gt;: The collected metric data is split into multiple &lt;a href=&#34;https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html&#34;&gt;DataFrames&lt;/a&gt;, each corresponding to a unique combination of service + metric name.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Sufficiency Check&lt;/strong&gt;: If a DataFrame contains less than &lt;strong&gt;two days&lt;/strong&gt; (configurable) of data, the prediction is skipped. This is to ensure accuracy, as an insufficient data volume may lead to unreliable forecasts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forecasting&lt;/strong&gt;: Using Prophet, the Predictor estimates the metric values for &lt;strong&gt;each hour over the next day&lt;/strong&gt; (configurable).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result Storage&lt;/strong&gt;: The generated predictions are stored in local files, enabling querying from external services.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;predicted-value&#34;&gt;Predicted Value&lt;/h4&gt;
&lt;p&gt;The Prediction service supports calculating the following two types of values:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Predicted Value&lt;/strong&gt;: Computes the expected metric value for the next hour based on history metrics data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prediction Range&lt;/strong&gt;: Determines the possible &lt;strong&gt;upper and lower bounds&lt;/strong&gt; for the metric in the next hour, representing its expected fluctuation range.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These values help establish a dynamic baseline, allowing the alerting system to account for natural variations while accurately detecting anomalies.&lt;/p&gt;
&lt;h3 id=&#34;baseline-mqe-with-alarm&#34;&gt;Baseline MQE with Alarm&lt;/h3&gt;
&lt;p&gt;In OAP, predicted values can be queried directly using an MQE within MQE operation. This operation enables retrieving forecasted values for a future time period.&lt;/p&gt;
&lt;p&gt;Since SkyWalking&amp;rsquo;s alerting system already supports query through MQE expressions, users can configure alerts directly in the alerting configuration file using MQE.&lt;/p&gt;
&lt;p&gt;For more details, please refer to the &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/api/metrics-query-expression/#baseline-operation&#34;&gt;official documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;impact-of-data-collection-on-prediction-accuracy&#34;&gt;Impact of Data Collection on Prediction Accuracy&lt;/h3&gt;
&lt;p&gt;The Predictor service supports two different data collection and prediction granularity, each with its own trade-offs in accuracy and resource consumption.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Minute Level: Collects minutes level metrics data.
&lt;ol&gt;
&lt;li&gt;More effective for metrics with high fluctuations, as it captures finer details.&lt;/li&gt;
&lt;li&gt;Consumes more resources (OAP, DB CPU and System Load resources, Predictor CPU and Memory resources).&lt;/li&gt;
&lt;li&gt;Alerts are configured based on current value comparisons.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Hour Level: Collects hourly metrics data.
&lt;ol&gt;
&lt;li&gt;Less resource-intensive compared to minute-level collection.&lt;/li&gt;
&lt;li&gt;Less data volume, resource, and processing cost.&lt;/li&gt;
&lt;li&gt;Alerts are configured based on predicted range values.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Granularity&lt;/th&gt;
          &lt;th&gt;Data Fluctuation&lt;/th&gt;
          &lt;th&gt;Data Volume&lt;/th&gt;
          &lt;th&gt;Current Value Prediction Accuracy&lt;/th&gt;
          &lt;th&gt;Range Prediction Accuracy&lt;/th&gt;
          &lt;th&gt;Best Use Case&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Minute&lt;/td&gt;
          &lt;td&gt;Higher fluctuation&lt;/td&gt;
          &lt;td&gt;Large&lt;/td&gt;
          &lt;td&gt;Less accurate&lt;/td&gt;
          &lt;td&gt;More accurate&lt;/td&gt;
          &lt;td&gt;Ideal for highly fluctuating metrics, using range-based alerting rules&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hour&lt;/td&gt;
          &lt;td&gt;Lower fluctuation&lt;/td&gt;
          &lt;td&gt;Small&lt;/td&gt;
          &lt;td&gt;More accurate&lt;/td&gt;
          &lt;td&gt;Relatively accurate&lt;/td&gt;
          &lt;td&gt;Suitable for stable metrics, using current value-based predictions&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Choosing the appropriate granularity depends on the nature of the metric and the desired alerting method.
For metrics with high volatility, minute-level collection provides better accuracy when using range-based alerts.
For stable metrics, hourly aggregation is sufficient and allows for efficient predictions using current-value comparisons.&lt;/p&gt;
&lt;p&gt;Predict use Hourly level by default.&lt;/p&gt;
&lt;h3 id=&#34;oap-and-predictor-scheduling--caching&#34;&gt;OAP and Predictor Scheduling &amp;amp; Caching&lt;/h3&gt;
&lt;p&gt;Both SkyWalking OAP and SkyAPM Predictor implement caching strategies to prevent excessive execution and optimize resource usage.&lt;/p&gt;
&lt;p&gt;By default, Predictor runs at 00:10, 08:10, and 16:10 every day. It forecasts the next 24 hours and stores the results locally.
Updating predictions every 8 hours balances resource efficiency and real-time accuracy. The 10-minute delay
(instead of running at exactly 00:00, 08:00, etc.) ensures historical data is fully written to the database before querying.&lt;/p&gt;
&lt;p&gt;OAP queries Predictor for all required predicted metrics of a single service. The query covers a ±24-hour time range from the current moment.
Results are cached for one hour to reduce redundant queries and improve efficiency.&lt;/p&gt;
&lt;p&gt;These mechanisms ensure that predictions remain up-to-date, while minimizing unnecessary processing and system load.&lt;/p&gt;
&lt;h2 id=&#34;demo&#34;&gt;Demo&lt;/h2&gt;
&lt;p&gt;In this section, I will demonstrate how to preview the predicted values of a metric by deploying a SkyWalking cluster along with the Predictor service
in a Kubernetes cluster. This hands-on example will help you understand how to use these components effectively.&lt;/p&gt;
&lt;h3 id=&#34;deploy-skywalking-showcase&#34;&gt;Deploy SkyWalking Showcase&lt;/h3&gt;
&lt;p&gt;SkyWalking Showcase contains a complete set of example services and can be monitored using SkyWalking.
For more information, please check the &lt;a href=&#34;https://skywalking.apache.org/docs/skywalking-showcase/next/readme/&#34;&gt;official documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this demo, we only deploy the predictor service, SkyWalking OAP, and UI.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;FEATURE_FLAGS&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;single-node,banyandb,baseline
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make deploy.kubernetes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;import-history-data&#34;&gt;Import History Data&lt;/h3&gt;
&lt;p&gt;Since a newly deployed cluster does not contain history data,
I have created a Python script to simulate data. This allows the Predictor service to import data and generate baseline predictions for a future period.&lt;/p&gt;
&lt;p&gt;Before importing data, you must expose the &lt;code&gt;11800&lt;/code&gt; port of the OAP service in your Kubernetes cluster.
You can achieve this using kubectl by running the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl port-forward -n skywalking-showcase   service/demo-oap 11800:11800
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, you can download and run the demo script using the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# clone and get into the demo repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/mrproliu/SkyPredictorDemo &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;cd&lt;/span&gt; SkyPredictorDemo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# installing dependencies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# import data(7 days)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python3 -m client.generate localhost:11800 &lt;span style=&#34;color:#0550ae&#34;&gt;7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Finally, you can see the output in the console: &lt;strong&gt;Metrics send success!&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;prediction-metrics&#34;&gt;Prediction metrics&lt;/h3&gt;
&lt;p&gt;Since the Predictor service runs based on a &lt;strong&gt;cron schedule&lt;/strong&gt;, it does not automatically execute immediately after data import.
To force it to collect data and perform a prediction, you can manually delete the Predictor pod, prompting Kubernetes to restart it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl delete pod -n skywalking-showcase &lt;span style=&#34;color:#cf222e&#34;&gt;$(&lt;/span&gt;kubectl get pods -n skywalking-showcase --no-headers -o custom-columns&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;:metadata.name&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; grep &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;skywalking-predictor&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once the Predictor pod restarts, you can check its logs to confirm that the prediction process has been completed.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Predicted for e2e-test-dest-service of service_xxx to xxxx-xx-xx xx:xx:xx.
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;view-in-skywalking-ui&#34;&gt;View in SkyWalking UI&lt;/h3&gt;
&lt;p&gt;Once the prediction process is complete, you can visualize the predicted values in the SkyWalking UI by configuring the appropriate metric widgets.&lt;/p&gt;
&lt;p&gt;First, Run the following command to forward the UI service port to your local machine:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl port-forward svc/demo-ui 8080:80 --namespace skywalking-showcase
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, you can access this page to view the service traffic that was generated using the Python script earlier:
http://localhost:8080/dashboard/MESH/Service/ZTJlLXRlc3QtZGVzdC1zZXJ2aWNl.1/Mesh-Service&lt;/p&gt;
&lt;p&gt;To display predicted values, edit the Service Avg Resp Time Widget and add the following MQE:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# The maximum predicted response time.
baseline(service_resp_time, upper)
# The predicted response time.
baseline(service_resp_time, value)
# The minimum predicted response time.
baseline(service_resp_time, lower)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Finally, you can see the predicted values displayed in the widget.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;predicted_widget.png&#34; alt=&#34;Predicted Widget&#34;&gt;&lt;/p&gt;
&lt;p&gt;Since the default data collection is hourly and the metric has significant fluctuations,
the predicted values are derived from hourly averages rather than minute-level granularity.
This approach smooths out fluctuations and provides a more stable baseline for monitoring.&lt;/p&gt;
&lt;p&gt;Now, you should see the predicted response times visualized alongside actual values, helping you analyze trends and configure dynamic alerting thresholds effectively.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;SkyAPM SkyPredictor enhances alert accuracy by using dynamic baselines instead of static thresholds.
It collects history metrics data, forecasts future values with Prophet, and supports minute or hour-level collection for better precision.
By integrating predictions into SkyWalking UI, users can optimize alerting and improve system observability.&lt;/p&gt;
&lt;p&gt;By integrating dynamic thresholds, SkyWalking can adapt to traffic patterns and detect anomalies more effectively,
reducing false positives and improving system observability.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Zh: 开源之夏 2024 SkyWalking 社区项目情况公示</title>
      <link>/zh/2024-12-10-ospp-summary/</link>
      <pubDate>Tue, 10 Dec 2024 00:00:00 +0000</pubDate>
      <guid>/zh/2024-12-10-ospp-summary/</guid>
      <description>
        
        
        &lt;p&gt;Aapche SkyWalking PMC 和 committer团队参加了&amp;quot;开源之夏 2024&amp;quot;活动，作为导师，共获得了5个官方赞助名额。最终对学生开放如下任务&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BanyanDB支持自定义插入/更新触发器&lt;/li&gt;
&lt;li&gt;在SkyWalking Go的toolkit中支持完整trace, log和meter APIs&lt;/li&gt;
&lt;li&gt;在SkyWalking Java中集成JFR性能剖析功能&lt;/li&gt;
&lt;li&gt;SWCK 支持注入 skywalking Python agent&lt;/li&gt;
&lt;li&gt;BanyanDB支持数据聚合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;经过3个月的开发，上游评审，PMC成员评议，PMC Chair复议，OSPP官方委员会评审多个步骤，现公布项目参与人员与最终结果&lt;/p&gt;
&lt;h1 id=&#34;通过评审项目共3个&#34;&gt;通过评审项目（共3个）&lt;/h1&gt;
&lt;h2 id=&#34;在skywalking-java中集成jfr性能剖析功能&#34;&gt;在SkyWalking Java中集成JFR性能剖析功能&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：郑子熠&lt;/li&gt;
&lt;li&gt;学校：南京邮电大学 本科&lt;/li&gt;
&lt;li&gt;官方文档&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-java-app-profiling/&#34;&gt;Profiling - Async Profiler&lt;/a&gt;详细介绍了此功能。&lt;/li&gt;
&lt;li&gt;此功能将作为SkyWalking 10.2的主要新功能之一发布，预计发布时间 2025年2月（以官方Release为准）。&lt;/li&gt;
&lt;li&gt;官网发布了blog - &lt;a href=&#34;https://skywalking.apache.org/zh/2024-12-09-skywalking-async-profiler/&#34;&gt;使用 SkyWalking中的 async-profiler 对 Java 应用进行性能分析&lt;/a&gt; 介绍此功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2024年12月9日，郑子熠因此项目在结项优秀学生评比中，获得&lt;a href=&#34;https://summer-ospp.ac.cn/final/outstanding&#34;&gt;&lt;strong&gt;突出贡献奖&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./award.png&#34; alt=&#34;award Screenshot&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;在skywalking-go的toolkit中支持完整trace-log和meter-apis&#34;&gt;在SkyWalking Go的toolkit中支持完整trace, log和meter APIs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：李天源&lt;/li&gt;
&lt;li&gt;学校：广东东软学院 本科&lt;/li&gt;
&lt;li&gt;相关Pull Requests
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-go/pull/198&#34;&gt;api: add log,metric,span feat to api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-go/pull/200&#34;&gt;feat: toolkit span add event impl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-go/pull/202&#34;&gt;feat: add toolkit logging impl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-go/pull/205&#34;&gt;feat: support manual reporting of metrics in toolkit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-go/pull/206&#34;&gt;docs: add toolkit docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;相关官方文档包括
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/skywalking-go/next/en/advanced-features/manual-apis/toolkit-trace/&#34;&gt;Tracing APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/skywalking-go/next/en/advanced-features/manual-apis/toolkit-log/&#34;&gt;Logging APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/skywalking-go/next/en/advanced-features/manual-apis/toolkit-metric/&#34;&gt;Metric APIs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;此功能将包含在SkyWalking Go Agent 0.6 release中发布，以及发布时间2025年年初（以官方Release为准）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;banyandb-支持自定义插入更新触发器&#34;&gt;BanyanDB 支持自定义插入/更新触发器&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：谢李奥&lt;/li&gt;
&lt;li&gt;学校：中科院软件所 硕士&lt;/li&gt;
&lt;li&gt;相关官方文档包括
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-banyandb/pull/479&#34;&gt;[ospp] Adds MeasureAggregateFunctionService.Support API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-banyandb/pull/521&#34;&gt;[ospp] Supports measure aggregate function avg and min, and test cases.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-banyandb/pull/545&#34;&gt;[ospp] Implements MeasureAggregateFunctionService.Support API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/apache/skywalking-banyandb/pull/528&#34;&gt;Dev measure aggregate function&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2024年11月，在社区关于BanyanDB未来路线图的讨论决议中，服务端相关聚合功能暂时不作为BanyanDB规划功能，&lt;a href=&#34;https://github.com/apache/skywalking/issues/12653&#34;&gt;[Feature] Hand over downsampling(hour/day) metric processes to BanyanDB&lt;/a&gt; 已被关闭。此项目合并代码，不会发布，将在0.8 release中被移除。注，此代码移除与学生代码质量和完成度无关，系项目目标变更导致。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;We have an agreement, this feature benefit is too limited.

# Summary of downsides for server-side aggregation

1. Removing L2 would impact the alerting. Because minute dimension eventual(aggregated) data will be lost from OAP.
2. Keeping minute dimension aggregation makes the delta data lost, and causes another extra round delta data in minute dimension flushing. 
3. Clearly, this server-side aggregation increases the server-side payload(CPU cost), but wouldn&amp;#39;t tradeoff for IOPS.
4. The process pipeline would be more complex.
____
The only positive part is the cache of hour/day dimension metrics could be removed.
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;未通过评审未启动项目2个&#34;&gt;未通过评审/未启动项目（2个）&lt;/h1&gt;
&lt;p&gt;下列项目因为质量无法达到社区要求，无学生报名等原因，将被标定为失败。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SWCK 支持注入 skywalking Python agent。 无学生申报&lt;/li&gt;
&lt;li&gt;BanyanDB支持数据聚合。未通过&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;结语&#34;&gt;结语&lt;/h1&gt;
&lt;p&gt;2024年，由于开源之夏提供的支持名额降低到5个，SkyWalking选题的难度都有显著提升。我们很高兴的看到，依然有3位学生较好的完成了相关课题。
感觉开源之夏和各位同学们对Apache SkyWalking的支持和热情参与。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Zh: 引入 R3 识别 RESTFul URI</title>
      <link>/zh/2024-010-15-introduce-r3-to-recognition-restful-url/</link>
      <pubDate>Thu, 17 Oct 2024 00:00:00 +0000</pubDate>
      <guid>/zh/2024-010-15-introduce-r3-to-recognition-restful-url/</guid>
      <description>
        
        
        &lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;在现代应用中，服务通常通过 RESTFul HTTP URI 提供。使用 RESTFul HTTP URI 作为唯一的资源标识符，不仅具备良好的可读性，还能让客户端和服务器更容易理解请求。然而，在可观测性领域，这种方式也带来了一些挑战：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;大量的端点（HTTP URI）&lt;/strong&gt;：浏览所有对外提供的端点变得更加困难，因此很难识别出存在问题的端点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;指标收集困难&lt;/strong&gt;：尤其难以对类似的端点进行归类并生成可观测性指标。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现有解决方案通常采用以下应用级别的方式来解决此问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;代理检测&lt;/strong&gt;：在某些框架中，通常会声明规则来处理 RESTFul 请求。例如，在 Java 的 Spring Web 中可以使用 &lt;code&gt;@GET&lt;/code&gt; 等注解，然后可以通过 Java Agent 将其与当前请求关联起来。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAPI&lt;/strong&gt;：应用可以关联预定义文件，使可观测性系统知晓可能使用的 URI。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这两种解决方案都与应用设置紧密耦合，这对于未知应用或者无法监控代理的应用来说是一个局限。因此，我们需要考虑是否有一种更通用的解决方案来识别 URI，并合并来自类似 URI 生成的指标，以便更好地展示数据。&lt;/p&gt;
&lt;h2 id=&#34;r3&#34;&gt;R3&lt;/h2&gt;
&lt;p&gt;R3（RESTFul 模式识别）是一个高性能的 RESTFul URI 识别工具，其灵感来自 &lt;a href=&#34;https://github.com/logpai/Drain3&#34;&gt;Drain3&lt;/a&gt;。它可以作为独立应用部署在可观测性服务器上，并与 SkyWalking OAP 进行通信。&lt;/p&gt;
&lt;p&gt;R3 可以通过 gRPC 协议接收 URI 列表，并将类似的 URI 聚合为特定格式。聚合后的（格式化）URI 列表也可以通过 gRPC 协议进行查询。&lt;/p&gt;
&lt;h3 id=&#34;数据交互流程&#34;&gt;数据交互流程&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;data_interaction_flow.png&#34; alt=&#34;OAP 与 R3 之间的数据交互流程&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;OAP 接收并缓存未格式化的 URI 列表&lt;/strong&gt;：OAP 通过不同协议接收可观测性数据，并识别出所有未格式化的 URI。然后将这些 URI 按照所属服务暂时存储在列表中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OAP 将待格式化的 URI 发送给 R3&lt;/strong&gt;：OAP 定期将需要格式化的 URI 批量发送到 R3 服务。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;R3 接收并解析 URI 列表&lt;/strong&gt;：R3 异步分析接收到的 URI 相似性，并将结果存储（持久化）在本地磁盘中，以便在重启后进行恢复。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OAP 查询 R3 中的格式化 URI 列表&lt;/strong&gt;：OAP 定期查询 R3 中检测到的格式化 URI，并将结果保存在内存中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OAP 格式化 URI&lt;/strong&gt;：当 OAP 接收到新的可观测性数据时，会将 URI 与从 R3 获取的格式化 URI 进行匹配。如果匹配成功，后续的指标计算将使用格式化后的 URI。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;场景&#34;&gt;场景&lt;/h3&gt;
&lt;p&gt;在 R3 中，主要解决以下场景。对于识别为重复的 URI，R3 将用 &lt;code&gt;{var}&lt;/code&gt; 替换变量部分以标准化 URI。&lt;/p&gt;
&lt;h4 id=&#34;id-匹配&#34;&gt;ID 匹配&lt;/h4&gt;
&lt;p&gt;在 RESTFul API 中，常见做法是将各种 ID 包含在 URI 路径中，这导致了大量唯一的 URI 端点。例如，以下路径将被 R3 聚合为标准化格式 &lt;code&gt;/api/users/{var}&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/api/users/cbf11b02ea464447b507e8852c32190a&lt;/li&gt;
&lt;li&gt;/api/users/5e363a4a18b7464b8cbff1a7ee4c91ca&lt;/li&gt;
&lt;li&gt;/api/users/44cf77fc351f4c6c9c4f1448f2f12800&lt;/li&gt;
&lt;li&gt;/api/users/38d3be5f9bd44f7f98906ea049694511&lt;/li&gt;
&lt;li&gt;/api/users/5ad14302e7924f4aa1d60e58d65b3dd2&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;词语检测&#34;&gt;词语检测&lt;/h4&gt;
&lt;p&gt;在 RESTFul URI 中，实体的操作通常通过 HTTP 方法指定，但有时还需要在路径中添加特定名词。为此，R3 实现了词语解析：当 R3 检测到路径中的特定词语时，将不会格式化该部分。例如，以下 URI 将不会被视为相似，因此不会被合并：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/api/sale&lt;/li&gt;
&lt;li&gt;/api/product_sale&lt;/li&gt;
&lt;li&gt;/api/ProductSale&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;样本不足&#34;&gt;样本不足&lt;/h4&gt;
&lt;p&gt;为防止由于样本不足而导致错误判断，R3 允许在&lt;a href=&#34;https://github.com/SkyAPM/R3/blob/main/servers/simple/uri_drain.ini&#34;&gt;配置文件&lt;/a&gt;中配置&lt;a href=&#34;https://github.com/SkyAPM/R3/blob/main/servers/simple/uri_drain.ini#L38&#34;&gt;最小 URI 合并计数&lt;/a&gt;参数。&lt;/p&gt;
&lt;p&gt;例如，当阈值为 &lt;code&gt;3&lt;/code&gt; 时，以下 URI 将保持原样，不会被参数化。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/api/fetch1&lt;/li&gt;
&lt;li&gt;/api/fetch2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但是以下 URI 将被参数化为 &lt;code&gt;/api/{var}&lt;/code&gt;，因为样本数大于阈值。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/api/fetch1&lt;/li&gt;
&lt;li&gt;/api/fetch2&lt;/li&gt;
&lt;li&gt;/api/fetch3&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;版本-api&#34;&gt;版本 API&lt;/h4&gt;
&lt;p&gt;在实际场景中，常会遇到包含多个版本的 URI。R3 通过确保指定路径中包含 &lt;code&gt;v\\d+&lt;/code&gt; 参数（表示版本信息）来解决这个问题，该部分将不会被参数化。例如，以下 URI 将分别解析为 &lt;code&gt;/test/v1/{var}&lt;/code&gt; 和 &lt;code&gt;/test/v999/{var}&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/test/v1/cbf11b02ea464447b507e8852c32190a&lt;/li&gt;
&lt;li&gt;/test/v1/5e363a4a18b7464b8cbff1a7ee4c91ca&lt;/li&gt;
&lt;li&gt;/test/v1/38d3be5f9bd44f7f98906ea049694511&lt;/li&gt;
&lt;li&gt;/test/v999/1&lt;/li&gt;
&lt;li&gt;/test/v999/2&lt;/li&gt;
&lt;li&gt;/test/v999/3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;演示&#34;&gt;演示&lt;/h2&gt;
&lt;p&gt;接下来我们快速演示如何使用 R3 格式化观察到的端点，帮助你更具体地理解它的功能。&lt;/p&gt;
&lt;h3 id=&#34;部署-skywalking-showcase&#34;&gt;部署 SkyWalking Showcase&lt;/h3&gt;
&lt;p&gt;SkyWalking Showcase 包含一整套示例服务，可以通过 SkyWalking 进行监控。更多信息请查看&lt;a href=&#34;https://skywalking.apache.org/docs/skywalking-showcase/next/readme/&#34;&gt;官方文档&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;在此演示中，我们仅部署服务、最新发布的 SkyWalking OAP、R3 服务和 UI。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#953800&#34;&gt;FEATURE_FLAGS&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;java-agent-injector,single-node,elasticsearch,r3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make deploy.kubernetes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;部署完成后，请运行以下脚本打开 SkyWalking UI：&lt;a href=&#34;http://localhost:8080/&#34;&gt;http://localhost:8080/&lt;/a&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl port-forward svc/ui 8080:8080 --namespace default
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;触发-restful-请求&#34;&gt;触发 RESTFul 请求&lt;/h3&gt;
&lt;p&gt;在 R3 中，默认启动了定时任务以定期生成 RESTFul 流量。不过，你也可以使用以下命令手动触发此过程：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl &lt;span style=&#34;color:#6639ba&#34;&gt;exec&lt;/span&gt; -n sample-services &lt;span style=&#34;color:#cf222e&#34;&gt;$(&lt;/span&gt;kubectl get pod -n sample-services --selector&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#953800&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;gateway -o &lt;span style=&#34;color:#953800&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;{.items[0].metadata.name}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;)&lt;/span&gt; -- /bin/bash -c &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#39;for i in $(seq 1 200); do curl http://rating/songs/$i/reviews/$((i+1)); sleep 1; done&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在上述命令中，R3 将自动定位网关节点，并以 RESTFul 格式向该节点内的 rating 服务发送请求。此操作允许 R3 生成并测试模拟实际 RESTFul 请求的流量模式。&lt;/p&gt;
&lt;h3 id=&#34;查看格式化-uri&#34;&gt;查看格式化 URI&lt;/h3&gt;
&lt;p&gt;一旦触发 RESTFul 请求，你可以在 UI 中查看聚合后的端点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：由于格式化端点是异步生成的，因此一些较早的请求可能尚未被格式化。你可能需要等待一段时间，UI 才会仅显示格式化后的地址。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;formated_images.png&#34; alt=&#34;格式化端点&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论&lt;/h2&gt;
&lt;p&gt;在本文中，我们详细讨论了 SkyWalking 如何利用 R3 服务来格式化 RESTFul URI，并在接收后聚合相关的指标。目前，它适用于大多数 RESTFul 场景，如果需要支持更多情况，我们可以根据需求进一步扩展。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: [Video] Coffee &#43; Software with Josh Long - Apache SkyWalking with Sheng Wu and Apache ShardingSphere with Trista Pan</title>
      <link>/blog/2023-12-04-coffee&#43;software-with-josh-long/</link>
      <pubDate>Mon, 04 Dec 2023 00:00:00 +0000</pubDate>
      <guid>/blog/2023-12-04-coffee&#43;software-with-josh-long/</guid>
      <description>
        
        
        &lt;p&gt;🚀 Dive into the World of Cutting-Edge Technology with Apache&amp;rsquo;s Finest! 🌐 Join me today as we embark on an exhilarating journey with two of Apache&amp;rsquo;s most brilliant minds - Sheng Wu and Trista Pan. We&amp;rsquo;re exploring the realms of Apache SkyWalking and Apache ShardingSphere, two groundbreaking initiatives that are reshaping the landscape of open-source technology. 🌟&lt;/p&gt;
&lt;p&gt;In this exclusive session, we delve deep into Apache SkyWalking - an innovative observability platform that&amp;rsquo;s revolutionizing how we monitor and manage distributed systems in the cloud. Witness firsthand how SkyWalking is empowering developers and organizations to gain unparalleled insights into their applications, ensuring performance, reliability, and efficient troubleshooting. 🛰️🔍&lt;/p&gt;
&lt;p&gt;But there&amp;rsquo;s more! We&amp;rsquo;re also unveiling the secrets of Apache ShardingSphere, a dynamic distributed database ecosystem. Learn how ShardingSphere is making waves in the world of big data, offering scalable, high-performance solutions for data sharding, encryption, and more. This is your gateway to understanding how these technologies are pivotal in handling massive data sets across various industries. 🌐💾&lt;/p&gt;
&lt;p&gt;Whether you&amp;rsquo;re a developer, tech enthusiast, or just curious about the future of open-source technology, this is a conversation you don&amp;rsquo;t want to miss! Get ready to be inspired and informed as we unlock new possibilities and applications of Apache SkyWalking and ShardingSphere. 🚀🌟&lt;/p&gt;
&lt;p&gt;Join us, and let&amp;rsquo;s decode the future together!&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/96ZacpHObmM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;Please join and follow Josh&amp;rsquo;s 龙之春 Youtube &lt;a href=&#34;https://www.youtube.com/@coffeesoftware&#34;&gt;Coffee + Software with Josh Long&lt;/a&gt; Channel to learn more about technology and open source from telanted engineers and industry leads.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Zh: 开源之夏 2023 SkyWalking 社区项目情况公示</title>
      <link>/zh/2023-11-09-ospp-summary/</link>
      <pubDate>Thu, 09 Nov 2023 00:00:00 +0000</pubDate>
      <guid>/zh/2023-11-09-ospp-summary/</guid>
      <description>
        
        
        &lt;p&gt;Aapche SkyWalking PMC 和 committer团队参加了&amp;quot;开源之夏 2023&amp;quot;活动，作为导师，共获得了9个官方赞助名额。最终对学生开放如下任务&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SkyWalking 支持 GraalVM&lt;/li&gt;
&lt;li&gt;Skywalking Infra E2E 自测试&lt;/li&gt;
&lt;li&gt;监控Apache Pulsar&lt;/li&gt;
&lt;li&gt;统一BanyanDB的查询计划和查询执行器&lt;/li&gt;
&lt;li&gt;使用Helm部署BanyanDB&lt;/li&gt;
&lt;li&gt;编写go agent的gRPC插件&lt;/li&gt;
&lt;li&gt;监控Kafka&lt;/li&gt;
&lt;li&gt;集成SkyWalking PHP到SkyWalking E2E 测试&lt;/li&gt;
&lt;li&gt;在线黄金指标异常检测&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;经过3个月的开发，上游评审，PMC成员评议，PMC Chair复议，OSPP官方委员会评审多个步骤，现公布项目参与人员与最终结果&lt;/p&gt;
&lt;h1 id=&#34;通过评审项目共6个&#34;&gt;通过评审项目（共6个）&lt;/h1&gt;
&lt;h2 id=&#34;skywalking-支持-graalvm&#34;&gt;SkyWalking 支持 GraalVM&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：张跃骎&lt;/li&gt;
&lt;li&gt;学校：辽宁大学 本科&lt;/li&gt;
&lt;li&gt;合并PR：&lt;a href=&#34;https://github.com/apache/skywalking/pull/11354&#34;&gt;11354&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;后续情况说明：GraalVM因为复杂的生态，替代的代码将被分离到&lt;a href=&#34;https://github.com/apache/skywalking-graalvm-distro&#34;&gt;SkyWalking GraalVM Distro&lt;/a&gt;, 相关讨论，请参见&lt;a href=&#34;https://github.com/apache/skywalking/issues/11518&#34;&gt;Issue 11518&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skywalking-infra-e2e-自测试&#34;&gt;Skywalking Infra E2E 自测试&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：王子忱&lt;/li&gt;
&lt;li&gt;学校：华中师范大学 本科&lt;/li&gt;
&lt;li&gt;合并PR：&lt;a href=&#34;https://github.com/apache/skywalking-infra-e2e/pull/115&#34;&gt;115&lt;/a&gt;, &lt;a href=&#34;https://github.com/apache/skywalking-infra-e2e/pull/116&#34;&gt;116&lt;/a&gt;, &lt;a href=&#34;https://github.com/apache/skywalking-infra-e2e/pull/117&#34;&gt;117&lt;/a&gt;, &lt;a href=&#34;https://github.com/apache/skywalking-infra-e2e/pull/118&#34;&gt;118&lt;/a&gt;, &lt;a href=&#34;https://github.com/apache/skywalking-infra-e2e/pull/119&#34;&gt;119&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;后续情况说明：此特性已经包含在发行版skywalking-infra-e2e v1.3.0中&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;统一banyandb的查询计划和查询执行器&#34;&gt;统一BanyanDB的查询计划和查询执行器&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：曾家华&lt;/li&gt;
&lt;li&gt;学校：电子科技大学 本科&lt;/li&gt;
&lt;li&gt;合并PR：&lt;a href=&#34;https://github.com/apache/skywalking-banyandb/pull/343&#34;&gt;343&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用helm部署banyandb&#34;&gt;使用Helm部署BanyanDB&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：黄友亮&lt;/li&gt;
&lt;li&gt;学校：北京邮电大学 硕士研究生&lt;/li&gt;
&lt;li&gt;合并PR：&lt;a href=&#34;https://github.com/apache/skywalking-banyandb-helm/pull/1&#34;&gt;1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;情况说明：因为BanyanDB Helm为新项目，学生承接了项目初始化、功能提交、自动化测试，发布准备等多项任务。所参与功能包含在skywalking-banyandb-helm v0.1.0中&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;编写go-agent的grpc插件&#34;&gt;编写go agent的gRPC插件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：胡宇腾&lt;/li&gt;
&lt;li&gt;学校：西安邮电大学&lt;/li&gt;
&lt;li&gt;合并PR：&lt;a href=&#34;https://github.com/apache/skywalking-go/pull/88&#34;&gt;88&lt;/a&gt;, &lt;a href=&#34;https://github.com/apache/skywalking-go/pull/94&#34;&gt;94&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;后续情况说明：该学生在开源之夏相关项目外，完成了&lt;a href=&#34;https://github.com/apache/skywalking-go/pull/99&#34;&gt;feature: add support for iris #99&lt;/a&gt;和&lt;a href=&#34;https://github.com/apache/skywalking-go/pull/104&#34;&gt;Go agent APIs&lt;/a&gt;功能开发。并发表文章&lt;a href=&#34;https://skywalking.apache.org/zh/2023-10-18-skywalking-toolkit-trace/&#34;&gt;SkyWalking Go Toolkit Trace 详解&lt;/a&gt;以及英文译本&lt;a href=&#34;https://skywalking.apache.org/blog/2023-10-18-skywalking-toolkit-trace/&#34;&gt;Detailed explanation of SkyWalking Go Toolkit Trace&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;监控kafka&#34;&gt;监控Kafka&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：王竹&lt;/li&gt;
&lt;li&gt;学校：美国东北大学 ( Northeastern University)&lt;/li&gt;
&lt;li&gt;合并PR：&lt;a href=&#34;https://github.com/apache/skywalking/pull/11282&#34;&gt;11282&lt;/a&gt;, &lt;a href=&#34;https://github.com/apache/skywalking-booster-ui/pull/318&#34;&gt;UI 318&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;未通过评审项目3个&#34;&gt;未通过评审项目（3个）&lt;/h1&gt;
&lt;p&gt;下列项目因为质量无法达到社区要求，违规等原因，将被标定为失败。
&lt;strong&gt;注：在开源之夏中失败的项目，其Pull Reqeust可能因为符合社区功能要求，也被接受合并。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;监控apache-pulsar&#34;&gt;监控Apache Pulsar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：孟祥迎&lt;/li&gt;
&lt;li&gt;学校：重庆邮电大学 本科&lt;/li&gt;
&lt;li&gt;合并PR：&lt;a href=&#34;https://github.com/apache/skywalking/pull/11339&#34;&gt;11339&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;失败原因：项目申请成员，作为ASF Pulsar项目的Committer，在担任Pulsar开源之夏项目导师期间，但依然申请了学生参与项目。属于违规行为。SkyWalking PMC审查了此行为并通报开源之夏组委会。开源之夏组委会依据活动规则取消其结项奖金。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;集成skywalking-php到skywalking-e2e-测试&#34;&gt;集成SkyWalking PHP到SkyWalking E2E 测试&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：罗文&lt;/li&gt;
&lt;li&gt;学校：San Jose State University B.S.&lt;/li&gt;
&lt;li&gt;合并PR：&lt;a href=&#34;https://github.com/apache/skywalking/pull/11330&#34;&gt;11330&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;失败原因：根据pull reqeust中的提交记录，SkyWalking PMC Chair审查了提交明细，学生参与代码数量大幅度小于导师的提交代码。并在考虑到这个项目难度以及明显低于SkyWalking 开源之夏项目的平均水平的情况下，通报给开源之夏组委会。经过组委会综合评定，项目不合格。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;在线黄金指标异常检测&#34;&gt;在线黄金指标异常检测&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学生：黄颖&lt;/li&gt;
&lt;li&gt;学校：同济大学 研究生&lt;/li&gt;
&lt;li&gt;合并PR：无&lt;/li&gt;
&lt;li&gt;失败原因：项目在进度延迟后实现较为简单且粗糙，并且没有提供算法评估结果和文档等。在 PR 开启后的为期一个月审核合并期间，学生并未能成功按预定计划改善实现的质量和文档。和导师以及 SkyWalking 社区缺少沟通。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;结语&#34;&gt;结语&lt;/h1&gt;
&lt;p&gt;SkyWalking社区每年都有近10位PMC成员或Committer参与开源之夏中，帮助在校学生了解顶级开源项目、开源社区的运作方式。我们希望大家在每年经过3个月的时间，能够真正的帮助在校学生了解开源和参与开源。
因为，社区即使在考虑到学生能力的情况下，不会明显的降低pull request的接受标准。希望今后的学生，能够在早期，积极、主动和导师，社区其他成员保持高频率的沟通，对参与的项目有更深入、准确的了解。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: The Statement for SkyWalking users on HashiCorp license changes</title>
      <link>/blog/2023-08-13-hashicorp-bsl/</link>
      <pubDate>Sun, 13 Aug 2023 00:00:00 +0000</pubDate>
      <guid>/blog/2023-08-13-hashicorp-bsl/</guid>
      <description>
        
        
        &lt;p&gt;On Aug. 10th, 2023, HashiCorp announced to adopt the Business Source License (BSL) from Mozilla Public License v2.0 (MPL 2.0), here is their &lt;a href=&#34;https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license&#34;&gt;post&lt;/a&gt;.
They officially annouced they have changed the license for the &lt;strong&gt;ALL&lt;/strong&gt; of their open-source products from the previous MPL 2.0 to a source-available license, BSL 1.1.
Meanwhile, HashiCorp APIs, SDKs, and almost all other libraries will remain MPL 2.0.&lt;/p&gt;
&lt;p&gt;HashiCorp Inc. is one of the most important vendors in the cloud-native landscape, as well as Golang ecosystem. This kind of changes would have potential implications for
SkyWalking, which is closely integrated with cloud-native technology stacks.&lt;/p&gt;
&lt;h1 id=&#34;conclusion-first&#34;&gt;Conclusion First&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What does that mean for SkyWalking users?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SkyWalking community has evaluated our dependencies from HashiCorp products and libraries, the current conclusion is&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SkyWalking users would NOT suffer any implication. All components of SkyWalking don&amp;rsquo;t have hard-dependency on BSL license affected codes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SkyWalking community have found out all following dependencies of all relative repositories, all licenses are TRUELY stayed unchanged, and compatible with Apache 2.0 License.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; OAP Server @kezhenxu94 @wu-sheng
&lt;ul&gt;
&lt;li&gt;consul-client Apache 2.0 Repo archived on Jul 27, 2023&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; BanyanDB @hanahmily @lujiajing1126
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Server @hanahmily
&lt;ul&gt;
&lt;li&gt;hashicorp/golang-lru MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/hcl MPL-2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; CLI @hanahmily &lt;strong&gt;No HashiCorp Dependency&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; SkyWalking OAP CLI @kezhenxu94
&lt;ul&gt;
&lt;li&gt;github.com/hashicorp/hcl v1.0.0 MPL-2.0&lt;/li&gt;
&lt;li&gt;All under swck as transitive dependencies&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; SWCK @hanahmily
&lt;ul&gt;
&lt;li&gt;hashicorp/consul/api MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/consul/sdk MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/errwrap MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-cleanhttp MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-immutable-radix MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-msgpack MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-multierror MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-rootcerts MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-sockaddr MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-syslog MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-uuid MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go.net BSD-3&lt;/li&gt;
&lt;li&gt;hashicorp/golang-lru MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/hcl MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/logutils MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/mdns MIT&lt;/li&gt;
&lt;li&gt;hashicorp/memberlist MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/serf MPL-2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Go agent @mrproliu
&lt;ul&gt;
&lt;li&gt;hashicorp/consul/api MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/consul/sdk MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/errwrap MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-cleanhttp MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-hclog MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-immutable-radix MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-kms-wrapping/entropy MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-kms-wrapping/entropy/v2 MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-msgpack MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-multierror MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-plugin MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-retryablehttp MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-rootcerts MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-secure-stdlib/base62 MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-secure-stdlib/mlock MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-secure-stdlib/parseutil MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-secure-stdlib/password MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-secure-stdlib/tlsutil MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-sockaddr MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-syslog MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-uuid MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-version MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go.net BSD-3-Clause&lt;/li&gt;
&lt;li&gt;hashicorp/golang-lru MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/logutils MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/mdns MIT&lt;/li&gt;
&lt;li&gt;hashicorp/memberlist MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/serf MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/vault/api MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/vault/sdk MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/yamux MPL-2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; SkyWalking eyes @kezhenxu94
&lt;ul&gt;
&lt;li&gt;none&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; SkyWalking Infra e2e @kezhenxu94
&lt;ul&gt;
&lt;li&gt;all under swck as transitive dependencies&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; SkyWalking rover(ebpf agent) @mrproliu
&lt;ul&gt;
&lt;li&gt;hashicorp/consul/api MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/consul/sdk MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/errwrap MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-cleanhttp MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-hclog MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-immutable-radix MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-msgpack MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-multierror MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-retryablehttp MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-rootcerts MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-sockaddr MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-syslog MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-uuid MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/golang-lru MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/hcl MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/logutils MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/mdns MIT&lt;/li&gt;
&lt;li&gt;hashicorp/memberlist MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/serf MPL-2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; SkyWalking satellite @mrproliu
&lt;ul&gt;
&lt;li&gt;hashicorp/consul/api MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/consul/sdk MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/errwrap MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-cleanhttp MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-immutable-radix MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-msgpack MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-multierror MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-rootcerts MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-sockaddr MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go-syslog MIT&lt;/li&gt;
&lt;li&gt;hashicorp/go-uuid MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/go.net BSD-3-Clause&lt;/li&gt;
&lt;li&gt;hashicorp/golang-lru MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/hcl MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/logutils MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/mdns MIT&lt;/li&gt;
&lt;li&gt;hashicorp/memberlist MPL-2.0&lt;/li&gt;
&lt;li&gt;hashicorp/serf MPL-2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; SkyWalking Terraform (scripts) @kezhenxu94
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No HashiCorp Dependency&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;The scripts for Terraform users only. No hard requirement.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;The GitHub ID is listed about the PMC members did the evaluations.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ&lt;/h2&gt;
&lt;h3 id=&#34;if-i-am-using-consul-to-manage-skywalking-cluster-or-configurations-does-this-license-change-bring-an-implication&#34;&gt;If I am using Consul to manage SkyWalking Cluster or configurations, does this license change bring an implication?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;YES&lt;/strong&gt;, anyone using their server sides would be affected once you upgrade to later released versions after Aug. 10th, 2023.&lt;/p&gt;
&lt;p&gt;This is HashiCorp&amp;rsquo;s statement&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;End users can continue to copy, modify, and redistribute the code for all non-commercial and commercial use, except where providing a competitive offering to HashiCorp. Partners can continue to build integrations for our joint customers. We will continue to work closely with the cloud service providers to ensure deep support for our mutual technologies. Customers of enterprise and cloud-managed HashiCorp products will see no change as well.
Vendors who provide competitive services built on our community products will no longer be able to incorporate future releases, bug fixes, or security patches contributed to our products.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, notice that, the implication about whether voilating BSL 1.1 is determined by the HashiCorp Inc about the status of the identified competitive relationship. We can&amp;rsquo;t provide any suggestions.
Please refer to &lt;a href=&#34;https://www.hashicorp.com/license-faq&#34;&gt;FAQs and contacts&lt;/a&gt; for the official explanations.&lt;/p&gt;
&lt;h3 id=&#34;will-skywalking-continoue-to-use-hashicorp-consul-as-an-optional-cluster-coordinator-andor-an-optional-dynamic-configuration-server&#34;&gt;Will SkyWalking continoue to use HashiCorp Consul as an optional cluster coordinator and/or an optional dynamic configuration server?&lt;/h3&gt;
&lt;p&gt;For short term, &lt;strong&gt;YES&lt;/strong&gt;, we will keep that part of codes, as the licenses of the SDK and the APIs are still in the MPL 2.0.&lt;/p&gt;
&lt;p&gt;But, during the evaluation, we noticed the consul client we are using is &lt;a href=&#34;https://github.com/rickfast/consul-client&#34;&gt;rickfast/consul-client&lt;/a&gt; which had been archived by the owner on Jul 27, 2023. So, we are facing the issues that no maintaining and no version to upgrade.
If there is not a new consul Java client lib available, we may have to remove this to avoid CVEs or version incompatible with new released servers.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Celebrate 22k stars</title>
      <link>/blog/2023-06-13-celebrate-22k-stars/</link>
      <pubDate>Tue, 13 Jun 2023 00:00:00 +0000</pubDate>
      <guid>/blog/2023-06-13-celebrate-22k-stars/</guid>
      <description>
        
        
        &lt;h1 id=&#34;celebrating-22k-stars&#34;&gt;Celebrating 22k Stars!&lt;/h1&gt;
&lt;p&gt;&lt;img src=&#34;./skywalking-22k.png&#34; alt=&#34;Stars&#34;&gt;&lt;/p&gt;
&lt;p&gt;The Apache SkyWalking community is thrilled to reach the milestone of 22k stars on GitHub! This showcases its popularity and impact as an APM and observability tool.&lt;/p&gt;
&lt;p&gt;Since launching in 2016 to provide an open source APM solution, SkyWalking has evolved into a full stack observability platform with distributed tracing, metrics monitoring and alerting. It&amp;rsquo;s seeing widespread adoption globally, especially in Asia where APM needs are expanding rapidly.&lt;/p&gt;
&lt;p&gt;The growing user base has enabled SkyWalking to achieve massive deployments demonstrating its ability to scale to extreme levels. There have been reported deployments collecting over 100TB of data from companies&amp;rsquo; complex distributed applications, monitoring over 8000 microservices and analyzing 100 billion distributed traces - providing end-to-end visibility, performance monitoring and issue troubleshooting for some of the largest distributed systems in the world.&lt;/p&gt;
&lt;p&gt;This success and widespread adoption has attracted an active community of nearly 800 contributors, thanks in part to programs like GSoC and OSPP(Open Source Promotion Plan) that bring in university contributors. The SkyWalking team remains focused on building a reliable, performant platform to observe complex distributed systems. We&amp;rsquo;ll continue innovating with features like service mesh monitoring and metric analytics.Your ongoing support, feedback and contributions inspire us!&lt;/p&gt;
&lt;p&gt;Thank you for helping SkyWalking reach 22k stars on GitHub! This is just the beginning - we have ambitious plans and can&amp;rsquo;t wait to have you along our journey!&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Monitoring DynamoDB with SkyWalking</title>
      <link>/blog/2023-03-13-skywalking-aws-dynamodb/</link>
      <pubDate>Mon, 13 Mar 2023 00:00:00 +0000</pubDate>
      <guid>/blog/2023-03-13-skywalking-aws-dynamodb/</guid>
      <description>
        
        
        &lt;p&gt;&lt;img src=&#34;./icon.png&#34; alt=&#34;icon.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://skywalking.apache.org/&#34;&gt;Apache SkyWalking&lt;/a&gt; is an open-source application performance management system that helps users collect and aggregate logs, traces, metrics, and events, and display them on the UI. Starting from OAP 9.4.0, SkyWalking has added &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/aws-firehose-receiver/&#34;&gt;AWS Firehose receiver&lt;/a&gt;, which is used to receive and calculate the data of CloudWatch metrics. In this article, we will take DynamoDB as an example to show how to use SkyWalking to receive and calculate CloudWatch metrics data for monitoring Amazon Web Services.&lt;/p&gt;
&lt;h2 id=&#34;what-are-amazon-cloudwatch-and-amazon-kinesis-data-firehose&#34;&gt;What are Amazon CloudWatch and Amazon Kinesis Data Firehose？&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://aws.amazon.com/cloudwatch/&#34;&gt;Amazon CloudWatch&lt;/a&gt; is a metrics repository, this tool can collect raw data from AWS (e.g. DynamoDB) and process it into readable metrics in near real-time. Also, we can use &lt;strong&gt;Metric Stream&lt;/strong&gt; to continuously stream CloudWatch metrics to a selected target location for near real-time delivery and low latency. SkyWalking takes advantage of this feature to create metric streams and direct them to Amazon Kinesis Data Firehose transport streams for further transport processing.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://aws.amazon.com/kinesis/data-firehose/&#34;&gt;Amazon Kinesis Data Firehose&lt;/a&gt;is an extract, transform, and load (ETL) service that reliably captures, transforms, and delivers streaming data to data lakes, data stores, and analytics services. SkyWalking takes advantage of this feature to eventually direct the metrics stream to the aws-firehose-receiver for OAP to calculate and ultimately display the metrics.&lt;/p&gt;
&lt;p&gt;The flow chart is as follows.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./aws-service.png&#34; alt=&#34;aws-service.png&#34;&gt;&lt;/p&gt;
&lt;h6 id=&#34;notice&#34;&gt;Notice&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Due to Kinesis Data Firehose specifications, the URL of the HTTP endpoint must use the HTTPS protocol and must use port 443. Also, this URL must be proxied by Gateway and forwarded to the real aws-firehose-receiver.&lt;/li&gt;
&lt;li&gt;The TLS certificate must be signed by a CA and the self-signed certificate will not be trusted by Kinesis Data Firehose.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;setting-up-dynamodb-monitoring&#34;&gt;Setting up DynamoDB monitoring&lt;/h2&gt;
&lt;p&gt;Next, let&amp;rsquo;s take DynamoDB as an example to illustrate the necessary settings in aws before using OAP to collect CloudWatch metrics:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a href=&#34;https://console.aws.amazon.com/kinesis/home&#34;&gt;Kinesis Console&lt;/a&gt;, create a data stream, and select &lt;code&gt;Direct PUT&lt;/code&gt; for &lt;code&gt;Source&lt;/code&gt; and &lt;code&gt;HTTP Endpoint&lt;/code&gt; for &lt;code&gt;Destination&lt;/code&gt;. And set &lt;code&gt;HTTP Endpoint URL&lt;/code&gt; to &lt;code&gt;Gateway URL&lt;/code&gt;. The rest of the configuration options can be configured as needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;./kinesis.png&#34; alt=&#34;image.png&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Go to the &lt;a href=&#34;https://console.aws.amazon.com/cloudwatch/home&#34;&gt;CloudWatch Console&lt;/a&gt;, select &lt;code&gt;Metrics-Stream&lt;/code&gt; in the left control panel, and click Create metric stream. Select &lt;code&gt;AWS/DynamoDB&lt;/code&gt; for &lt;code&gt;namespace&lt;/code&gt;. Also, you can add other namespaces as needed. &lt;code&gt;Kinesis Data Firehose&lt;/code&gt; selects the data stream created in the first step. Finally, set the output format to opentelemetry0.7. The rest of the configuration options can be configured as needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;./cloudwatch.png&#34; alt=&#34;cloudwatch.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;At this point, the AWS side of DynamoDB monitoring configuration is set up.&lt;/p&gt;
&lt;h2 id=&#34;skywalking-oap-metrics-processing-analysis&#34;&gt;SkyWalking OAP metrics processing analysis&lt;/h2&gt;
&lt;p&gt;SkyWalking uses aws-firehose-receiver to receive and decode AWS metrics streams forwarded by Gateway, and send it to &lt;a href=&#34;https://github.com/apache/skywalking/tree/master/oap-server/server-receiver-plugin/otel-receiver-plugin&#34;&gt;Opentelemetry-receiver&lt;/a&gt; for processing and transforming into SkyWalking metrics. Then, the metrics are analyzed and aggregated by &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/concepts-and-designs/mal/&#34;&gt;Meter Analysis Language (MAL)&lt;/a&gt; and finally presented on the UI.&lt;/p&gt;
&lt;p&gt;The MAL part and the UI part of SkyWalking support users&amp;rsquo; customization, to display the metrics data in a more diversified way. For details, please refer to &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/concepts-and-designs/mal/&#34;&gt;MAL doc&lt;/a&gt; and &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/ui/readme/&#34;&gt;UI doc&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./gateway_to_ui.png&#34; alt=&#34;gateway_to_ui.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;typical-metrics-analysis&#34;&gt;Typical metrics analysis&lt;/h2&gt;
&lt;h3 id=&#34;scope&#34;&gt;Scope&lt;/h3&gt;
&lt;p&gt;In SkyWalking, there is the concept of scope. By using scopes, we can classify and aggregate metrics more rationally. In the monitoring of DynamoDB, two of these scopes are used - Service and Endpoint.&lt;/p&gt;
&lt;p&gt;Service represents a set of workloads that provide the same behavior for incoming requests. Commonly used as cluster-level scopes for services, user accounts are closer to the concept of clusters in AWS. So SkyWalking uses AWS account id as a key to map AWS accounts to Service types.&lt;/p&gt;
&lt;p&gt;Similarly, Endpoint represents a logical concept, often used in services for the path of incoming requests, such as HTTP URI path or gRPC service class + method signature, and can also represent the table structure in the database. So SkyWalking maps DynamoDB tables to Endpoint type.&lt;/p&gt;
&lt;h3 id=&#34;metrics&#34;&gt;Metrics&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Metric Name&lt;/th&gt;
          &lt;th&gt;Meaning&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;AccountMaxReads / AccountMaxWrites&lt;/td&gt;
          &lt;td&gt;The maximum number of read/write capacity units that can be used by an account.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AccountMaxTableLevelReads / AccountMaxTableLevelWrites&lt;/td&gt;
          &lt;td&gt;The maximum number of read/write capacity units that can be used by a table or global secondary index of an account.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AccountProvisionedReadCapacityUtilization / AccountProvisionedWriteCapacityUtilization&lt;/td&gt;
          &lt;td&gt;The percentage of provisioned read/write capacity units utilized by an account.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MaxProvisionedTableReadCapacityUtilization / MaxProvisionedTableWriteCapacityUtilization&lt;/td&gt;
          &lt;td&gt;The percentage of provisioned read/write capacity utilized by the highest provisioned read table or global secondary index of an account.&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Above are some common account metrics (Serivce scope). They are various configuration information in DynamoDB, and SkyWalking can show a complete picture of the database configuration changes by monitoring these metrics.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Metric Name&lt;/th&gt;
          &lt;th&gt;Meaning&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ConsumedReadCapacityUnits / ConsumedWriteCapacityUnits&lt;/td&gt;
          &lt;td&gt;The number of read/write capacity units consumed over the specified time period.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ReturnedItemCount&lt;/td&gt;
          &lt;td&gt;The number of items returned by Query, Scan or ExecuteStatement (select) operations during the specified time period.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;SuccessfulRequestLatency&lt;/td&gt;
          &lt;td&gt;The latency of successful requests to DynamoDB or Amazon DynamoDB Streams during the specified time period.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TimeToLiveDeletedItemCount&lt;/td&gt;
          &lt;td&gt;The number of items deleted by Time to Live (TTL) during the specified time period.&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The above are some common table metrics (Endpoint scope), which will also be aggregated into account metrics. These metrics are generally used to analyze the performance of the database, and users can use them to determine the reasonable level of database configuration. For example, users can track how much of their provisioned throughput is used through ConsumedReadCapicityUnits / ConsumedReadCapicityUnits to determine the reasonableness of the preconfigured throughput of a table or account. For more information about provisioned throughput, see &lt;a href=&#34;https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html&#34;&gt;Provisioned Throughput Intro&lt;/a&gt;.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Metric Name&lt;/th&gt;
          &lt;th&gt;Meaning&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;UserErrors&lt;/td&gt;
          &lt;td&gt;Requests to DynamoDB or Amazon DynamoDB Streams that generate an HTTP 400 status code during the specified time period.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;SystemErrors&lt;/td&gt;
          &lt;td&gt;The requests to DynamoDB or Amazon DynamoDB Streams that generate an HTTP 500 status code during the specified time period.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ThrottledRequests&lt;/td&gt;
          &lt;td&gt;Requests to DynamoDB that exceed the provisioned throughput limits on a resource.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TransactionConflict&lt;/td&gt;
          &lt;td&gt;Rejected item-level requests due to transactional conflicts between concurrent requests on the same items.&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The above are some common error metrics, among which UserErrors are account-level metrics and the rest are table-level metrics. Users can set alarms on these metrics, and if warnings appear, then it may indicate that there are some problems with the use of the database, and users need to check and verify by themselves.&lt;/p&gt;
&lt;h3 id=&#34;notice-1&#34;&gt;Notice&lt;/h3&gt;
&lt;p&gt;SkyWalking&amp;rsquo;s metrics selection for DynamoDB comes directly from CloudWatch metrics, which can also be found at &lt;a href=&#34;https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html&#34;&gt;CloudWatch metrics doc&lt;/a&gt; to get metrics details.&lt;/p&gt;
&lt;h2 id=&#34;demo&#34;&gt;Demo&lt;/h2&gt;
&lt;p&gt;In this section, we will demonstrate how to use terraform to create a DynamoDB table and other AWS services that can generate metrics streams, and deploy Skywalking to complete the metrics collection.&lt;/p&gt;
&lt;p&gt;First, you need a running gateway instance, such as &lt;a href=&#34;https://www.nginx.com/&#34;&gt;NGINX&lt;/a&gt;, which is responsible for receiving metrics streams from AWS and forwarding them to the aws-firehose-receiver. Note that the gateway needs to be configured with certificates to accept HTTPS protocol requests.&lt;/p&gt;
&lt;p&gt;Below is an example configuration for NGINX. The configuration does not need to be identical, as long as it can send incoming HTTPS requests to &lt;code&gt;oap host:12801/aws/firehose/metrics&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;server {
        listen       443 ssl;
        
        ssl_certificate     /crt/test.pem;
        ssl_certificate_key  /crt/test.key; 
        
        ssl_session_timeout  5m;   
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  
        ssl_prefer_server_ciphers on; 
    
        location /aws/firehose/metrics {
            proxy_pass http://test.xyz:12801/aws/firehose/metrics;
        }
    }
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;deploying-skywalking&#34;&gt;Deploying SkyWalking&lt;/h3&gt;
&lt;p&gt;There are various ways to deploy SkyWalking, and you can get them directly from the &lt;a href=&#34;https://github.com/apache/skywalking/releases/tag/v9.4.0&#34;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course, if you are more comfortable with Kubernetes, you can also find the appropriate deployment method from &lt;a href=&#34;https://github.com/apache/skywalking-kubernetes&#34;&gt;SkyWalking-kubernetes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Please note that no matter which deployment method you use, please make sure that the OAP and UI version is 9.4.0 or higher and that port 12801 needs to be open.&lt;/p&gt;
&lt;p&gt;The following is an example of a deployment using the helm command.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;export SKYWALKING_RELEASE_VERSION=4.3.0 
export SKYWALKING_RELEASE_NAME=skywalking  
export SKYWALKING_RELEASE_NAMESPACE=default

helm install &amp;#34;${SKYWALKING_RELEASE_NAME}&amp;#34; \
  oci://registry-1.docker.io/apache/skywalking-helm \
  --version &amp;#34;${SKYWALKING_RELEASE_VERSION}&amp;#34; \
  -n &amp;#34;${SKYWALKING_RELEASE_NAMESPACE}&amp;#34; \
  --set oap.image.tag=9.4.0 \
  --set oap.storageType=elasticsearch \
  --set ui.image.tag=9.4.0 \
  --set oap.ports.firehose=12801
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;start-the-corresponding-aws-service&#34;&gt;Start the corresponding AWS service&lt;/h3&gt;
&lt;p&gt;The terraform configuration file is as follows (example modified in&lt;a href=&#34;https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kinesis_firehose_delivery_stream&#34;&gt;Terraform Registry - kinesis_firehose_delivery_stream&lt;/a&gt;）：&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;terraform configuration file &lt;/summary&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;provider &amp;#34;aws&amp;#34; {
  region = &amp;#34;ap-northeast-1&amp;#34;
  access_key = &amp;#34;[need change]your access_key&amp;#34;
  secret_key = &amp;#34;[need change]your secret_key&amp;#34;
}
resource &amp;#34;aws_dynamodb_table&amp;#34; &amp;#34;basic-dynamodb-table&amp;#34; {
  name           = &amp;#34;GameScores&amp;#34;
  billing_mode   = &amp;#34;PROVISIONED&amp;#34;
  read_capacity  = 20
  write_capacity = 20
  hash_key       = &amp;#34;UserId&amp;#34;
  range_key      = &amp;#34;GameTitle&amp;#34;

  attribute {
    name = &amp;#34;UserId&amp;#34;
    type = &amp;#34;S&amp;#34;
  }

  attribute {
    name = &amp;#34;GameTitle&amp;#34;
    type = &amp;#34;S&amp;#34;
  }

  attribute {
    name = &amp;#34;TopScore&amp;#34;
    type = &amp;#34;N&amp;#34;
  }

  ttl {
    attribute_name = &amp;#34;TimeToExist&amp;#34;
    enabled        = true
  }

  global_secondary_index {
    name               = &amp;#34;GameTitleIndex&amp;#34;
    hash_key           = &amp;#34;GameTitle&amp;#34;
    range_key          = &amp;#34;TopScore&amp;#34;
    write_capacity     = 10
    read_capacity      = 10
    projection_type    = &amp;#34;INCLUDE&amp;#34;
    non_key_attributes = [&amp;#34;UserId&amp;#34;]
  }

  tags = {
    Name        = &amp;#34;dynamodb-table-1&amp;#34;
    Environment = &amp;#34;production&amp;#34;
  }
}

resource &amp;#34;aws_cloudwatch_metric_stream&amp;#34; &amp;#34;main&amp;#34; {
  name          = &amp;#34;my-metric-stream&amp;#34;
  role_arn      = aws_iam_role.metric_stream_to_firehose.arn
  firehose_arn  = aws_kinesis_firehose_delivery_stream.http_stream.arn
  output_format = &amp;#34;opentelemetry0.7&amp;#34;

  include_filter {
    namespace = &amp;#34;AWS/DynamoDB&amp;#34;
  }
}

# https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html
data &amp;#34;aws_iam_policy_document&amp;#34; &amp;#34;streams_assume_role&amp;#34; {
  statement {
    effect = &amp;#34;Allow&amp;#34;

    principals {
      type        = &amp;#34;Service&amp;#34;
      identifiers = [&amp;#34;streams.metrics.cloudwatch.amazonaws.com&amp;#34;]
    }

    actions = [&amp;#34;sts:AssumeRole&amp;#34;]
  }
}

resource &amp;#34;aws_iam_role&amp;#34; &amp;#34;metric_stream_to_firehose&amp;#34; {
  name               = &amp;#34;metric_stream_to_firehose_role&amp;#34;
  assume_role_policy = data.aws_iam_policy_document.streams_assume_role.json
}

# https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html
data &amp;#34;aws_iam_policy_document&amp;#34; &amp;#34;metric_stream_to_firehose&amp;#34; {
  statement {
    effect = &amp;#34;Allow&amp;#34;

    actions = [
      &amp;#34;firehose:PutRecord&amp;#34;,
      &amp;#34;firehose:PutRecordBatch&amp;#34;,
    ]

    resources = [aws_kinesis_firehose_delivery_stream.http_stream.arn]
  }
}
resource &amp;#34;aws_iam_role_policy&amp;#34; &amp;#34;metric_stream_to_firehose&amp;#34; {
  name   = &amp;#34;default&amp;#34;
  role   = aws_iam_role.metric_stream_to_firehose.id
  policy = data.aws_iam_policy_document.metric_stream_to_firehose.json
}

resource &amp;#34;aws_s3_bucket&amp;#34; &amp;#34;bucket&amp;#34; {
  bucket = &amp;#34;metric-stream-test-bucket&amp;#34;
}

resource &amp;#34;aws_s3_bucket_acl&amp;#34; &amp;#34;bucket_acl&amp;#34; {
  bucket = aws_s3_bucket.bucket.id
  acl    = &amp;#34;private&amp;#34;
}

data &amp;#34;aws_iam_policy_document&amp;#34; &amp;#34;firehose_assume_role&amp;#34; {
  statement {
    effect = &amp;#34;Allow&amp;#34;

    principals {
      type        = &amp;#34;Service&amp;#34;
      identifiers = [&amp;#34;firehose.amazonaws.com&amp;#34;]
    }

    actions = [&amp;#34;sts:AssumeRole&amp;#34;]
  }
}

resource &amp;#34;aws_iam_role&amp;#34; &amp;#34;firehose_to_s3&amp;#34; {
  assume_role_policy = data.aws_iam_policy_document.firehose_assume_role.json
}

data &amp;#34;aws_iam_policy_document&amp;#34; &amp;#34;firehose_to_s3&amp;#34; {
  statement {
    effect = &amp;#34;Allow&amp;#34;

    actions = [
      &amp;#34;s3:AbortMultipartUpload&amp;#34;,
      &amp;#34;s3:GetBucketLocation&amp;#34;,
      &amp;#34;s3:GetObject&amp;#34;,
      &amp;#34;s3:ListBucket&amp;#34;,
      &amp;#34;s3:ListBucketMultipartUploads&amp;#34;,
      &amp;#34;s3:PutObject&amp;#34;,
    ]

    resources = [
      aws_s3_bucket.bucket.arn,
      &amp;#34;${aws_s3_bucket.bucket.arn}/*&amp;#34;,
    ]
  }
}

resource &amp;#34;aws_iam_role_policy&amp;#34; &amp;#34;firehose_to_s3&amp;#34; {
  name   = &amp;#34;default&amp;#34;
  role   = aws_iam_role.firehose_to_s3.id
  policy = data.aws_iam_policy_document.firehose_to_s3.json
}

resource &amp;#34;aws_kinesis_firehose_delivery_stream&amp;#34; &amp;#34;http_stream&amp;#34; {
  name        = &amp;#34;metric-stream-test-stream&amp;#34;
  destination = &amp;#34;http_endpoint&amp;#34;

  http_endpoint_configuration {
    name       = &amp;#34;test_http_endpoint&amp;#34;
    url        = &amp;#34;[need change]Gateway url&amp;#34;
    role_arn   = aws_iam_role.firehose_to_s3.arn
  }
  s3_configuration {
    role_arn   = aws_iam_role.firehose_to_s3.arn
    bucket_arn = aws_s3_bucket.bucket.arn
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;p&gt;Steps to use.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Get the access_key and secret_key of the AWS account.( For how to get them, please refer to &lt;a href=&#34;https://aws.amazon.com/premiumsupport/knowledge-center/create-access-key/&#34;&gt;create-access-key&lt;/a&gt; )&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fill in the access_key and secret_key you got in the previous step, and fill in the corresponding URL of your gateway in the corresponding location of &lt;code&gt;aws_kinesis_firehose_delivery_stream&lt;/code&gt; configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy the above content and save it to the main.tf file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Execute the following code in the corresponding path.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;terraform init
terraform apply
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;At this point, all the required AWS services have been successfully created, and you can check your console to see if the services were successfully created.&lt;/p&gt;
&lt;h3 id=&#34;done&#34;&gt;Done!&lt;/h3&gt;
&lt;p&gt;If all the above steps were successful, please wait for about five minutes. After that, you can visit the SkyWalking UI to see the metrics.&lt;/p&gt;
&lt;p&gt;Currently, the metrics collected by SkyWalking by default are displayed as follows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;account metrics:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./service.png&#34; alt=&#34;service.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;table metrics：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./endpoint.png&#34; alt=&#34;endpoint.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;other-services&#34;&gt;Other services&lt;/h3&gt;
&lt;p&gt;Currently, SkyWalking officially supports EKS, S3, DynamoDB monitoring. Users also refer to &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/opentelemetry-receiver/&#34;&gt;the OpenTelemetry receiver&lt;/a&gt; to configure OTel rules to collect and analyze CloudWatch metrics of other AWS services and display them through &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/ui/readme/&#34;&gt;a custom dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;material&#34;&gt;Material&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudwatch-monitoring.html&#34;&gt;Monitoring S3 metrics with Amazon CloudWatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/monitoring-cloudwatch.html&#34;&gt;Monitoring DynamoDB metrics with Amazon CloudWatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/aws-firehose-receiver/&#34;&gt;Supported metrics in AWS Firehose receiver of OAP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/configuration-vocabulary/&#34;&gt;Configuration Vocabulary | Apache SkyWalking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Monitoring AWS EKS and S3 with SkyWalking</title>
      <link>/blog/2023-03-12-skywalking-aws-s3-eks/</link>
      <pubDate>Sun, 12 Mar 2023 00:00:00 +0000</pubDate>
      <guid>/blog/2023-03-12-skywalking-aws-s3-eks/</guid>
      <description>
        
        
        &lt;p&gt;&lt;img src=&#34;./icon.png&#34; alt=&#34;icon.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;SKyWalking OAP&amp;rsquo;s existing &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/opentelemetry-receiver/&#34;&gt;OpenTelemetry receiver&lt;/a&gt; can receive metrics through the &lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md&#34;&gt;OTLP protocol, and use &lt;/a&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/concepts-and-designs/mal/&#34;&gt;MAL&lt;/a&gt; to analyze related metrics in real time. Starting from OAP 9.4.0, SkyWalking has added &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/aws-firehose-receiver/&#34;&gt;an AWS Firehose receiver&lt;/a&gt; to receive and analyze CloudWatch metrics data. This article will take EKS and S3 as examples to introduce the process of SkyWalking OAP receiving and analyzing the indicator data of AWS services.&lt;/p&gt;
&lt;h3 id=&#34;eks&#34;&gt;EKS&lt;/h3&gt;
&lt;h4 id=&#34;opentelemetry-collector&#34;&gt;OpenTelemetry Collector&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://opentelemetry.io/&#34;&gt;OpenTelemetry (OTel)&lt;/a&gt; is a series of tools, APIs, and SDKs that can generate, collect, and export telemetry data, such as metrics, logs, and traces. OTel Collector is mainly responsible for collecting, processing, and exporting. For telemetry data, Collector consists of the following main components:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Receiver&lt;/strong&gt;: Responsible for obtaining telemetry data, different receivers support different data sources, such as prometheus, kafka, otlp.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Processor&lt;/strong&gt;: Process data between receiver and exporter, such as adding or deleting attributes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exporter&lt;/strong&gt;: Responsible for sending data to different backends, such as kafka, SkyWalking OAP (via OTLP).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service&lt;/strong&gt;: Components enabled as a unit configuration, only configured components will be enabled.&lt;/li&gt;
&lt;/ol&gt;
&lt;h6 id=&#34;opentelemetry-protocol-specificationotlp&#34;&gt;OpenTelemetry Protocol Specification(OTLP)&lt;/h6&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md&#34;&gt;OTLP&lt;/a&gt; mainly describes how to receive (pull) indicator data through gRPC and HTTP protocols. &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/opentelemetry-receiver/&#34;&gt;The OpenTelemetry receiver&lt;/a&gt; of SKyWalking OAP implements the OTLP/gRPC protocol, and the indicator data can be exported to OAP through the OTLP/gRPC exporter. Usually the data flow of a Collector is as follows:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./collector.png&#34; alt=&#34;collector.png&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;monitor-eks-with-otel&#34;&gt;Monitor EKS with OTel&lt;/h4&gt;
&lt;p&gt;EKS monitoring is realized through OTel. You only need to deploy OpenTelemetry Collector in the EKS cluster in the way of &lt;code&gt;DaemonSet &lt;/code&gt; &amp;ndash; use &lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/awscontainerinsightreceiver/README.md&#34;&gt;AWS Container Insights Receiver&lt;/a&gt; as the receiver, and set the address of otlp exporter to the address of OAP. In addition, it should be noted that OAP is used &lt;code&gt;job_name : aws-cloud-eks-monitoring&lt;/code&gt; as the identifier of EKS metrics according to the attribute, so it is necessary to configure a processor in the collector to add this attribute.&lt;/p&gt;
&lt;h6 id=&#34;otel-collector-configuration-demo&#34;&gt;OTel Collector configuration demo&lt;/h6&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;extensions&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;health_check&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;receivers&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;awscontainerinsightreceiver&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;processors&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# To enable OAP to correctly identify EKS metrics, add the job_name attribute&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resource/job-name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;attributes&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;key&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;job_name   &lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-cloud-eks-monitoring&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;action&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;insert     &lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Specify OAP as exporters&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;exporters&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;otlp&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;endpoint&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;oap-service:11800 &lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;tls&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;insecure&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;logging&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;loglevel&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;debug          &lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;service&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;pipelines&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metrics&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;receivers&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;awscontainerinsightreceiver]&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;processors&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;resource/job-name]&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;exporters&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;otlp,logging]&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;extensions&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;health_check]&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By default, SkyWalking OAP counts the network, disk, CPU and other related indicator data in the three dimensions of Node, Pod, and Service. Only part of the content is shown here.&lt;/p&gt;
&lt;h6 id=&#34;pod-dimensions&#34;&gt;Pod dimensions&lt;/h6&gt;
&lt;p&gt;&lt;img src=&#34;./eks-pod.png&#34; alt=&#34;eks-pod.png&#34;&gt;&lt;/p&gt;
&lt;h6 id=&#34;service-dimensions&#34;&gt;Service dimensions&lt;/h6&gt;
&lt;p&gt;&lt;img src=&#34;./eks-service.png&#34; alt=&#34;eks-service.png&#34;&gt;&lt;/p&gt;
&lt;h6 id=&#34;eks-monitoring-complete-configuration&#34;&gt;EKS monitoring complete configuration&lt;/h6&gt;
&lt;details&gt;
&lt;summary&gt;Click here to view complete k8s resource configuration &lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;v1&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ServiceAccount&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-sa&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-eks&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#24292e&#34;&gt;---&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ClusterRole&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;rbac.authorization.k8s.io/v1&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aoc-agent-role&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;rules&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;pods&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;nodes&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;endpoints&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;verbs&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;list&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;watch&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;apps&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;replicasets&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;verbs&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;list&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;watch&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;batch&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;jobs&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;verbs&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;list&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;watch&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;nodes/proxy&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;verbs&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;get&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;nodes/stats&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;configmaps&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;events&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;verbs&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;create&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;get&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;configmaps&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resourceNames&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;otel-container-insight-clusterleader&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;verbs&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;get&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;update&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;coordination.k8s.io&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;leases&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;verbs&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;create&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;get&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;update&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#24292e&#34;&gt;---&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ClusterRoleBinding&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;rbac.authorization.k8s.io/v1&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aoc-agent-role-binding&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;subjects&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ServiceAccount&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-sa&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-eks&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;roleRef&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ClusterRole&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aoc-agent-role&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;apiGroup&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;rbac.authorization.k8s.io&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#24292e&#34;&gt;---&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;v1&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;ConfigMap&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-agent-conf&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-eks&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;labels&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;opentelemetry&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;component&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-agent-conf&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;otel-agent-config&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;    extensions:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;      health_check:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;    receivers:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;      awscontainerinsightreceiver:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;    processors:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;      resource/job-name:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        attributes:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        - key: job_name   
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;          value: aws-cloud-eks-monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;          action: insert     
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;    exporters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;      otlp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        endpoint: oap-service:11800
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        tls:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;          insecure: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;      logging:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;          loglevel: debug          
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;    service:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;      pipelines:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;        metrics:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;          receivers: [awscontainerinsightreceiver]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;          processors: [resource/job-name]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;          exporters: [otlp,logging]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;      extensions: [health_check]&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#24292e&#34;&gt;---&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;apps/v1&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;DaemonSet&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-eks-ci&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-eks&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;selector&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;matchLabels&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-eks-ci&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;labels&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-eks-ci&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-collector&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;image&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;amazon/aws-otel-collector:v0.23.0&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;env&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;         	  &lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;# Specify region&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;AWS_REGION&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;ap-northeast-1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;K8S_NODE_NAME&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;valueFrom&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;fieldRef&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;fieldPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;spec.nodeName&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;HOST_IP&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;valueFrom&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;fieldRef&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;fieldPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;status.hostIP&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;HOST_NAME&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;valueFrom&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;fieldRef&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                  &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;fieldPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;spec.nodeName&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;K8S_NAMESPACE&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;valueFrom&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                 &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;fieldRef&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                   &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;fieldPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;metadata.namespace&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;imagePullPolicy&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;Always&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;command&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;/awscollector&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;--config=/conf/otel-agent-config.yaml&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;volumeMounts&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;rootfs&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/rootfs&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;readOnly&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;dockersock&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/var/run/docker.sock&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;readOnly&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;varlibdocker&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/var/lib/docker&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;readOnly&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;containerdsock&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/run/containerd/containerd.sock&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;readOnly&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;sys&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/sys&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;readOnly&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;devdisk&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/dev/disk&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;readOnly&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-agent-config-vol&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/conf&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-output-vol  &lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/otel-output&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;limits&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;cpu&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;  &lt;/span&gt;200m&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;memory&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;200Mi&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;requests&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;cpu&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;200m&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;memory&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;200Mi&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;volumes&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;configMap&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-agent-conf&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;items&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;              &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;key&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-agent-config&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;                &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-agent-config.yaml&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-agent-config-vol&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;rootfs&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;dockersock&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/var/run/docker.sock&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;varlibdocker&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/var/lib/docker&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;containerdsock&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/run/containerd/containerd.sock&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;sys&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/sys&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;devdisk&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/dev/disk/&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#0550ae&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;otel-output-vol  &lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;hostPath&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;/otel-output&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;serviceAccountName&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#fff&#34;&gt; &lt;/span&gt;aws-otel-sa&lt;span style=&#34;color:#fff&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fff&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h3 id=&#34;s3&#34;&gt;S3&lt;/h3&gt;
&lt;h4 id=&#34;amazon-cloudwatch&#34;&gt;Amazon CloudWatch&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html&#34;&gt;Amazon CloudWatch&lt;/a&gt; is a monitoring service provided by AWS. It is responsible for collecting indicator data of AWS services and resources. CloudWatch metrics stream is responsible for converting indicator data into stream processing data, and supports output in two formats: json and OTel v0.7.0.&lt;/p&gt;
&lt;h4 id=&#34;amazon-kinesis-data-firehose-firehose&#34;&gt;Amazon Kinesis Data Firehose (Firehose)&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://aws.amazon.com/cn/kinesis/data-firehose/&#34;&gt;Firehose&lt;/a&gt; is an extract, transform, load (ETL) service that reliably captures, transforms, and serves streaming data into data lakes, data stores (such as S3), and analytics services.&lt;/p&gt;
&lt;p&gt;To ensure that external services can correctly receive indicator data, AWS provides &lt;a href=&#34;https://docs.aws.amazon.com/firehose/latest/dev/httpdeliveryrequestresponse.html&#34;&gt;Kinesis Data Firehose HTTP Endpoint Delivery Request and Response Specifications (Firehose Specifications)&lt;/a&gt; . Firhose pushes Json data by POST&lt;/p&gt;
&lt;h6 id=&#34;json-data-example&#34;&gt;Json data example&lt;/h6&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;#34;requestId&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;ed4acda5-034f-9f42-bba1-f29aea6d7d8f&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1578090901599&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;records&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;aGVsbG8=&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0a3069&#34;&gt;&amp;#34;aGVsbG8gd29ybGQ=&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#1f2328&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;requestId&lt;/strong&gt;: Request id, which can achieve deduplication and debugging purposes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;timestamp&lt;/strong&gt;: Firehose generated the timestamp of the request (in milliseconds).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;records&lt;/strong&gt;: Actual delivery records
&lt;ol&gt;
&lt;li&gt;data: The delivered data, encoded in base64, can be in json or OTel v0.7.0 format, depending on the format of CloudWatch data (described later). Skywalking currently supports OTel v0.7.0 format.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h5 id=&#34;aws-firehose-receiver&#34;&gt;aws-firehose-receiver&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;aws-firehose-receiver&lt;/code&gt;  provides an HTTP Endpoint that implements Firehose Specifications: &lt;code&gt;/aws/firehose/metrics&lt;/code&gt;. The figure below shows the data flow of monitoring DynamoDB, S3 and other services through CloudWatch, and using Firehose to send indicator data to SKywalking OAP.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./aws-service.png&#34; alt=&#34;aws-service.png&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;step-by-step-setup-of-s3-monitoring&#34;&gt;Step-by-step setup of S3 monitoring&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Enter the S3 console and create a filter for&lt;code&gt;Request metrics&lt;/code&gt;: &lt;code&gt;Amazon S3 &amp;gt;&amp;gt; Buckets &amp;gt;&amp;gt; (Your Bucket) &amp;gt;&amp;gt; Metrics &amp;gt;&amp;gt; metrics &amp;gt;&amp;gt; View additional charts &amp;gt;&amp;gt; Request metrics&lt;/code&gt;
&lt;img src=&#34;./s3-create-filter.png&#34; alt=&#34;s3-create-filter.png&#34;&gt;&lt;/li&gt;
&lt;li&gt;Enter the Amazon Kinesis console, create a delivery stream, &lt;code&gt;Source&lt;/code&gt; select &lt;code&gt;Direct PUT&lt;/code&gt;, &lt;code&gt;Destination&lt;/code&gt; select &lt;code&gt;HTTP Endpoint&lt;/code&gt;. And set &lt;code&gt;HTTP endpoint URL&lt;/code&gt; to &lt;code&gt;https://your_domain/aws/firehose/metrics&lt;/code&gt;. Other configuration items:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Buffer hints&lt;/code&gt;: Set the size and period of the cache&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Access key&lt;/code&gt; just matches the AccessKey in aws-firehose-receiver&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Retry duration&lt;/code&gt;:  Retry period&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Backup settings&lt;/code&gt;: Backup settings, optionally backup the posted data to S3 at the same time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;./firehose-stream-create.png&#34; alt=&#34;firehose-stream-create.png&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Enter the CloudWatch console &lt;code&gt;Streams&lt;/code&gt; and click Create CloudWatch Stream. And &lt;code&gt;Select your Kinesis Data Firehose stream&lt;/code&gt; configure the delivery stream created in the second step in the item. Note that it needs to be set &lt;code&gt;Change output format&lt;/code&gt; to &lt;code&gt;OpenTelemetry v0.7.0&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;./cloud-watch-stream.png&#34; alt=&#34;cloud-watch-stream.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;At this point, the S3 monitoring configuration settings are complete. The S3 metrics currently collected by SkyWalking by default are shown below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./s3-metrics.png&#34; alt=&#34;s3-metrics.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;other-service&#34;&gt;Other service&lt;/h3&gt;
&lt;p&gt;Currently SkyWalking officially supports EKS, S3, DynamoDB monitoring. Users also refer to &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/opentelemetry-receiver/&#34;&gt;the OpenTelemetry receiver&lt;/a&gt; to configure OTel rules to collect and analyze CloudWatch metrics of other AWS services, and display them through &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/ui/readme/&#34;&gt;a custom dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;material&#34;&gt;Material&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudwatch-monitoring.html&#34;&gt;Monitoring S3 metrics with Amazon CloudWatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/monitoring-cloudwatch.html&#34;&gt;Monitoring DynamoDB metrics with Amazon CloudWatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/aws-firehose-receiver/&#34;&gt;Supported metrics in AWS Firehose receiver of OAP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/setup/backend/configuration-vocabulary/&#34;&gt;Configuration Vocabulary | Apache SkyWalking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: [License Issue] Aliyun(阿里云)&#39;s trace analysis service copied SkyWalking&#39;s trace profiling page.</title>
      <link>/blog/2023-01-03-aliyun-copy-page/</link>
      <pubDate>Tue, 03 Jan 2023 00:00:00 +0000</pubDate>
      <guid>/blog/2023-01-03-aliyun-copy-page/</guid>
      <description>
        
        
        &lt;p&gt;&lt;a href=&#34;https://skywalking.apache.org&#34;&gt;Apache SkyWalking&lt;/a&gt; is an open-source APM for a distributed system, Apache Software Foundation top-level project.&lt;/p&gt;
&lt;p&gt;On Jan. 3rd, 2023, we received reports about &lt;a href=&#34;https://help.aliyun.com/document_detail/90277.html&#34;&gt;Aliyun Trace Analysis Service&lt;/a&gt;. It provides a cloud service compatible
with SkyWalking trace APIs and agents.&lt;/p&gt;
&lt;p&gt;On their product page, there is a &lt;a href=&#34;https://help.aliyun.com/document_detail/178204.html&#34;&gt;&lt;code&gt;best-practice&lt;/code&gt; document&lt;/a&gt; describing about their service is not SkyWalking OAP, but can work with SkyWalking agents to
support &lt;a href=&#34;https://skywalking.apache.org/docs/main/next/en/concepts-and-designs/profiling/#in-process-profiling&#34;&gt;SkyWalking&amp;rsquo;s In-Process(Trace) Profiling&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BUT, they copied the whole page of SkyWalking&amp;rsquo;s profiling UI, including page layout, words,  and profiling task setup.&lt;/strong&gt; The only difference is the color schemes.&lt;/p&gt;
&lt;h3 id=&#34;skywalking-ui&#34;&gt;SkyWalking UI&lt;/h3&gt;
&lt;img src=&#34;skywalking.jpeg&#34;&gt;
&lt;h3 id=&#34;aliyun-trace-analysis-ui-on-their-document-page&#34;&gt;Aliyun Trace Analysis UI on their document page&lt;/h3&gt;
&lt;img src=&#34;aliyun.jpeg&#34;&gt;
&lt;hr&gt;
&lt;p&gt;The UI visualization is a part of the copyright. Aliyun declared their backend is NOT a re-distribution of SkyWalking repeatedly on their website,
and they never mentioned this page is actually copied from upstream.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is a LICENSE issue, violating SkyWalking&amp;rsquo;s copyright and Apache 2.0 License. They don&amp;rsquo;t respect Apache Software Foundation and Apache SkyWalking&amp;rsquo;s IP and Branding.&lt;/strong&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: [Video] Distributed tracing demo using Apache SkyWalking and Kong API Gateway</title>
      <link>/blog/2022-08-11-kongcast-20-distributed-tracing-using-skywalking-kong/</link>
      <pubDate>Thu, 11 Aug 2022 00:00:00 +0000</pubDate>
      <guid>/blog/2022-08-11-kongcast-20-distributed-tracing-using-skywalking-kong/</guid>
      <description>
        
        
        &lt;p&gt;Observability essential when working with distributed systems. Built on 3 pillars of metrics, logging and
tracing, having the right tools in place to quickly identify and determine the root cause of an issue in production
is imperative. In this Kongcast interview, we explore the benefits of having observability and demo the use of
Apache SkyWalking. We walk through the capabilities that SkyWalking offers out of the box and debug a common HTTP 500
error using the tool.&lt;/p&gt;
&lt;p&gt;Andrew Kew is interviewed by Viktor Gamov, a developer advocate at &lt;a href=&#34;https://konghq.com/&#34;&gt;Kong Inc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Andrew is a highly passionate technologist with over 16 valuable years experience in building server side and cloud
applications. Having spent the majority of his time in the Financial Services domain, his meritocratic rise to CTO of an
Algorithmic Trading firm allowed him to not only steer the business from a technology standpoint, but build robust and
scalable trading algorithms. His mantra is &amp;ldquo;right first time&amp;rdquo;, thus ensuring the projects or clients he is involved in
are left in a better place than they were before he arrived.&lt;/p&gt;
&lt;p&gt;He is the founder of a boutique software consultancy in the United Kingdom, &lt;a href=&#34;https://quadcorps.co.uk&#34;&gt;QuadCorps Ltd&lt;/a&gt;, working in the API and
Integration Ecosystem space and is currently on a residency programme at &lt;a href=&#34;https://konghq.com/&#34;&gt;Kong Inc&lt;/a&gt; as a senior field engineer and
technical account manager working across many of their enterprise strategic accounts.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/r8e9ib0powM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Blog: Integrating Apache SkyWalking with source code</title>
      <link>/blog/2022-04-14-integrating-skywalking-with-source-code/</link>
      <pubDate>Thu, 14 Apr 2022 00:00:00 +0000</pubDate>
      <guid>/blog/2022-04-14-integrating-skywalking-with-source-code/</guid>
      <description>
        
        
        &lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it. - Mark Weiser&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mark Weiser prophetically argued in the late 1980s, that the most far-reaching technologies are those which vanish into thin air. According to Weiser, &amp;ldquo;Whenever people learn something sufficiently well, they cease to be aware of it.&amp;rdquo; This disappearing act, as Weiser claimed, is not limited to technology but rather human psychology. It is this very experience that allows us to escape lower-level thinking into higher-level thinking. For once we are no longer impeded by mundane details, we are then free to focus on new goals.&lt;/p&gt;
&lt;p&gt;This realization becomes more relevant as APMs become increasingly popular. As more applications are deployed with APMs, the number of abstract representations of the underlying source code also increases. While this provides great value to many non-development roles within an organization, it does pose additional challenges to those in development roles who must translate these representations into concepts they can work with (i.e. source code). Weiser sums this difficultly up rather succinctly when he states that &amp;ldquo;Programmers should no more be asked to work without access to source code than auto-mechanics should be asked to work without looking at the engine.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Still, APMs collect more information only to produce a plethora of new abstract representations. In this article, we will introduce a new concept in &lt;a href=&#34;https://github.com/sourceplusplus/live-platform&#34;&gt;Source++&lt;/a&gt;, the open-source live-coding platform, specifically designed to allow developers to monitor production applications more intuitively.&lt;/p&gt;
&lt;h2 id=&#34;live-views&#34;&gt;Live Views&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;And we really don&amp;rsquo;t understand even yet, hundreds of metrics later, what make a program easier to understand or modify or reuse or borrow. I don&amp;rsquo;t think we&amp;rsquo;ll find out by looking away from programs to their abstract interfaces. The answers are in the source code. - Mark Weiser&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As APMs move from the &amp;ldquo;nice to have&amp;rdquo; category to the &amp;ldquo;must-have&amp;rdquo; category, there is a fundamental feature holding them back from ubiquity. They must disappear from consciousness. As developers, we should feel no impulse to open our browsers to better understand the underlying source code. The answers are literally in the source code. Instead, we should improve our tools so the source code conveniently tells us what we need to know. Think of how simple life could be if failing code always indicated how and why it failed. This is the idea behind Source++.&lt;/p&gt;
&lt;p&gt;In our last blog post, we discussed &lt;a href=&#34;https://skywalking.apache.org/blog/2021-12-06-extend-skywalking-with-nbb/&#34;&gt;Extending Apache SkyWalking with non-breaking breakpoints&lt;/a&gt;. In that post, we introduced a concept called &lt;strong&gt;Live Instruments&lt;/strong&gt;, which developers can use to easily debug live production applications without leaving their IDE. Today, we will discuss how existing SkyWalking installations can be integrated into your IDE via a new concept called &lt;strong&gt;Live Views&lt;/strong&gt;. Unlike Live Instruments, which are designed for debugging live applications, Live Views are designed for increasing application comprehension and awareness. This is accomplished through a variety of commands which are input into the Live Command Palette.&lt;/p&gt;
&lt;h3 id=&#34;live-command-palette&#34;&gt;Live Command Palette&lt;/h3&gt;
&lt;p&gt;The Live Command Palette (LCP) is a contextual command prompt, included in the &lt;a href=&#34;https://github.com/sourceplusplus/interface-jetbrains&#34;&gt;Source++ JetBrains Plugin&lt;/a&gt;, that allows developers to control and query live applications from their IDE. Opened via keyboard shortcut (&lt;code&gt;Ctrl+Shift+S&lt;/code&gt;), the LCP allows developers to easily view metrics relevant to the source code they&amp;rsquo;re currently viewing. The following Live View commands are currently supported:&lt;/p&gt;
&lt;h4 id=&#34;command-view-overviewactivitytraceslogs&#34;&gt;Command: view (overview/activity/traces/logs)&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;view&lt;/code&gt; commands display contextual popups with live operational data of the current source code. These commands allow developers to view traditional SkyWalking operational data filtered down to the relevant metrics.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;view_command.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;command-watch-log&#34;&gt;Command: watch log&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;watch log&lt;/code&gt; command allows developers to follow individual log statements of a running application in real-time. This command allows developers to negate the need for manually scrolling through the logs to find instances of a specific log statement.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;watch_log_command.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;command-showhide-quick-stats&#34;&gt;Command: (show/hide) quick stats&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;show quick stats&lt;/code&gt; command displays live endpoint metrics for a quick idea of an endpoint&amp;rsquo;s activity. Using this command, developers can quickly assess the status of an endpoint and determine if the endpoint is performing as expected.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;show_quick_stats_command.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;future-work&#34;&gt;Future Work&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;A good tool is an invisible tool. By invisible, I mean that the tool does not intrude on your consciousness; you focus on the task, not the tool. Eyeglasses are a good tool &amp;ndash; you look at the world, not the eyeglasses. - Mark Weiser&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Source++ aims to extend SkyWalking in such a way that SkyWalking itself becomes invisible. To accomplish this, we plan to support custom developer commands. Developers will be able to build customized commands for themselves, as well as commands to share with their team. These commands will recognize context, types, and conditions allowing for a wide possibility of operations. As more commands are added, developers will be able to expose everything SkyWalking has to offer while focusing on what matters most, the source code.&lt;/p&gt;
&lt;p&gt;If you find these features useful, please consider giving Source++ a try. You can install the plugin directly from your JetBrains IDE, or through the &lt;a href=&#34;https://plugins.jetbrains.com/plugin/12033-source-&#34;&gt;JetBrains Marketplace&lt;/a&gt;. If you have any issues or questions, please &lt;a href=&#34;https://github.com/sourceplusplus/interface-jetbrains/issues&#34;&gt;open an issue&lt;/a&gt;. Feedback is always welcome!&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: [Resolved][License Issue] Volcengine Inc.(火山引擎) violates the Apache 2.0 License when using SkyWalking.</title>
      <link>/blog/2022-01-28-volcengine-violates-aplv2/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>/blog/2022-01-28-volcengine-violates-aplv2/</guid>
      <description>
        
        
        &lt;p&gt;&lt;a href=&#34;https://skywalking.apache.org&#34;&gt;Apache SkyWalking&lt;/a&gt; is an open-source APM for a distributed system, Apache Software Foundation top-level project.&lt;/p&gt;
&lt;p&gt;On Jan. 28th, we received a License violation report from one of the committers (anonymously). They have a cloud service called &lt;a href=&#34;https://www.volcengine.com/docs/6431/69088&#34;&gt;Application Performance Monitoring - Distributed Tracing (应用性能监控全链路版)&lt;/a&gt;.
At the &lt;a href=&#34;https://www.volcengine.com/docs/6431/81123&#34;&gt;Java service monitoring section&lt;/a&gt;, it provides this agent download link&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;wget &lt;a href=&#34;https://datarangers.com.cn/apminsight/repo/v2/download/java-agent/apminsight-java-agent_latest.tar.gz&#34;&gt;https://datarangers.com.cn/apminsight/repo/v2/download/java-agent/apminsight-java-agent_latest.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We downloaded it at 23:15 Jan. 28th UTC+8(Beijing), and archived it at &lt;a href=&#34;https://drive.google.com/file/d/1UCITmAfoKWfQpBXoQWfhaSA_5C88_sgO/view?usp=sharing&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We have confirmed this is a distribution of SkyWalking Java agent.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We listed several pieces of evidence to prove this here, every reader could compare with the official &lt;a href=&#34;https://github.com/apache/skywalking-java&#34;&gt;SkyWalking source codes&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The first and the easiest one is &lt;code&gt;agent.config&lt;/code&gt; file, which is using the same config keys, and the same config format.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is the Volcengine&amp;rsquo;s version, and check &lt;a href=&#34;https://github.com/apache/skywalking-java/blob/395ce4f86ae14cf24af489a6aa7e849b1d9a27ed/apm-sniffer/config/agent.config&#34;&gt;SkyWalking agent.config&lt;/a&gt;
&lt;img src=&#34;config.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;In the &lt;code&gt;apmplus-agent.jar&lt;/code&gt;, Volcengine&amp;rsquo;s agent core jar, you could easily find several core classes exactly as same as SkyWalking&amp;rsquo;s.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The &lt;strong&gt;ComponentsDefine&lt;/strong&gt; class is unchanged, even with component ID and name. This is Volcengine&amp;rsquo;s version, and check &lt;a href=&#34;https://github.com/apache/skywalking-java/blob/395ce4f86ae14cf24af489a6aa7e849b1d9a27ed/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/ComponentsDefine.java&#34;&gt;SkyWalking&amp;rsquo;s version&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;components.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;The whole code names, package names, and hierarchy structure are all as same as SkyWalking 6.x version.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is the Volcengine package hierarchy structure, and check the &lt;a href=&#34;https://github.com/apache/skywalking-java/tree/v6.6.0/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context&#34;&gt;SkyWalking&amp;rsquo;s version&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;code-hierarchy.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Volcengine Inc.&amp;rsquo;s team changed all package names, removed the Apache Software Foundation&amp;rsquo;s header, and don&amp;rsquo;t keep Apache Software Foundation and Apache SkyWalking&amp;rsquo;s LICENSE and NOTICE file in their redistribution&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Also, we can&amp;rsquo;t find anything on their website to declare they are distributing SkyWalking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;All above have proved they are violating the Apache 2.0 License, and don&amp;rsquo;t respect Apache Software Foundation and Apache SkyWalking&amp;rsquo;s IP and Branding&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We have contacted their legal team, and wait for their official response.&lt;/p&gt;
&lt;h2 id=&#34;resolution&#34;&gt;Resolution&lt;/h2&gt;
&lt;p&gt;On Jan. 30th night, UTC+8, 2022. We received a response from Volcengine&amp;rsquo;s APMPlus team. They admitted their violation behaviors, and made the following changes.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Volcengine&amp;rsquo;s APMPlus service page was updated on January 30th and stated that the agent is a fork version(re-distribution) of Apache SkyWalking agent. Below is the screenshot of Volcengine&amp;rsquo;s APMPlus product page.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;service-page.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Volcengine&amp;rsquo;s APMPlus agent distributions were also updated and include SkyWalking&amp;rsquo;s License and NOTICE now. Below is the screenshot of Volcengine&amp;rsquo;s APMPlus latest agent, you could download from the product page. We keep a copy of their Jan. 30th 2022 at &lt;a href=&#34;https://drive.google.com/file/d/1tDWEO5mIGKPzYVtPvQijzvHS7ZFDdAwx/view&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;agent-hierarchy.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Volcengine&amp;rsquo;s APMPlus team had restored all license headers of SkyWalking in the agent, and the modifications of the project files are also listed in &amp;ldquo;SkyWalking-NOTICE&amp;rdquo;, which you could download from the product page.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;modify-list.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;We have updated the status to the PMC mail list. This license violation issue has been resolved for now.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;appendix&#34;&gt;Appendix&lt;/h2&gt;
&lt;h3 id=&#34;inquiries-of-committers&#34;&gt;Inquiries of committers&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Q&lt;/strong&gt;: I hope Volcengine Inc. can give a reason for this license issue, not just an afterthought PR. This will not only let us know where the issue is but also avoid similar problems in the future.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A(apmplus &lt;a href=&#34;mailto:apmplus@volcengine.com&#34;&gt;apmplus@volcengine.com&lt;/a&gt;)&lt;/strong&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;The developers neglected this repository during submitting compliance
assessment.
Currently, APMPlus team had introduced advanced tools provided by the
company for compliance assessment, and we also strengthened training for
our developers.
In the future, the compliance assessment process will be further improved
from tool assessment and manual assessment.
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Blog: Extending Apache SkyWalking with non-breaking breakpoints</title>
      <link>/blog/2021-12-06-extend-skywalking-with-nbb/</link>
      <pubDate>Mon, 06 Dec 2021 00:00:00 +0000</pubDate>
      <guid>/blog/2021-12-06-extend-skywalking-with-nbb/</guid>
      <description>
        
        
        &lt;p&gt;Non-breaking breakpoints are breakpoints specifically designed for live production environments. With non-breaking breakpoints, reproducing production bugs locally or in staging is conveniently replaced with capturing them directly in production.&lt;/p&gt;
&lt;p&gt;Like regular breakpoints, non-breaking breakpoints can be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;placed almost anywhere&lt;/li&gt;
&lt;li&gt;added and removed at will&lt;/li&gt;
&lt;li&gt;set to fire on specific conditions&lt;/li&gt;
&lt;li&gt;expose internal application state&lt;/li&gt;
&lt;li&gt;persist as long as desired (even between application reboots)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The last feature is especially useful given non-breaking breakpoints can be left in production for days, weeks, and even months at a time while waiting to capture behavior that happens rarely and unpredictably.&lt;/p&gt;
&lt;h4 id=&#34;how-do-non-breaking-breakpoints-work&#34;&gt;How do non-breaking breakpoints work?&lt;/h4&gt;
&lt;p&gt;If you&amp;rsquo;re familiar with general distributed tracing concepts, such as &amp;ldquo;traces&amp;rdquo; and &amp;ldquo;spans&amp;rdquo;, then you&amp;rsquo;re already broadly familiar with how non-breaking breakpoints work. Put simply, non-breaking breakpoints are small fragments of code added during runtime that, upon the proper conditions, save a portion of the application&amp;rsquo;s current state, and resume normal execution. In SkyWalking, this can be implemented by simply opening a new local span, adding some tags, and closing the local span.&lt;/p&gt;
&lt;p&gt;While this process is relatively simple, the range of functionality that can be achieved through this technique is quite impressive.
Save the current and global variables to create a non-breaking breakpoint; add the ability to format log messages to create just-in-time logging; add the ability to trigger metric telemetry to create real-time KPI monitoring. If you keep moving in this direction, you eventually enter the realm of live debugging/coding, and this is where Source++ comes in.&lt;/p&gt;
&lt;h4 id=&#34;live-coding-platform&#34;&gt;Live Coding Platform&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/sourceplusplus&#34;&gt;Source++&lt;/a&gt; is an open-source live coding platform designed for production environments, powered by Apache SkyWalking. Using Source++, developers can add breakpoints, logs, metrics, and distributed tracing to live production software in real-time on-demand, right from their IDE or CLI. While capable of stand-alone deployment, the latest version of Source++ makes it easier than ever to integrate into existing Apache SkyWalking installations. This process can be completed in a few minutes and is easy to customize for your specific needs.&lt;/p&gt;
&lt;p&gt;For a better idea of how Source++ works, take a look at the following diagram:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./enhanced_sw_setup.svg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;In this diagram, blue components represent existing SkyWalking architecture, black components represent new Source++ architecture, and the red arrows show how non-breaking breakpoints make their way from production to IDEs. A process that is facilitated by Source++ components: Live Probe, Live Processors, Live Platform, and Live Interface.&lt;/p&gt;
&lt;h4 id=&#34;live-probe&#34;&gt;Live Probe&lt;/h4&gt;
&lt;p&gt;The Live Probe is currently available for &lt;a href=&#34;https://github.com/sourceplusplus/probe-jvm&#34;&gt;JVM&lt;/a&gt; and &lt;a href=&#34;https://github.com/sourceplusplus/probe-python&#34;&gt;Python&lt;/a&gt; applications. It runs alongside the SkyWalking agent and is responsible for dynamically adding and removing code fragments based on valid instrumentation requests from developers. These code fragments in turn make use of the SkyWalking agent&amp;rsquo;s internal APIs to facilitate production instrumentation.&lt;/p&gt;
&lt;h4 id=&#34;live-processors&#34;&gt;Live Processors&lt;/h4&gt;
&lt;p&gt;Live Processors are responsible for finding, extracting, and transforming data found in distributed traces produced via live probes. They run alongside SkyWalking collectors and implement additional post-processing logic, such as PII redaction. Live processors work via uniquely identifiable tags (prefix &lt;code&gt;spp.&lt;/code&gt;) added previously by live probes.&lt;/p&gt;
&lt;p&gt;One could easily view a non-breaking breakpoint ready for processing using Rocketbot, however, it will look like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./rocketbot_nbb.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Even though the above does not resemble what&amp;rsquo;s normally thought of as a breakpoint, the necessary information is there. With live processors added to your SkyWalking installation, this data is refined and may be viewed more traditionally via live interfaces.&lt;/p&gt;
&lt;h4 id=&#34;live-platform&#34;&gt;Live Platform&lt;/h4&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/sourceplusplus/live-platform&#34;&gt;Live Platform&lt;/a&gt; is the core part of the Source++ architecture. Unlike the live probe and processors, the live platform does not have a direct correlation with SkyWalking components. It is a standalone server responsible for validating and distributing production breakpoints, logs, metrics, and traces. Each component of the Source++ architecture (probes, processors, interfaces) communicates with each other through the live platform. It is important to ensure the live platform is accessible to all of these components.&lt;/p&gt;
&lt;h4 id=&#34;live-interface&#34;&gt;Live Interface&lt;/h4&gt;
&lt;p&gt;Finally, with all the previous parts installed, we&amp;rsquo;re now at the component software developers will find the most useful. A Live Interface is what developers use to create, manage, and view non-breaking breakpoints, and so on. There are a few live interfaces available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sourceplusplus/interface-jetbrains&#34;&gt;JetBrains Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sourceplusplus/interface-cli&#34;&gt;CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With the &lt;a href=&#34;https://github.com/sourceplusplus/processor-live-instrument&#34;&gt;Live Instrument Processor&lt;/a&gt; enabled, and the &lt;a href=&#34;https://github.com/sourceplusplus/interface-jetbrains&#34;&gt;JetBrains Plugin&lt;/a&gt; installed, non-breaking breakpoints appear as such:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./ide_breakpoint.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;The above should be a sight far more familiar to software developers. Beyond the fact that you can&amp;rsquo;t step through execution, non-breaking breakpoints look and feel just like regular breakpoints.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;For more details and complete setup instructions, please visit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sourceplusplus/deploy-skywalking&#34;&gt;https://github.com/sourceplusplus/deploy-skywalking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: [Webinar] SkyWalking 8.x Introduction</title>
      <link>/blog/2021-08-01-skywalking-8-intro/</link>
      <pubDate>Wed, 04 Aug 2021 00:00:00 +0000</pubDate>
      <guid>/blog/2021-08-01-skywalking-8-intro/</guid>
      <description>
        
        
        &lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/company/goupaz/&#34;&gt;GOUP&lt;/a&gt; hosted a webinar, and invited &lt;a href=&#34;https://twitter.com/wusheng1108&#34;&gt;Sheng Wu&lt;/a&gt; to introduce
Apache SkyWalking. This is a 1.5 hours presentation including the full landscape of Apache SkyWalking 8.x.&lt;/p&gt;
&lt;h2 id=&#34;chapter04-session10---apache-skywalking-by-sheng-wu&#34;&gt;Chapter04 Session10 - Apache Skywalking by Sheng Wu&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/6lmHU3XtN10?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Blog: [Community win] SkyWalking achieved 500 contributors milestone.</title>
      <link>/blog/2021-07-12-500-contributors-mark/</link>
      <pubDate>Sat, 10 Jul 2021 00:00:00 +0000</pubDate>
      <guid>/blog/2021-07-12-500-contributors-mark/</guid>
      <description>
        
        
        &lt;p&gt;&lt;img src=&#34;500-mark.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;SkyWalking is an open source APM (application performance monitor) system, especially designed for microservices, cloud native, and container-based architectures.&lt;/p&gt;
&lt;p&gt;From 2020, it has dominated the open source APM market in China, and expanded aggressively in North American, Europe and Asia&amp;rsquo;s other countries.&lt;/p&gt;
&lt;p&gt;With over 6 years (2015-2021) of development, driven by the global open source community, SkyWalking now provides full stack observability covering metrics, tracing and logging, plus event detector, which are built based on various native and ecosystem solutions.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Language agent-based(Java, Dot Net, Golang, PHP, NodeJS, Python, C++, LUA) in-process monitoring, is as powerful as commercial APM vendors&amp;rsquo; agents. Mostly auto-instrumentation, and good interactivity.&lt;/li&gt;
&lt;li&gt;Service Mesh Observability, working closely with Envoy and Istio teams.&lt;/li&gt;
&lt;li&gt;Transparent integration of popular metrics ecosystem. Accept metrics from Prometheus SDK, OpenTelemetry collectors, Zabbix agents, etc.&lt;/li&gt;
&lt;li&gt;Log collection with analysis capability from FluentD, Fluent-bit, Filebeat, etc. agents.&lt;/li&gt;
&lt;li&gt;Infrastructure monitoring, such as Linux and k8s, is out of the box.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The SkyWalking ecosystem was started by very few people. The community drives the project to cover real scenarios, from tracing to the whole APM field. Even today, more professional open source developers, powered by the vendors behind them, are bringing the project to a different level.&lt;/p&gt;
&lt;p&gt;Typically and most attractively, SkyWalking is going to build the first known open source APM specific database in the world, at least providing&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Time series-based database engine.&lt;/li&gt;
&lt;li&gt;Support traces/logs and metrics in the database core level.&lt;/li&gt;
&lt;li&gt;High performance with cluster mode and HPA.&lt;/li&gt;
&lt;li&gt;Reasonable resource cost.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;500-trend.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;We nearly doubled the number of contributors in the last year, from ~300 to over 500. The whole community is very energetic. Here, we want to thank our 47 committers(28 PMC members included), listed &lt;a href=&#34;https://skywalking.apache.org/team/&#34;&gt;here&lt;/a&gt;, and over 400 other contributors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We together built this humongous Apache Top Level project, and proved the stronge competitiveness of an open-source project.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is a hard-won and impressive achievement. We won&amp;rsquo;t stop here. The trend is there, the ground is solid. We are going to build the top-level APM system relying on our open-source community.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;500-contributors-list&#34;&gt;500 Contributors List&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1095071913&lt;/td&gt;
          &lt;td&gt;182148432**&lt;/td&gt;
          &lt;td&gt;295198088**&lt;/td&gt;
          &lt;td&gt;394102339**&lt;/td&gt;
          &lt;td&gt;437376068**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50168383&lt;/td&gt;
          &lt;td&gt;55846420**&lt;/td&gt;
          &lt;td&gt;826245622**&lt;/td&gt;
          &lt;td&gt;844067874&lt;/td&gt;
          &lt;td&gt;Ahoo-Wang&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AirTrioa&lt;/td&gt;
          &lt;td&gt;AlexanderWert&lt;/td&gt;
          &lt;td&gt;AlseinX&lt;/td&gt;
          &lt;td&gt;AngryMills&lt;/td&gt;
          &lt;td&gt;Ax1an&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;BFergerson&lt;/td&gt;
          &lt;td&gt;BZFYS&lt;/td&gt;
          &lt;td&gt;CalvinKirs&lt;/td&gt;
          &lt;td&gt;CharlesMaster&lt;/td&gt;
          &lt;td&gt;ChaunceyLin5152&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CommissarXia&lt;/td&gt;
          &lt;td&gt;Cvimer&lt;/td&gt;
          &lt;td&gt;DeadLion&lt;/td&gt;
          &lt;td&gt;Doublemine&lt;/td&gt;
          &lt;td&gt;Du-fei&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ElderJames&lt;/td&gt;
          &lt;td&gt;EvanLjp&lt;/td&gt;
          &lt;td&gt;FatihErdem&lt;/td&gt;
          &lt;td&gt;FeynmanZhou&lt;/td&gt;
          &lt;td&gt;Fine0830&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FingerLiu&lt;/td&gt;
          &lt;td&gt;FrankyXu&lt;/td&gt;
          &lt;td&gt;Gallardot&lt;/td&gt;
          &lt;td&gt;GerryYuan&lt;/td&gt;
          &lt;td&gt;HackerRookie&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;HarryFQ&lt;/td&gt;
          &lt;td&gt;Heguoya&lt;/td&gt;
          &lt;td&gt;Hen1ng&lt;/td&gt;
          &lt;td&gt;HendSame&lt;/td&gt;
          &lt;td&gt;Humbertzhang&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IanCao&lt;/td&gt;
          &lt;td&gt;IluckySi&lt;/td&gt;
          &lt;td&gt;Indifer&lt;/td&gt;
          &lt;td&gt;J-Cod3r&lt;/td&gt;
          &lt;td&gt;JaredTan95&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Jargon96&lt;/td&gt;
          &lt;td&gt;Jijun&lt;/td&gt;
          &lt;td&gt;JoeKerouac&lt;/td&gt;
          &lt;td&gt;JohnNiang&lt;/td&gt;
          &lt;td&gt;Johor03&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Jozdortraz&lt;/td&gt;
          &lt;td&gt;Jtrust&lt;/td&gt;
          &lt;td&gt;Just-maple&lt;/td&gt;
          &lt;td&gt;KangZhiDong&lt;/td&gt;
          &lt;td&gt;LazyLei&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;LiWenGu&lt;/td&gt;
          &lt;td&gt;Lin1997&lt;/td&gt;
          &lt;td&gt;Linda-pan&lt;/td&gt;
          &lt;td&gt;LiteSun&lt;/td&gt;
          &lt;td&gt;Liu-XinYuan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MiracleDx&lt;/td&gt;
          &lt;td&gt;Miss-you&lt;/td&gt;
          &lt;td&gt;MoGuGuai-hzr&lt;/td&gt;
          &lt;td&gt;MrYzys&lt;/td&gt;
          &lt;td&gt;O-ll-O&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Patrick0308&lt;/td&gt;
          &lt;td&gt;QHWG67&lt;/td&gt;
          &lt;td&gt;Qiliang&lt;/td&gt;
          &lt;td&gt;QuanjieDeng&lt;/td&gt;
          &lt;td&gt;RandyAbernethy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RedzRedz&lt;/td&gt;
          &lt;td&gt;Runrioter&lt;/td&gt;
          &lt;td&gt;SataQiu&lt;/td&gt;
          &lt;td&gt;ScienJus&lt;/td&gt;
          &lt;td&gt;SevenBlue2018&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ShaoHans&lt;/td&gt;
          &lt;td&gt;Shikugawa&lt;/td&gt;
          &lt;td&gt;SoberChina&lt;/td&gt;
          &lt;td&gt;SummerOfServenteen&lt;/td&gt;
          &lt;td&gt;Switch-vov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TJ666&lt;/td&gt;
          &lt;td&gt;Technoboy-&lt;/td&gt;
          &lt;td&gt;TerrellChen&lt;/td&gt;
          &lt;td&gt;TeslaCN&lt;/td&gt;
          &lt;td&gt;TheRealHaui&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TinyAllen&lt;/td&gt;
          &lt;td&gt;TomMD&lt;/td&gt;
          &lt;td&gt;ViberW&lt;/td&gt;
          &lt;td&gt;Videl&lt;/td&gt;
          &lt;td&gt;WALL-E&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;WeihanLi&lt;/td&gt;
          &lt;td&gt;WildWolfBang&lt;/td&gt;
          &lt;td&gt;WillemJiang&lt;/td&gt;
          &lt;td&gt;Wooo0&lt;/td&gt;
          &lt;td&gt;XhangUeiJong&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Xlinlin&lt;/td&gt;
          &lt;td&gt;YczYanchengzhe&lt;/td&gt;
          &lt;td&gt;Yebemeto&lt;/td&gt;
          &lt;td&gt;YoungHu&lt;/td&gt;
          &lt;td&gt;YunaiV&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;YunfengGao&lt;/td&gt;
          &lt;td&gt;Z-Beatles&lt;/td&gt;
          &lt;td&gt;ZS-Oliver&lt;/td&gt;
          &lt;td&gt;ZhHong&lt;/td&gt;
          &lt;td&gt;ZhuoSiChen&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;a198720&lt;/td&gt;
          &lt;td&gt;a1vin-tian&lt;/td&gt;
          &lt;td&gt;a526672351&lt;/td&gt;
          &lt;td&gt;acurtain&lt;/td&gt;
          &lt;td&gt;adamni135&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;adermxzs&lt;/td&gt;
          &lt;td&gt;adriancole**&lt;/td&gt;
          &lt;td&gt;aeolusheath&lt;/td&gt;
          &lt;td&gt;agile6v&lt;/td&gt;
          &lt;td&gt;aix3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;aiyanbo&lt;/td&gt;
          &lt;td&gt;ajanthan&lt;/td&gt;
          &lt;td&gt;alexkarezin&lt;/td&gt;
          &lt;td&gt;alonelaval&lt;/td&gt;
          &lt;td&gt;amogege&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;amwyyyy&lt;/td&gt;
          &lt;td&gt;andyliyuze&lt;/td&gt;
          &lt;td&gt;andyzzl&lt;/td&gt;
          &lt;td&gt;aoxls&lt;/td&gt;
          &lt;td&gt;arugal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ascrutae&lt;/td&gt;
          &lt;td&gt;ascrutae**&lt;/td&gt;
          &lt;td&gt;augustowebd&lt;/td&gt;
          &lt;td&gt;aviaviavi&lt;/td&gt;
          &lt;td&gt;bai-yang&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;beckhampu&lt;/td&gt;
          &lt;td&gt;beckjin&lt;/td&gt;
          &lt;td&gt;beiwangnull&lt;/td&gt;
          &lt;td&gt;bigflybrother&lt;/td&gt;
          &lt;td&gt;bootsrc&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;bostin&lt;/td&gt;
          &lt;td&gt;brucewu-fly&lt;/td&gt;
          &lt;td&gt;buxingzhe&lt;/td&gt;
          &lt;td&gt;buzuotaxuan&lt;/td&gt;
          &lt;td&gt;bwh12398**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;c feng&lt;/td&gt;
          &lt;td&gt;c1ay&lt;/td&gt;
          &lt;td&gt;candyleer&lt;/td&gt;
          &lt;td&gt;carllhw&lt;/td&gt;
          &lt;td&gt;carlvine500&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;carrypann&lt;/td&gt;
          &lt;td&gt;cheenursn&lt;/td&gt;
          &lt;td&gt;cheetah012&lt;/td&gt;
          &lt;td&gt;chenbeitang&lt;/td&gt;
          &lt;td&gt;chenglei**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;chengshiwen&lt;/td&gt;
          &lt;td&gt;chenmudu&lt;/td&gt;
          &lt;td&gt;chenpengfei&lt;/td&gt;
          &lt;td&gt;chenvista&lt;/td&gt;
          &lt;td&gt;chess-equality&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;chestarss&lt;/td&gt;
          &lt;td&gt;chidaodezhongsheng&lt;/td&gt;
          &lt;td&gt;chopin-d&lt;/td&gt;
          &lt;td&gt;clevertension&lt;/td&gt;
          &lt;td&gt;clk1st&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;cngdkxw&lt;/td&gt;
          &lt;td&gt;cnlangzi&lt;/td&gt;
          &lt;td&gt;codeglzhang&lt;/td&gt;
          &lt;td&gt;codelipenghui&lt;/td&gt;
          &lt;td&gt;coder-yqj&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;coki230&lt;/td&gt;
          &lt;td&gt;compilerduck&lt;/td&gt;
          &lt;td&gt;constanine&lt;/td&gt;
          &lt;td&gt;coolbeevip&lt;/td&gt;
          &lt;td&gt;crystaldust&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;cui-liqiang&lt;/td&gt;
          &lt;td&gt;cuiweiwei&lt;/td&gt;
          &lt;td&gt;cutePanda123&lt;/td&gt;
          &lt;td&gt;cyberdak&lt;/td&gt;
          &lt;td&gt;cyejing&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;cyhii&lt;/td&gt;
          &lt;td&gt;dafu-wu&lt;/td&gt;
          &lt;td&gt;dagmom&lt;/td&gt;
          &lt;td&gt;dalekliuhan**&lt;/td&gt;
          &lt;td&gt;darcydai&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;dengliming&lt;/td&gt;
          &lt;td&gt;devkanro&lt;/td&gt;
          &lt;td&gt;devon-ye&lt;/td&gt;
          &lt;td&gt;dickens7&lt;/td&gt;
          &lt;td&gt;dimaaan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;dingdongnigetou&lt;/td&gt;
          &lt;td&gt;dio&lt;/td&gt;
          &lt;td&gt;divyakumarjain&lt;/td&gt;
          &lt;td&gt;dmsolr&lt;/td&gt;
          &lt;td&gt;dominicqi&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;donbing007&lt;/td&gt;
          &lt;td&gt;dsc6636926&lt;/td&gt;
          &lt;td&gt;dvsv2&lt;/td&gt;
          &lt;td&gt;dzx2018&lt;/td&gt;
          &lt;td&gt;echooymxq&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;efekaptan&lt;/td&gt;
          &lt;td&gt;elk-g&lt;/td&gt;
          &lt;td&gt;emschu&lt;/td&gt;
          &lt;td&gt;eoeac&lt;/td&gt;
          &lt;td&gt;evanljp**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;evanxuhe&lt;/td&gt;
          &lt;td&gt;feelwing1314&lt;/td&gt;
          &lt;td&gt;fgksgf&lt;/td&gt;
          &lt;td&gt;fredster33&lt;/td&gt;
          &lt;td&gt;fuhuo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;fulmicoton&lt;/td&gt;
          &lt;td&gt;fushiqinghuan111&lt;/td&gt;
          &lt;td&gt;geektcp&lt;/td&gt;
          &lt;td&gt;geomonlin&lt;/td&gt;
          &lt;td&gt;ggndnn&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;gitter-badger&lt;/td&gt;
          &lt;td&gt;givingwu&lt;/td&gt;
          &lt;td&gt;glongzh&lt;/td&gt;
          &lt;td&gt;gnr163&lt;/td&gt;
          &lt;td&gt;gonedays&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;grissom-grissom&lt;/td&gt;
          &lt;td&gt;grissomsh&lt;/td&gt;
          &lt;td&gt;guodongq&lt;/td&gt;
          &lt;td&gt;guyukou&lt;/td&gt;
          &lt;td&gt;gxthrj&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;gy09535&lt;/td&gt;
          &lt;td&gt;gzshilu&lt;/td&gt;
          &lt;td&gt;hailin0&lt;/td&gt;
          &lt;td&gt;hanahmily&lt;/td&gt;
          &lt;td&gt;haotian2015&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;haoyann&lt;/td&gt;
          &lt;td&gt;hardzhang&lt;/td&gt;
          &lt;td&gt;harvies&lt;/td&gt;
          &lt;td&gt;heihaozi&lt;/td&gt;
          &lt;td&gt;hepyu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;heyanlong&lt;/td&gt;
          &lt;td&gt;hi-sb&lt;/td&gt;
          &lt;td&gt;honganan&lt;/td&gt;
          &lt;td&gt;horber&lt;/td&gt;
          &lt;td&gt;hsoftxl&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;huangyoje&lt;/td&gt;
          &lt;td&gt;huliangdream&lt;/td&gt;
          &lt;td&gt;huohuanhuan&lt;/td&gt;
          &lt;td&gt;iluckysi&lt;/td&gt;
          &lt;td&gt;innerpeacez&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;itsvse&lt;/td&gt;
          &lt;td&gt;jasper-zsh&lt;/td&gt;
          &lt;td&gt;jbampton&lt;/td&gt;
          &lt;td&gt;jialong121&lt;/td&gt;
          &lt;td&gt;jinlongwang&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;jjlu521016&lt;/td&gt;
          &lt;td&gt;jjtyro&lt;/td&gt;
          &lt;td&gt;jmjoy&lt;/td&gt;
          &lt;td&gt;jsbxyyx&lt;/td&gt;
          &lt;td&gt;justeene&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;juzhiyuan&lt;/td&gt;
          &lt;td&gt;jy00464346&lt;/td&gt;
          &lt;td&gt;kaanid&lt;/td&gt;
          &lt;td&gt;kagaya85&lt;/td&gt;
          &lt;td&gt;karott&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;kayleyang&lt;/td&gt;
          &lt;td&gt;kevinyyyy&lt;/td&gt;
          &lt;td&gt;kezhenxu94&lt;/td&gt;
          &lt;td&gt;kikupotter&lt;/td&gt;
          &lt;td&gt;kilingzhang&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;killGC&lt;/td&gt;
          &lt;td&gt;kkl129&lt;/td&gt;
          &lt;td&gt;klboke&lt;/td&gt;
          &lt;td&gt;ksewen&lt;/td&gt;
          &lt;td&gt;kuaikuai&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;kun-song&lt;/td&gt;
          &lt;td&gt;kylixs&lt;/td&gt;
          &lt;td&gt;landonzeng&lt;/td&gt;
          &lt;td&gt;langke93&lt;/td&gt;
          &lt;td&gt;langyan1022&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;langyizhao&lt;/td&gt;
          &lt;td&gt;lazycathome&lt;/td&gt;
          &lt;td&gt;leemove&lt;/td&gt;
          &lt;td&gt;leizhiyuan&lt;/td&gt;
          &lt;td&gt;libinglong&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;lijial&lt;/td&gt;
          &lt;td&gt;lilien1010&lt;/td&gt;
          &lt;td&gt;limfriend&lt;/td&gt;
          &lt;td&gt;linkinshi&lt;/td&gt;
          &lt;td&gt;linliaoy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;liqiangz&lt;/td&gt;
          &lt;td&gt;liu-junchi&lt;/td&gt;
          &lt;td&gt;liufei**&lt;/td&gt;
          &lt;td&gt;liuhaoXD&lt;/td&gt;
          &lt;td&gt;liuhaoyang&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;liuweiyi**&lt;/td&gt;
          &lt;td&gt;liuyanggithup&lt;/td&gt;
          &lt;td&gt;liuzhengyang&lt;/td&gt;
          &lt;td&gt;liweiv&lt;/td&gt;
          &lt;td&gt;lixin40**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;lizl9**&lt;/td&gt;
          &lt;td&gt;lkxiaolou&lt;/td&gt;
          &lt;td&gt;llissery&lt;/td&gt;
          &lt;td&gt;louis-zhou&lt;/td&gt;
          &lt;td&gt;lpcy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;lpf32&lt;/td&gt;
          &lt;td&gt;lsyf&lt;/td&gt;
          &lt;td&gt;lucperkins&lt;/td&gt;
          &lt;td&gt;lujiajing1126&lt;/td&gt;
          &lt;td&gt;lunamagic1978&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;lunchboxav&lt;/td&gt;
          &lt;td&gt;lxin96**&lt;/td&gt;
          &lt;td&gt;lxliuxuankb&lt;/td&gt;
          &lt;td&gt;lytscu&lt;/td&gt;
          &lt;td&gt;lyzhang1999&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;mage3k&lt;/td&gt;
          &lt;td&gt;makefriend8&lt;/td&gt;
          &lt;td&gt;makingtime&lt;/td&gt;
          &lt;td&gt;mantuliu&lt;/td&gt;
          &lt;td&gt;maolie&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;margauxcabrera&lt;/td&gt;
          &lt;td&gt;masterxxo&lt;/td&gt;
          &lt;td&gt;maxiaoguang64&lt;/td&gt;
          &lt;td&gt;me**&lt;/td&gt;
          &lt;td&gt;membphis&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;mestarshine&lt;/td&gt;
          &lt;td&gt;mgsheng&lt;/td&gt;
          &lt;td&gt;michaelsembwever&lt;/td&gt;
          &lt;td&gt;mikkeschiren&lt;/td&gt;
          &lt;td&gt;ming_flycash**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;minquan.chen**&lt;/td&gt;
          &lt;td&gt;misaya&lt;/td&gt;
          &lt;td&gt;momo0313&lt;/td&gt;
          &lt;td&gt;moonming&lt;/td&gt;
          &lt;td&gt;mrproliu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;mrproliu**&lt;/td&gt;
          &lt;td&gt;muyun12&lt;/td&gt;
          &lt;td&gt;nacx&lt;/td&gt;
          &lt;td&gt;neatlife&lt;/td&gt;
          &lt;td&gt;neeuq&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;nic-chen&lt;/td&gt;
          &lt;td&gt;nickwongwong&lt;/td&gt;
          &lt;td&gt;nikitap492&lt;/td&gt;
          &lt;td&gt;nileblack&lt;/td&gt;
          &lt;td&gt;nisiyong&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;novayoung&lt;/td&gt;
          &lt;td&gt;oatiz&lt;/td&gt;
          &lt;td&gt;oflebbe&lt;/td&gt;
          &lt;td&gt;olzhy&lt;/td&gt;
          &lt;td&gt;onecloud360&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;osiriswd&lt;/td&gt;
          &lt;td&gt;panniyuyu&lt;/td&gt;
          &lt;td&gt;peng-yongsheng&lt;/td&gt;
          &lt;td&gt;pengweiqhca&lt;/td&gt;
          &lt;td&gt;potiuk&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;probeyang&lt;/td&gt;
          &lt;td&gt;purgeyao&lt;/td&gt;
          &lt;td&gt;qijianbo010&lt;/td&gt;
          &lt;td&gt;qinhang3&lt;/td&gt;
          &lt;td&gt;qiuyu-d&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;qjgszzx&lt;/td&gt;
          &lt;td&gt;qq362220083&lt;/td&gt;
          &lt;td&gt;qqeasonchen&lt;/td&gt;
          &lt;td&gt;qxo&lt;/td&gt;
          &lt;td&gt;ralphgj&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;raybi-asus&lt;/td&gt;
          &lt;td&gt;refactor2&lt;/td&gt;
          &lt;td&gt;remicollet&lt;/td&gt;
          &lt;td&gt;rlenferink&lt;/td&gt;
          &lt;td&gt;rootsongjc&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;rovast&lt;/td&gt;
          &lt;td&gt;ruibaby&lt;/td&gt;
          &lt;td&gt;s00373198&lt;/td&gt;
          &lt;td&gt;scolia&lt;/td&gt;
          &lt;td&gt;sdanzo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;seifeHu&lt;/td&gt;
          &lt;td&gt;sergicastro&lt;/td&gt;
          &lt;td&gt;shiluo34&lt;/td&gt;
          &lt;td&gt;sikelangya&lt;/td&gt;
          &lt;td&gt;simonlei&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;sk163&lt;/td&gt;
          &lt;td&gt;snakorse&lt;/td&gt;
          &lt;td&gt;songzhendong&lt;/td&gt;
          &lt;td&gt;songzhian&lt;/td&gt;
          &lt;td&gt;songzhian**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;sonxy&lt;/td&gt;
          &lt;td&gt;spacewander&lt;/td&gt;
          &lt;td&gt;stalary&lt;/td&gt;
          &lt;td&gt;stenio2011&lt;/td&gt;
          &lt;td&gt;stevehu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;stone-wlg&lt;/td&gt;
          &lt;td&gt;sungitly&lt;/td&gt;
          &lt;td&gt;surechen&lt;/td&gt;
          &lt;td&gt;swartz-k&lt;/td&gt;
          &lt;td&gt;sxzaihua&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tangxqa&lt;/td&gt;
          &lt;td&gt;tanjunchen&lt;/td&gt;
          &lt;td&gt;tankilo&lt;/td&gt;
          &lt;td&gt;tanzhen**&lt;/td&gt;
          &lt;td&gt;taskmgr&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tbdpmi&lt;/td&gt;
          &lt;td&gt;terranhu&lt;/td&gt;
          &lt;td&gt;terrymanu&lt;/td&gt;
          &lt;td&gt;tevahp&lt;/td&gt;
          &lt;td&gt;thanq&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;thebouv&lt;/td&gt;
          &lt;td&gt;tianyk&lt;/td&gt;
          &lt;td&gt;tianyuak&lt;/td&gt;
          &lt;td&gt;tincopper&lt;/td&gt;
          &lt;td&gt;tinyu0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tom-pytel&lt;/td&gt;
          &lt;td&gt;tristaZero&lt;/td&gt;
          &lt;td&gt;tristan-tsl&lt;/td&gt;
          &lt;td&gt;trustin&lt;/td&gt;
          &lt;td&gt;tsuilouis&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tuohai666&lt;/td&gt;
          &lt;td&gt;tzsword-2020&lt;/td&gt;
          &lt;td&gt;tzy1316106836&lt;/td&gt;
          &lt;td&gt;vcjmhg&lt;/td&gt;
          &lt;td&gt;viktoryi&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;vision-ken&lt;/td&gt;
          &lt;td&gt;viswaramamoorthy&lt;/td&gt;
          &lt;td&gt;wallezhang&lt;/td&gt;
          &lt;td&gt;wang-yeliang&lt;/td&gt;
          &lt;td&gt;wang_weihan**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;wangrzneu&lt;/td&gt;
          &lt;td&gt;wankai123&lt;/td&gt;
          &lt;td&gt;wbpcode&lt;/td&gt;
          &lt;td&gt;web-xiaxia&lt;/td&gt;
          &lt;td&gt;webb2019&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;weiqiang-w&lt;/td&gt;
          &lt;td&gt;weiqiang333&lt;/td&gt;
          &lt;td&gt;wendal&lt;/td&gt;
          &lt;td&gt;wengangJi&lt;/td&gt;
          &lt;td&gt;wenjianzhang&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;whfjam&lt;/td&gt;
          &lt;td&gt;whl12345&lt;/td&gt;
          &lt;td&gt;willseeyou&lt;/td&gt;
          &lt;td&gt;wilsonwu&lt;/td&gt;
          &lt;td&gt;wind2008hxy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;wingwong-knh&lt;/td&gt;
          &lt;td&gt;withlin&lt;/td&gt;
          &lt;td&gt;wl4g&lt;/td&gt;
          &lt;td&gt;wqr2016&lt;/td&gt;
          &lt;td&gt;wu-sheng&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;wuguangkuo&lt;/td&gt;
          &lt;td&gt;wujun8&lt;/td&gt;
          &lt;td&gt;wuwen5&lt;/td&gt;
          &lt;td&gt;wuxingye&lt;/td&gt;
          &lt;td&gt;x22x22&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;xbkaishui&lt;/td&gt;
          &lt;td&gt;xcaspar&lt;/td&gt;
          &lt;td&gt;xdRight&lt;/td&gt;
          &lt;td&gt;xiaoweiyu**&lt;/td&gt;
          &lt;td&gt;xiaoxiangmoe&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;xiaoy00&lt;/td&gt;
          &lt;td&gt;xinfeingxia85&lt;/td&gt;
          &lt;td&gt;xingren23&lt;/td&gt;
          &lt;td&gt;xinzhuxiansheng&lt;/td&gt;
          &lt;td&gt;xonze&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;xuanyu66&lt;/td&gt;
          &lt;td&gt;xuchangjunjx&lt;/td&gt;
          &lt;td&gt;xudianyang&lt;/td&gt;
          &lt;td&gt;yanbw&lt;/td&gt;
          &lt;td&gt;yanfch&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;yang-xiaodong&lt;/td&gt;
          &lt;td&gt;yangxb2010000&lt;/td&gt;
          &lt;td&gt;yanickxia&lt;/td&gt;
          &lt;td&gt;yanmaipian&lt;/td&gt;
          &lt;td&gt;yanmingbi&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;yantaowu&lt;/td&gt;
          &lt;td&gt;yaojingguo&lt;/td&gt;
          &lt;td&gt;yaowenqiang&lt;/td&gt;
          &lt;td&gt;yazong&lt;/td&gt;
          &lt;td&gt;ychandu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ycoe&lt;/td&gt;
          &lt;td&gt;yimeng&lt;/td&gt;
          &lt;td&gt;yu199195&lt;/td&gt;
          &lt;td&gt;yuqichou&lt;/td&gt;
          &lt;td&gt;yushuqiang**&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;yuyujulin&lt;/td&gt;
          &lt;td&gt;yxudong&lt;/td&gt;
          &lt;td&gt;yymoth&lt;/td&gt;
          &lt;td&gt;zaunist&lt;/td&gt;
          &lt;td&gt;zaygrzx&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;zcai2&lt;/td&gt;
          &lt;td&gt;zeaposs&lt;/td&gt;
          &lt;td&gt;zhang98722&lt;/td&gt;
          &lt;td&gt;zhanghao001&lt;/td&gt;
          &lt;td&gt;zhangjianweibj&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;zhangkewei&lt;/td&gt;
          &lt;td&gt;zhangsean&lt;/td&gt;
          &lt;td&gt;zhangxin**&lt;/td&gt;
          &lt;td&gt;zhaoyuguang&lt;/td&gt;
          &lt;td&gt;zhe1926&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;zhentaoJin&lt;/td&gt;
          &lt;td&gt;zhongjianno1**&lt;/td&gt;
          &lt;td&gt;zhousiliang163&lt;/td&gt;
          &lt;td&gt;zhuCheer&lt;/td&gt;
          &lt;td&gt;zhyyu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;zifeihan&lt;/td&gt;
          &lt;td&gt;zijin-m&lt;/td&gt;
          &lt;td&gt;zkscpqm&lt;/td&gt;
          &lt;td&gt;zoidbergwill&lt;/td&gt;
          &lt;td&gt;zoumingzm&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;zouyx&lt;/td&gt;
          &lt;td&gt;zpf1989&lt;/td&gt;
          &lt;td&gt;zshit&lt;/td&gt;
          &lt;td&gt;zxbu&lt;/td&gt;
          &lt;td&gt;zygfengyuwuzu&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: OpenSearch, a new storage option to avoid ElasticSearch&#39;s SSPL</title>
      <link>/blog/2021-05-09-opensearch-supported/</link>
      <pubDate>Sun, 09 May 2021 00:00:00 +0000</pubDate>
      <guid>/blog/2021-05-09-opensearch-supported/</guid>
      <description>
        
        
        &lt;p&gt;We posted our &lt;a href=&#34;/blog/2021-01-17-elastic-change-license/&#34;&gt;&lt;strong&gt;Response to Elastic 2021 License Change&lt;/strong&gt;&lt;/a&gt; blog 4 months ago. It doesn&amp;rsquo;t have a big impact in
the short term, but because of the incompatibility between SSPL and Apache 2.0, we lost the chance of upgrading the storage server,
which concerns the community and our users. So, we have to keep looking for a new option as a replacement.&lt;/p&gt;
&lt;p&gt;There was an open source project, Open Distro for Elasticsearch, maintained by the AWS team. It is an Apache 2.0-licensed distribution of Elasticsearch enhanced with enterprise security, alerting, SQL, and more. After Elastic relicensed its projects, we talked with their team, and they have an agenda
to take over the community leadship and keep maintaining Elasticsearch, as it was licensed by Apache 2.0. So, they are good to fork and continue.&lt;/p&gt;
&lt;p&gt;On April 12th, 2021, AWS announced the new project, OpenSearch, driven by the community, which is initialized from people of AWS, Red Hat, SAP, Capital One, and Logz.io. Read this &lt;a href=&#34;https://aws.amazon.com/cn/blogs/opensource/introducing-opensearch/&#34;&gt;Introducing OpenSearch&lt;/a&gt; blog for more detail.&lt;/p&gt;
&lt;p&gt;Once we had this news in public, we begin to plan the process of evaluating and testing OpenSearch as SkyWalking&amp;rsquo;s storage option.
Read our &lt;a href=&#34;https://github.com/apache/skywalking/issues/6745&#34;&gt;issue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Today, we are glad to ANNOUNCE, OpenSearch could replace ElastcSearch as the storage, and it is still licensed under Apache 2.0.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This has been merged in the main stream, and you can find it in the dev doc already.&lt;/p&gt;
&lt;h3 id=&#34;opensearch&#34;&gt;OpenSearch&lt;/h3&gt;
&lt;p&gt;OpenSearch storage shares the same configurations as Elasticsearch 7.
In order to activate Elasticsearch 7 as storage, set storage provider to &lt;strong&gt;elasticsearch7&lt;/strong&gt;.
Please download the &lt;code&gt;apache-skywalking-bin-es7.tar.gz&lt;/code&gt; if you want to use OpenSearch as storage.&lt;/p&gt;
&lt;p&gt;SkyWalking community will keep our eyes on the OpenSearch project, and look forward to their first GA release.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;NOTE: we have to add a warning NOTICE to the Elasticsearch storage doc:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTICE:&lt;/strong&gt; Elastic announced through their blog that Elasticsearch will be moving over to a Server Side Public
License (SSPL), which is incompatible with Apache License 2.0. This license change is effective from Elasticsearch
version 7.11. So please choose the suitable Elasticsearch version according to your usage.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: [Resolved][License Issue] Tencent Cloud TSW service violates the Apache 2.0 License when using SkyWalking.</title>
      <link>/blog/2021-01-23-tencent-cloud-violates-aplv2/</link>
      <pubDate>Fri, 22 Jan 2021 00:00:00 +0000</pubDate>
      <guid>/blog/2021-01-23-tencent-cloud-violates-aplv2/</guid>
      <description>
        
        
        &lt;p&gt;&lt;a href=&#34;https://skywalking.apache.org&#34;&gt;Apache SkyWalking&lt;/a&gt; is an open source APM for distributed system, Apache Software Foundation top-level project.&lt;/p&gt;
&lt;p&gt;At Jan. 11th, 2021, we noticed the Tencent Cloud Service, &lt;a href=&#34;https://cloud.tencent.com/product/tsw&#34;&gt;Tencent Service Watcher - TSW&lt;/a&gt;, for first time.
Due to the similar short name, which SkyWalking is also called SW in the community, we connected with the service team of Tencent Cloud, and kindly asked.&lt;/p&gt;
&lt;p&gt;They used to replay, &lt;strong&gt;TSW is purely developed by Tencent team itself, which doesn&amp;rsquo;t have any code dependency on SkyWalking.&lt;/strong&gt;. We didn&amp;rsquo;t push harder.&lt;/p&gt;
&lt;p&gt;But one week later, Jan 18th, 2021, our V.P., Sheng got the report again from Haoyang SkyWalking PMC member, through WeChat DM(direct message),.
He provided complete evidence to prove TSW actually re-distributed the SkyWalking&amp;rsquo;s Java agent.
We keep one copy of their agent&amp;rsquo;s distribution(at Jan. 18th), you could be downloaded &lt;a href=&#34;https://drive.google.com/file/d/1wCnUW0n-0qIoHuNI2pw8iAaVyRBrSuI7/view&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some typically evidences are here&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/apache/skywalking/blob/v8.3.0/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/boot/ServiceManager.java&#34;&gt;ServiceManager&lt;/a&gt; is copied and package-name changed in the TSW&amp;rsquo;s agent.
&lt;img src=&#34;copy1.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/apache/skywalking/blob/v8.3.0/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextManager.java&#34;&gt;ContextManager&lt;/a&gt; is copied and ackage-name changed in the TSW&amp;rsquo;s agent.
&lt;img src=&#34;copy2.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At the same time, we checked their tsw-client-package.zip, it didn&amp;rsquo;t include the SkyWalking&amp;rsquo;s LICENSE and NOTICE. Also, they didn&amp;rsquo;t mention TSW agent is the re-ditribution SkyWalking on their website.&lt;/p&gt;
&lt;p&gt;With all above information, we had enough reason to believe, from the tech perspective, &lt;strong&gt;they were violating the Apache 2.0 License.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;From the 18th Jan., 2021, we sent mail &lt;code&gt;[Apache 2.0 License Violation] Tencent Cloud TSW service doesn&#39;t follow the Apache 2.0 License&lt;/code&gt; to brief the SkyWalking PMC, and
took the following actions to connect with Tencent.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Made direct call to Tencent Open Source Office.&lt;/li&gt;
&lt;li&gt;Connected with Tencent Cloud TVP program committee, as Sheng Wu(Our VP) is a Tencent Cloud TVP.&lt;/li&gt;
&lt;li&gt;Talked with the Tencent Cloud team lead.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;In all above channels, we provided the evidences of copy-redistribution hebaviors, requested them to revaluate their statements on the website, and follow the License&amp;rsquo;s requirements.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;resolution&#34;&gt;Resolution&lt;/h2&gt;
&lt;p&gt;At Jan. 19th night, UTC+8, 2021. We received response from the Tencent cloud team. They admited their violation behaviors, and did following changes&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Tencent Cloud TSW service page states, the agent is the fork version(re-distribution) of Apache SkyWalking agent.
&lt;img src=&#34;tencent-cloud.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TSW agent distributions include the SkyWalking&amp;rsquo;s License and NOTICE. Below is the screenshot, you could download from their product page. We keep a copy of their Jan. 19th 2021 at &lt;a href=&#34;https://drive.google.com/file/d/1Z9EkOpi-lyFosmvuoqPZ57sY-gLdwNLq/view&#34;&gt;here&lt;/a&gt;.
&lt;img src=&#34;agent.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We have updated the status to the PMC mail list. This license violation issue has been resolved for now.&lt;/p&gt;
&lt;h5 id=&#34;the-skywalking-community-and-program-management-committee-will-keep-our-eyes-on-tencent-tsw&#34;&gt;The SkyWalking community and program management committee will keep our eyes on Tencent TSW.&lt;/h5&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Response to Elastic 2021 License Change</title>
      <link>/blog/2021-01-17-elastic-change-license/</link>
      <pubDate>Sun, 17 Jan 2021 00:00:00 +0000</pubDate>
      <guid>/blog/2021-01-17-elastic-change-license/</guid>
      <description>
        
        
        &lt;p&gt;&lt;a href=&#34;https://elastic.co&#34;&gt;Elastic&lt;/a&gt; announced their license change, &lt;a href=&#34;https://www.elastic.co/blog/licensing-change&#34;&gt;&lt;strong&gt;Upcoming licensing changes to Elasticsearch and Kibana&lt;/strong&gt;.&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We are moving our Apache 2.0-licensed source code in Elasticsearch and Kibana to be dual licensed under Server Side Public License (SSPL) and the Elastic License, giving users the choice of which license to apply. This license change ensures our community and customers have free and open access to use, modify, redistribute, and collaborate on the code. It also protects our continued investment in developing products that we distribute for free and in the open by restricting cloud service providers from offering Elasticsearch and Kibana as a service without contributing back. This will apply to all maintained branches of these two products and will take place before our upcoming 7.11 release. Our releases will continue to be under the Elastic License as they have been for the last three years.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Also, they provide the &lt;a href=&#34;https://www.elastic.co/pricing/faq/licensing&#34;&gt;FAQ page&lt;/a&gt; for more information about the impact for the users, developers, and vendors.&lt;/p&gt;
&lt;p&gt;In the perspective of Apache Software Foundation, SSPL has been confirmed as a Catalog X LICENSE(&lt;a href=&#34;https://www.apache.org/legal/resolved.html#category-x)&#34;&gt;https://www.apache.org/legal/resolved.html#category-x)&lt;/a&gt;,
which means hard-dependency as a part of the core is not allowed.
With that, we can&amp;rsquo;t only focus on it anymore. We need to consider other storage options. Right now, we still have InfluxDB, TiDB, H2 server still in Apache 2.0 licensed.
Right now, we still have InfluxDB, TiDB, H2 server as storage options still in Apache 2.0 licensed.&lt;/p&gt;
&lt;p&gt;As one optional plugin, we need to focus on the client driver license.
Right now, we are only using ElasticSearch 7.5.0 and 6.3.2 drivers, which are both Apache 2.0 licensed. So, we are safe.
For further upgrade, here is their announcement. They answer these typical cases in the FAQ page.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;I build a SaaS application using Elasticsearch as the backend, how does this affect me?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This source code license change should not affect you - you can use our default distribution or develop applications on top of it for free, under the Elastic License. This source-available license does not contain any copyleft provisions and the default functionality is free of charge. For a specific example, you can see our response to a question around this at Magento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Our users still could use, redistribute, sale the products/services, based on SkyWalking, even they are using self hosting Elastic Search unmodified server.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;I&amp;rsquo;m using Elasticsearch via APIs, how does this change affect me?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This change does not affect how you use client libraries to access Elasticsearch. Our client libraries remain licensed under
Apache 2.0, with the exception of our Java High Level Rest Client (Java HLRC).
The Java HLRC has dependencies on the core of Elasticsearch, and as a result this client library will be licensed under the
Elastic License. Over time, we will eliminate this dependency and move the Java HLRC to be licensed under Apache 2.0. Until
that time, for the avoidance of doubt, we do not consider using the Java HLRC as a client library in development of an
application or library used to access Elasticsearch to constitute a derivative work under the Elastic License, and this will not
have any impact on how you license the source code of your application using this client library or how you distribute it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The client driver license incompatible issue will exist, we can&amp;rsquo;t upgrade the driver(s) until they release the Apache 2.0 licensed driver jars.&lt;/strong&gt;
&lt;strong&gt;But users are still safe to upgrade the drivers by themselves.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Apache SkyWalking will discuss the further actions &lt;a href=&#34;https://github.com/apache/skywalking/issues/6219&#34;&gt;here&lt;/a&gt;. If you have any question, welcome to ask.
In the later 2021, we will begin to invest the posibility of creating SkyWalking&amp;rsquo;s observability database implementation.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Celebrate SkyWalking single repository hits the 300 contributors mark</title>
      <link>/blog/2021-01-01-300-contributors-mark/</link>
      <pubDate>Tue, 22 Dec 2020 00:00:00 +0000</pubDate>
      <guid>/blog/2021-01-01-300-contributors-mark/</guid>
      <description>
        
        
        &lt;p&gt;Apache SkyWalking is an open source APM for distributed system. Provide tracing, service mesh observability, metrics analysis, alarm and visualization.&lt;/p&gt;
&lt;p&gt;Just 11 months ago, on Jan. 20th, 2020, &lt;a href=&#34;http://skywalking.apache.org/blog/2020-01-20-celebrate-200th-contributor/&#34;&gt;SkyWalking hit the 200 contributors mark&lt;/a&gt;.
With the growth of the project and the community, SkyWalking now includes over 20 sub(ecosystem) projects covering multiple language agents and service mesh,
integration with mature open source projects, like Prometheus, Spring(Sleuth), hundreds of libraries to support all tracing/metrics/logs fields.
In the past year, the number of contributors grows super astoundingly , and all its metrics point to its community vibrancy. Many corporate titans are already using
SkyWalking in a large-scale production environment, including, Alibaba, Huawei, Baidu, Tencent, etc.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;300-contributors.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Recently, our &lt;a href=&#34;https://github.com/apache/skywalking&#34;&gt;SkyWalking main repository&lt;/a&gt; overs 300 contributors.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;website-access.png&#34; alt=&#34;&#34;&gt;
Our &lt;a href=&#34;https://skywalking.apache.org&#34;&gt;website&lt;/a&gt; has thousands of views from most countries in the world every week.&lt;/p&gt;
&lt;p&gt;Although we know that, the metrics like GitHub stars and the numbers of open users and contributors, are not a determinant of vibrancy,
they do show the trend, we are very proud to share the increased numbers here, too.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;community-metrics.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;We double those numbers and are honored with the development of our community.&lt;/p&gt;
&lt;p&gt;Thank you, all of our contributors. Not just these 300 contributors of the main repository, or nearly 400 contributors in all repositories, counted by GitHub.
There are countless people contributing codes to SkyWalking&amp;rsquo;s subprojects, ecosystem projects, and private fork versions;
writing blogs and guidances, translating documents, books, and presentations;
setting up learning sessions for new users;
convincing friends to join the community as end-users, contributors, even committers.
Companies behinds those contributors support their employees to work with the community to provide feedback and
contribute the improvements and features upstream.
Conference organizers share the stages with speakers from the SkyWalking community.&lt;/p&gt;
&lt;p&gt;SkyWalking can’t make this happen without your help. You made this community extraordinary.&lt;/p&gt;
&lt;p&gt;At this crazy distributed computing and cloud native age, we as a community could make DEV, OPS, and SRE teams&amp;rsquo; work easier by locating the issue(s) in the haystack
quicker than before, like why we named the project as SkyWalking, we will have a clear site line  when you stand on the glass bridge Skywalk at Grand Canyon West.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;376 Contributors counted by GitHub account are following. Dec. 22st, 2020. Generated by a tool deveoped by &lt;a href=&#34;https://github.com/miss-you&#34;&gt;Yousa&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1095071913&lt;/li&gt;
&lt;li&gt;50168383&lt;/li&gt;
&lt;li&gt;Ahoo-Wang&lt;/li&gt;
&lt;li&gt;AirTrioa&lt;/li&gt;
&lt;li&gt;AlexanderWert&lt;/li&gt;
&lt;li&gt;AlseinX&lt;/li&gt;
&lt;li&gt;Ax1an&lt;/li&gt;
&lt;li&gt;BFergerson&lt;/li&gt;
&lt;li&gt;BZFYS&lt;/li&gt;
&lt;li&gt;CharlesMaster&lt;/li&gt;
&lt;li&gt;ChaunceyLin5152&lt;/li&gt;
&lt;li&gt;CommissarXia&lt;/li&gt;
&lt;li&gt;Cvimer&lt;/li&gt;
&lt;li&gt;Doublemine&lt;/li&gt;
&lt;li&gt;ElderJames&lt;/li&gt;
&lt;li&gt;EvanLjp&lt;/li&gt;
&lt;li&gt;FatihErdem&lt;/li&gt;
&lt;li&gt;FeynmanZhou&lt;/li&gt;
&lt;li&gt;Fine0830&lt;/li&gt;
&lt;li&gt;FingerLiu&lt;/li&gt;
&lt;li&gt;Gallardot&lt;/li&gt;
&lt;li&gt;GerryYuan&lt;/li&gt;
&lt;li&gt;HackerRookie&lt;/li&gt;
&lt;li&gt;Heguoya&lt;/li&gt;
&lt;li&gt;Hen1ng&lt;/li&gt;
&lt;li&gt;Humbertzhang&lt;/li&gt;
&lt;li&gt;IanCao&lt;/li&gt;
&lt;li&gt;IluckySi&lt;/li&gt;
&lt;li&gt;Indifer&lt;/li&gt;
&lt;li&gt;J-Cod3r&lt;/li&gt;
&lt;li&gt;JaredTan95&lt;/li&gt;
&lt;li&gt;Jargon96&lt;/li&gt;
&lt;li&gt;Jijun&lt;/li&gt;
&lt;li&gt;JohnNiang&lt;/li&gt;
&lt;li&gt;Jozdortraz&lt;/li&gt;
&lt;li&gt;Jtrust&lt;/li&gt;
&lt;li&gt;Just-maple&lt;/li&gt;
&lt;li&gt;KangZhiDong&lt;/li&gt;
&lt;li&gt;LazyLei&lt;/li&gt;
&lt;li&gt;LiWenGu&lt;/li&gt;
&lt;li&gt;Liu-XinYuan&lt;/li&gt;
&lt;li&gt;Miss-you&lt;/li&gt;
&lt;li&gt;O-ll-O&lt;/li&gt;
&lt;li&gt;Patrick0308&lt;/li&gt;
&lt;li&gt;QHWG67&lt;/li&gt;
&lt;li&gt;Qiliang&lt;/li&gt;
&lt;li&gt;RandyAbernethy&lt;/li&gt;
&lt;li&gt;RedzRedz&lt;/li&gt;
&lt;li&gt;Runrioter&lt;/li&gt;
&lt;li&gt;SataQiu&lt;/li&gt;
&lt;li&gt;ScienJus&lt;/li&gt;
&lt;li&gt;SevenPointOld&lt;/li&gt;
&lt;li&gt;ShaoHans&lt;/li&gt;
&lt;li&gt;Shikugawa&lt;/li&gt;
&lt;li&gt;SoberChina&lt;/li&gt;
&lt;li&gt;SummerOfServenteen&lt;/li&gt;
&lt;li&gt;TJ666&lt;/li&gt;
&lt;li&gt;TerrellChen&lt;/li&gt;
&lt;li&gt;TheRealHaui&lt;/li&gt;
&lt;li&gt;TinyAllen&lt;/li&gt;
&lt;li&gt;TomMD&lt;/li&gt;
&lt;li&gt;ViberW&lt;/li&gt;
&lt;li&gt;Videl&lt;/li&gt;
&lt;li&gt;WALL-E&lt;/li&gt;
&lt;li&gt;WeihanLi&lt;/li&gt;
&lt;li&gt;WildWolfBang&lt;/li&gt;
&lt;li&gt;WillemJiang&lt;/li&gt;
&lt;li&gt;Wooo0&lt;/li&gt;
&lt;li&gt;XhangUeiJong&lt;/li&gt;
&lt;li&gt;Xlinlin&lt;/li&gt;
&lt;li&gt;YczYanchengzhe&lt;/li&gt;
&lt;li&gt;YoungHu&lt;/li&gt;
&lt;li&gt;YunaiV&lt;/li&gt;
&lt;li&gt;ZhHong&lt;/li&gt;
&lt;li&gt;ZhuoSiChen&lt;/li&gt;
&lt;li&gt;ZS-Oliver&lt;/li&gt;
&lt;li&gt;a198720&lt;/li&gt;
&lt;li&gt;a526672351&lt;/li&gt;
&lt;li&gt;acurtain&lt;/li&gt;
&lt;li&gt;adamni135&lt;/li&gt;
&lt;li&gt;adermxzs&lt;/li&gt;
&lt;li&gt;adriancole&lt;/li&gt;
&lt;li&gt;aeolusheath&lt;/li&gt;
&lt;li&gt;agile6v&lt;/li&gt;
&lt;li&gt;aix3&lt;/li&gt;
&lt;li&gt;aiyanbo&lt;/li&gt;
&lt;li&gt;ajanthan&lt;/li&gt;
&lt;li&gt;alexkarezin&lt;/li&gt;
&lt;li&gt;alonelaval&lt;/li&gt;
&lt;li&gt;amogege&lt;/li&gt;
&lt;li&gt;amwyyyy&lt;/li&gt;
&lt;li&gt;arugal&lt;/li&gt;
&lt;li&gt;ascrutae&lt;/li&gt;
&lt;li&gt;augustowebd&lt;/li&gt;
&lt;li&gt;bai-yang&lt;/li&gt;
&lt;li&gt;beckhampu&lt;/li&gt;
&lt;li&gt;beckjin&lt;/li&gt;
&lt;li&gt;beiwangnull&lt;/li&gt;
&lt;li&gt;bigflybrother&lt;/li&gt;
&lt;li&gt;bostin&lt;/li&gt;
&lt;li&gt;brucewu-fly&lt;/li&gt;
&lt;li&gt;c1ay&lt;/li&gt;
&lt;li&gt;candyleer&lt;/li&gt;
&lt;li&gt;carlvine500&lt;/li&gt;
&lt;li&gt;carrypann&lt;/li&gt;
&lt;li&gt;cheenursn&lt;/li&gt;
&lt;li&gt;cheetah012&lt;/li&gt;
&lt;li&gt;chenpengfei&lt;/li&gt;
&lt;li&gt;chenvista&lt;/li&gt;
&lt;li&gt;chess-equality&lt;/li&gt;
&lt;li&gt;chestarss&lt;/li&gt;
&lt;li&gt;chidaodezhongsheng&lt;/li&gt;
&lt;li&gt;chopin-d&lt;/li&gt;
&lt;li&gt;clevertension&lt;/li&gt;
&lt;li&gt;clk1st&lt;/li&gt;
&lt;li&gt;cngdkxw&lt;/li&gt;
&lt;li&gt;codeglzhang&lt;/li&gt;
&lt;li&gt;codelipenghui&lt;/li&gt;
&lt;li&gt;coder-yqj&lt;/li&gt;
&lt;li&gt;coki230&lt;/li&gt;
&lt;li&gt;coolbeevip&lt;/li&gt;
&lt;li&gt;crystaldust&lt;/li&gt;
&lt;li&gt;cui-liqiang&lt;/li&gt;
&lt;li&gt;cuiweiwei&lt;/li&gt;
&lt;li&gt;cyberdak&lt;/li&gt;
&lt;li&gt;cyejing&lt;/li&gt;
&lt;li&gt;dagmom&lt;/li&gt;
&lt;li&gt;dengliming&lt;/li&gt;
&lt;li&gt;devkanro&lt;/li&gt;
&lt;li&gt;devon-ye&lt;/li&gt;
&lt;li&gt;dimaaan&lt;/li&gt;
&lt;li&gt;dingdongnigetou&lt;/li&gt;
&lt;li&gt;dio&lt;/li&gt;
&lt;li&gt;dmsolr&lt;/li&gt;
&lt;li&gt;dominicqi&lt;/li&gt;
&lt;li&gt;donbing007&lt;/li&gt;
&lt;li&gt;dsc6636926&lt;/li&gt;
&lt;li&gt;duotai&lt;/li&gt;
&lt;li&gt;dvsv2&lt;/li&gt;
&lt;li&gt;dzx2018&lt;/li&gt;
&lt;li&gt;echooymxq&lt;/li&gt;
&lt;li&gt;efekaptan&lt;/li&gt;
&lt;li&gt;eoeac&lt;/li&gt;
&lt;li&gt;evanxuhe&lt;/li&gt;
&lt;li&gt;feelwing1314&lt;/li&gt;
&lt;li&gt;fgksgf&lt;/li&gt;
&lt;li&gt;fuhuo&lt;/li&gt;
&lt;li&gt;geektcp&lt;/li&gt;
&lt;li&gt;geomonlin&lt;/li&gt;
&lt;li&gt;ggndnn&lt;/li&gt;
&lt;li&gt;gitter-badger&lt;/li&gt;
&lt;li&gt;glongzh&lt;/li&gt;
&lt;li&gt;gnr163&lt;/li&gt;
&lt;li&gt;gonedays&lt;/li&gt;
&lt;li&gt;grissom-grissom&lt;/li&gt;
&lt;li&gt;grissomsh&lt;/li&gt;
&lt;li&gt;guodongq&lt;/li&gt;
&lt;li&gt;guyukou&lt;/li&gt;
&lt;li&gt;gxthrj&lt;/li&gt;
&lt;li&gt;gzshilu&lt;/li&gt;
&lt;li&gt;hailin0&lt;/li&gt;
&lt;li&gt;hanahmily&lt;/li&gt;
&lt;li&gt;haotian2015&lt;/li&gt;
&lt;li&gt;haoyann&lt;/li&gt;
&lt;li&gt;hardzhang&lt;/li&gt;
&lt;li&gt;harvies&lt;/li&gt;
&lt;li&gt;hepyu&lt;/li&gt;
&lt;li&gt;heyanlong&lt;/li&gt;
&lt;li&gt;hi-sb&lt;/li&gt;
&lt;li&gt;honganan&lt;/li&gt;
&lt;li&gt;hsoftxl&lt;/li&gt;
&lt;li&gt;huangyoje&lt;/li&gt;
&lt;li&gt;huliangdream&lt;/li&gt;
&lt;li&gt;huohuanhuan&lt;/li&gt;
&lt;li&gt;innerpeacez&lt;/li&gt;
&lt;li&gt;itsvse&lt;/li&gt;
&lt;li&gt;jasonz93&lt;/li&gt;
&lt;li&gt;jialong121&lt;/li&gt;
&lt;li&gt;jinlongwang&lt;/li&gt;
&lt;li&gt;jjlu521016&lt;/li&gt;
&lt;li&gt;jjtyro&lt;/li&gt;
&lt;li&gt;jmjoy&lt;/li&gt;
&lt;li&gt;jsbxyyx&lt;/li&gt;
&lt;li&gt;justeene&lt;/li&gt;
&lt;li&gt;juzhiyuan&lt;/li&gt;
&lt;li&gt;jy00464346&lt;/li&gt;
&lt;li&gt;kaanid&lt;/li&gt;
&lt;li&gt;karott&lt;/li&gt;
&lt;li&gt;kayleyang&lt;/li&gt;
&lt;li&gt;kevinyyyy&lt;/li&gt;
&lt;li&gt;kezhenxu94&lt;/li&gt;
&lt;li&gt;kikupotter&lt;/li&gt;
&lt;li&gt;kilingzhang&lt;/li&gt;
&lt;li&gt;killGC&lt;/li&gt;
&lt;li&gt;klboke&lt;/li&gt;
&lt;li&gt;ksewen&lt;/li&gt;
&lt;li&gt;kuaikuai&lt;/li&gt;
&lt;li&gt;kun-song&lt;/li&gt;
&lt;li&gt;kylixs&lt;/li&gt;
&lt;li&gt;landonzeng&lt;/li&gt;
&lt;li&gt;langke93&lt;/li&gt;
&lt;li&gt;langyan1022&lt;/li&gt;
&lt;li&gt;langyizhao&lt;/li&gt;
&lt;li&gt;lazycathome&lt;/li&gt;
&lt;li&gt;leemove&lt;/li&gt;
&lt;li&gt;leizhiyuan&lt;/li&gt;
&lt;li&gt;libinglong&lt;/li&gt;
&lt;li&gt;lilien1010&lt;/li&gt;
&lt;li&gt;limfriend&lt;/li&gt;
&lt;li&gt;linkinshi&lt;/li&gt;
&lt;li&gt;linliaoy&lt;/li&gt;
&lt;li&gt;liuhaoXD&lt;/li&gt;
&lt;li&gt;liuhaoyang&lt;/li&gt;
&lt;li&gt;liuyanggithup&lt;/li&gt;
&lt;li&gt;liuzhengyang&lt;/li&gt;
&lt;li&gt;liweiv&lt;/li&gt;
&lt;li&gt;lkxiaolou&lt;/li&gt;
&lt;li&gt;llissery&lt;/li&gt;
&lt;li&gt;louis-zhou&lt;/li&gt;
&lt;li&gt;lpf32&lt;/li&gt;
&lt;li&gt;lsyf&lt;/li&gt;
&lt;li&gt;lucperkins&lt;/li&gt;
&lt;li&gt;lujiajing1126&lt;/li&gt;
&lt;li&gt;lunamagic1978&lt;/li&gt;
&lt;li&gt;lunchboxav&lt;/li&gt;
&lt;li&gt;lxliuxuankb&lt;/li&gt;
&lt;li&gt;lytscu&lt;/li&gt;
&lt;li&gt;lyzhang1999&lt;/li&gt;
&lt;li&gt;magic-akari&lt;/li&gt;
&lt;li&gt;makingtime&lt;/li&gt;
&lt;li&gt;maolie&lt;/li&gt;
&lt;li&gt;masterxxo&lt;/li&gt;
&lt;li&gt;maxiaoguang64&lt;/li&gt;
&lt;li&gt;membphis&lt;/li&gt;
&lt;li&gt;mestarshine&lt;/li&gt;
&lt;li&gt;mgsheng&lt;/li&gt;
&lt;li&gt;michaelsembwever&lt;/li&gt;
&lt;li&gt;mikkeschiren&lt;/li&gt;
&lt;li&gt;mm23504570&lt;/li&gt;
&lt;li&gt;momo0313&lt;/li&gt;
&lt;li&gt;moonming&lt;/li&gt;
&lt;li&gt;mrproliu&lt;/li&gt;
&lt;li&gt;muyun12&lt;/li&gt;
&lt;li&gt;nacx&lt;/li&gt;
&lt;li&gt;neatlife&lt;/li&gt;
&lt;li&gt;neeuq&lt;/li&gt;
&lt;li&gt;nic-chen&lt;/li&gt;
&lt;li&gt;nikitap492&lt;/li&gt;
&lt;li&gt;nileblack&lt;/li&gt;
&lt;li&gt;nisiyong&lt;/li&gt;
&lt;li&gt;novayoung&lt;/li&gt;
&lt;li&gt;oatiz&lt;/li&gt;
&lt;li&gt;oflebbe&lt;/li&gt;
&lt;li&gt;olzhy&lt;/li&gt;
&lt;li&gt;onecloud360&lt;/li&gt;
&lt;li&gt;osiriswd&lt;/li&gt;
&lt;li&gt;peng-yongsheng&lt;/li&gt;
&lt;li&gt;pengweiqhca&lt;/li&gt;
&lt;li&gt;potiuk&lt;/li&gt;
&lt;li&gt;purgeyao&lt;/li&gt;
&lt;li&gt;qijianbo010&lt;/li&gt;
&lt;li&gt;qinhang3&lt;/li&gt;
&lt;li&gt;qiuyu-d&lt;/li&gt;
&lt;li&gt;qqeasonchen&lt;/li&gt;
&lt;li&gt;qxo&lt;/li&gt;
&lt;li&gt;raybi-asus&lt;/li&gt;
&lt;li&gt;refactor2&lt;/li&gt;
&lt;li&gt;remicollet&lt;/li&gt;
&lt;li&gt;rlenferink&lt;/li&gt;
&lt;li&gt;rootsongjc&lt;/li&gt;
&lt;li&gt;rovast&lt;/li&gt;
&lt;li&gt;scolia&lt;/li&gt;
&lt;li&gt;sdanzo&lt;/li&gt;
&lt;li&gt;seifeHu&lt;/li&gt;
&lt;li&gt;shiluo34&lt;/li&gt;
&lt;li&gt;sikelangya&lt;/li&gt;
&lt;li&gt;simonlei&lt;/li&gt;
&lt;li&gt;sk163&lt;/li&gt;
&lt;li&gt;snakorse&lt;/li&gt;
&lt;li&gt;songzhendong&lt;/li&gt;
&lt;li&gt;songzhian&lt;/li&gt;
&lt;li&gt;sonxy&lt;/li&gt;
&lt;li&gt;spacewander&lt;/li&gt;
&lt;li&gt;stalary&lt;/li&gt;
&lt;li&gt;stenio2011&lt;/li&gt;
&lt;li&gt;stevehu&lt;/li&gt;
&lt;li&gt;stone-wlg&lt;/li&gt;
&lt;li&gt;sungitly&lt;/li&gt;
&lt;li&gt;surechen&lt;/li&gt;
&lt;li&gt;swartz-k&lt;/li&gt;
&lt;li&gt;sxzaihua&lt;/li&gt;
&lt;li&gt;tanjunchen&lt;/li&gt;
&lt;li&gt;tankilo&lt;/li&gt;
&lt;li&gt;taskmgr&lt;/li&gt;
&lt;li&gt;tbdpmi&lt;/li&gt;
&lt;li&gt;terranhu&lt;/li&gt;
&lt;li&gt;terrymanu&lt;/li&gt;
&lt;li&gt;tevahp&lt;/li&gt;
&lt;li&gt;thanq&lt;/li&gt;
&lt;li&gt;thebouv&lt;/li&gt;
&lt;li&gt;tianyuak&lt;/li&gt;
&lt;li&gt;tincopper&lt;/li&gt;
&lt;li&gt;tinyu0&lt;/li&gt;
&lt;li&gt;tom-pytel&lt;/li&gt;
&lt;li&gt;tristaZero&lt;/li&gt;
&lt;li&gt;tristan-tsl&lt;/li&gt;
&lt;li&gt;trustin&lt;/li&gt;
&lt;li&gt;tsuilouis&lt;/li&gt;
&lt;li&gt;tuohai666&lt;/li&gt;
&lt;li&gt;tzsword-2020&lt;/li&gt;
&lt;li&gt;tzy1316106836&lt;/li&gt;
&lt;li&gt;vcjmhg&lt;/li&gt;
&lt;li&gt;vision-ken&lt;/li&gt;
&lt;li&gt;viswaramamoorthy&lt;/li&gt;
&lt;li&gt;wankai123&lt;/li&gt;
&lt;li&gt;wbpcode&lt;/li&gt;
&lt;li&gt;web-xiaxia&lt;/li&gt;
&lt;li&gt;webb2019&lt;/li&gt;
&lt;li&gt;weiqiang333&lt;/li&gt;
&lt;li&gt;wendal&lt;/li&gt;
&lt;li&gt;wengangJi&lt;/li&gt;
&lt;li&gt;wenjianzhang&lt;/li&gt;
&lt;li&gt;whfjam&lt;/li&gt;
&lt;li&gt;wind2008hxy&lt;/li&gt;
&lt;li&gt;withlin&lt;/li&gt;
&lt;li&gt;wqr2016&lt;/li&gt;
&lt;li&gt;wu-sheng&lt;/li&gt;
&lt;li&gt;wuguangkuo&lt;/li&gt;
&lt;li&gt;wujun8&lt;/li&gt;
&lt;li&gt;wuxingye&lt;/li&gt;
&lt;li&gt;x22x22&lt;/li&gt;
&lt;li&gt;xbkaishui&lt;/li&gt;
&lt;li&gt;xcaspar&lt;/li&gt;
&lt;li&gt;xiaoxiangmoe&lt;/li&gt;
&lt;li&gt;xiaoy00&lt;/li&gt;
&lt;li&gt;xinfeingxia85&lt;/li&gt;
&lt;li&gt;xinzhuxiansheng&lt;/li&gt;
&lt;li&gt;xudianyang&lt;/li&gt;
&lt;li&gt;yanbw&lt;/li&gt;
&lt;li&gt;yanfch&lt;/li&gt;
&lt;li&gt;yang-xiaodong&lt;/li&gt;
&lt;li&gt;yangxb2010000&lt;/li&gt;
&lt;li&gt;yanickxia&lt;/li&gt;
&lt;li&gt;yanmaipian&lt;/li&gt;
&lt;li&gt;yanmingbi&lt;/li&gt;
&lt;li&gt;yantaowu&lt;/li&gt;
&lt;li&gt;yaowenqiang&lt;/li&gt;
&lt;li&gt;yazong&lt;/li&gt;
&lt;li&gt;ychandu&lt;/li&gt;
&lt;li&gt;ycoe&lt;/li&gt;
&lt;li&gt;yimeng&lt;/li&gt;
&lt;li&gt;yu199195&lt;/li&gt;
&lt;li&gt;yuqichou&lt;/li&gt;
&lt;li&gt;yuyujulin&lt;/li&gt;
&lt;li&gt;yymoth&lt;/li&gt;
&lt;li&gt;zaunist&lt;/li&gt;
&lt;li&gt;zaygrzx&lt;/li&gt;
&lt;li&gt;zcai2&lt;/li&gt;
&lt;li&gt;zeaposs&lt;/li&gt;
&lt;li&gt;zhang98722&lt;/li&gt;
&lt;li&gt;zhanghao001&lt;/li&gt;
&lt;li&gt;zhangjianweibj&lt;/li&gt;
&lt;li&gt;zhangkewei&lt;/li&gt;
&lt;li&gt;zhangsean&lt;/li&gt;
&lt;li&gt;zhaoyuguang&lt;/li&gt;
&lt;li&gt;zhentaoJin&lt;/li&gt;
&lt;li&gt;zhousiliang163&lt;/li&gt;
&lt;li&gt;zhuCheer&lt;/li&gt;
&lt;li&gt;zifeihan&lt;/li&gt;
&lt;li&gt;zkscpqm&lt;/li&gt;
&lt;li&gt;zoidbergwill&lt;/li&gt;
&lt;li&gt;zoumingzm&lt;/li&gt;
&lt;li&gt;zouyx&lt;/li&gt;
&lt;li&gt;zshit&lt;/li&gt;
&lt;li&gt;zxbu&lt;/li&gt;
&lt;li&gt;zygfengyuwuzu&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: [Video] Another backend storage solution for the APM system</title>
      <link>/blog/2020-11-21-apachecon-obs-shardingsphere/</link>
      <pubDate>Sat, 21 Nov 2020 00:00:00 +0000</pubDate>
      <guid>/blog/2020-11-21-apachecon-obs-shardingsphere/</guid>
      <description>
        
        
        &lt;p&gt;The APM system provides the tracing or metrics for distributed systems or microservice architectures. Back to APM themselves, they always need backend storage to store the necessary massive data. What are the features required for backend storage? Simple, fewer dependencies, widely used query language, and the efficiency could be into your consideration. Based on that, traditional SQL databases (like MySQL) or NoSQL databases would be better choices. However, this topic will present another backend storage solution for the APM system viewing from NewSQL. Taking Apache Skywalking for instance, this talking will share how to make use of Apache ShardingSphere, a distributed database middleware ecosystem to extend the APM system&amp;rsquo;s storage capability.&lt;/p&gt;
&lt;p&gt;As a senior DBA worked at JD.com, the responsibility is to develop the distributed database and middleware, and the automated management platform for database clusters. As a PMC of Apache ShardingSphere, I am willing to contribute to the OS community and explore the area of distributed databases and NewSQL.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/OazS_3r3NM4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Blog: [Video] Improve Apache APISIX observability with Apache SkyWalking</title>
      <link>/blog/2020-11-21-apachecon-obs-apisix/</link>
      <pubDate>Sat, 21 Nov 2020 00:00:00 +0000</pubDate>
      <guid>/blog/2020-11-21-apachecon-obs-apisix/</guid>
      <description>
        
        
        &lt;p&gt;Apache APISIX is a cloud-native microservices API gateway, delivering the ultimate performance, security, open-source and scalable platform for all your APIs and microservices. Apache SkyWalking: an APM(application performance monitor) system, especially designed for microservices, cloud-native and container-based (Docker, Kubernetes, Mesos) architectures. Through the powerful plug-in mechanism of Apache APISIX, Apache Skywalking is quickly supported, so that we can see the complete life cycle of requests from the edge to the internal service. Monitor and manage each request in a visual way, and improve the observability of the service.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/DleVJwPs4i4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Blog: [Video] SourceMarker - Continuous Feedback for Developers</title>
      <link>/blog/2020-11-21-apachecon-obs-sourcemarker/</link>
      <pubDate>Sat, 21 Nov 2020 00:00:00 +0000</pubDate>
      <guid>/blog/2020-11-21-apachecon-obs-sourcemarker/</guid>
      <description>
        
        
        &lt;p&gt;Today&amp;rsquo;s monitoring solutions are geared towards operational tasks, displaying behavior as time-series graphs inside dashboards and other abstractions. These abstractions are immensely useful but are largely designed for software operators, whose responsibilities require them to think in systems, rather than the underlying source code. This is problematic given that an ongoing trend of software development is the blurring boundaries between building and operating software. This trend makes it increasingly necessary for programming environments to not just support development-centric activities, but operation-centric activities as well. Such is the goal of the feedback-driven development approach. By combining IDE and APM technology, software developers can intuitively explore multiple dimensions of their software simultaneously with continuous feedback about their software from inception to production.&lt;/p&gt;
&lt;p&gt;Brandon Fergerson is an open-source software developer who does not regard himself as a specialist in the field of programming, but rather as someone who is a devoted admirer. He discovered the beauty of programming at a young age and views programming as an art and those who do it well to be artists. He has an affinity towards getting meta and combining that with admiration of programming, has found source code analysis to be exceptionally interesting. Lately, his primary focus involves researching and building AI-based pair programming technology.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/IWounkxhfi0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Blog: [Video] The history of distributed tracing storage</title>
      <link>/blog/2020-11-21-apachecon-obs-storage/</link>
      <pubDate>Sat, 21 Nov 2020 00:00:00 +0000</pubDate>
      <guid>/blog/2020-11-21-apachecon-obs-storage/</guid>
      <description>
        
        
        &lt;p&gt;Over the past few years, and coupled with the growing adoption of microservices, distributed tracing has emerged as one of the most commonly used monitoring and troubleshooting methodologies. New tracing tools are increasingly being introduced, driving adoption even further. One of these tools is Apache SkyWalking, a popular open-source tracing, and APM platform. This talk explores the history of the SkyWalking storage module, shows the evolution of distributed tracing storage layers, from the traditional relational database to document-based search engine. I hope that this talk contributes to the understanding of history and also that it helps to clarify the different types of storage that are available to organizations today.&lt;/p&gt;
&lt;p&gt;Hongtao Gao is the engineer of tetrate.io and the former Huawei Cloud expert. One of PMC members of Apache SkyWalking and participates in some popular open-source projects such as Apache ShardingSphere and Elastic-Job. He has an in-depth understanding of distributed databases, container scheduling, microservices, ServicMesh, and other technologies.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/iQ0tODBoh1k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Blog: [Video] Apache grows in China</title>
      <link>/blog/2020-11-21-apachecon-keynote/</link>
      <pubDate>Fri, 20 Nov 2020 00:00:00 +0000</pubDate>
      <guid>/blog/2020-11-21-apachecon-keynote/</guid>
      <description>
        
        
        &lt;p&gt;Sheng Wu is a founding engineer at tetrate.io, leads the observability for service mesh and hybrid cloud. A searcher, evangelist, and developer in the observability, distributed tracing, and APM. He is a member of the Apache Software Foundation. Love open source software and culture. Created the Apache SkyWalking project and being its VP and PMC member. Co-founder and PMC member of Apache ShardingSphere. Also as a PMC member of Apache Incubator and APISIX. He is awarded as Microsoft MVP, Alibaba Cloud MVP, Tencent Cloud TVP.&lt;/p&gt;
&lt;p&gt;In the Apache FY2020 report, China is on the top of the download statistics. More China initiated projects joined the incubator, and some of them graduated as the Apache TLP. Sheng joined the Apache community since 2017, in the past 3 years, he witnessed the growth of the open-source culture and Apache way in China.
Many developers have joined the ASF as new contributors, committers, foundation members. Chinese enterprises and companies paid more attention to open source contributions, rather than simply using the project like before. In the keynote, he would share the progress about China embracing the Apache culture, and willing of enhancing the whole Apache community.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/26aFGdbZvac?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Blog: Observability at Scale: SkyWalking it is</title>
      <link>/blog/2020-08-11-observability-at-scale/</link>
      <pubDate>Tue, 11 Aug 2020 00:00:00 +0000</pubDate>
      <guid>/blog/2020-08-11-observability-at-scale/</guid>
      <description>
        
        
        &lt;ul&gt;
&lt;li&gt;Author: Sheng Wu&lt;/li&gt;
&lt;li&gt;Original link, &lt;a href=&#34;https://www.tetrate.io/blog/observability-at-scale-skywalking-it-is/&#34;&gt;Tetrate.io blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SkyWalking, a top-level Apache project, is the open source APM and observability analysis platform that is solving the problems of 21st-century systems that are increasingly large, distributed, and heterogenous. It&amp;rsquo;s built for the struggles system admins face today: To identify and locate needles in a haystack of interdependent services, to get apples-to-apples metrics across polyglot apps, and to get a complete and meaningful view of performance.&lt;/p&gt;
&lt;p&gt;SkyWalking is a holistic platform that can observe microservices on or off a mesh, and can provide consistent monitoring with a lightweight payload.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at how SkyWalking evolved to address the problem of observability at scale, and grew from a pure tracing system to a feature-rich observability platform that is now used to analyze deployments that collect tens of billions of traces per day.&lt;/p&gt;
&lt;h3 id=&#34;designing-for-scale&#34;&gt;Designing for scale&lt;/h3&gt;
&lt;p&gt;When SkyWalking was first initialized back in 2015, its primary use case was monitoring the first-generation distributed core system of China Top Telecom companies, China Unicom and China Mobile. In 2013-2014, the telecom companies planned to replace their old traditional monolithic applications with a distributed system. Supporting a super-large distributed system and scaleablity were the high-priority design goals from Day one. So, what matters at scale?&lt;/p&gt;
&lt;h3 id=&#34;pull-vs-push&#34;&gt;Pull vs. push&lt;/h3&gt;
&lt;p&gt;Pull and push modes relate to the direction of data flow. If the agent collects data and pushes them to the backend for further analysis, we call it &amp;ldquo;push&amp;rdquo; mode. Debate over pull vs. push has gone on for a long time. The key for an observability system is to minimize the cost of the agent, and to be generally suitable for different kinds of observability data.&lt;/p&gt;
&lt;p&gt;The agent would send the data out a short period after it is collected. Then, we would have less concern about overloading the local cache. One typical case would be endpoint (URI of HTTP, service of gRPC) metrics. Any service could easily have hundreds, even thousands of endpoints. An APM system must have these metrics analysis capabilities.&lt;/p&gt;
&lt;p&gt;Furthermore, metrics aren&amp;rsquo;t the only thing in the observability landscape; traces and logs are important too. SkyWalking is designed to provide a 100% sampling rate tracing capability in the production environment. Clearly, push mode is the only solution.&lt;/p&gt;
&lt;p&gt;At the same time, using push mode natively doesn&amp;rsquo;t mean SkyWalking can&amp;rsquo;t do data pulling. In recent 8.x releases, SkyWalking supports fetching data from Prometheus-instrumented services for reducing the Non-Recurring Engineering of the end users. Also, pull mode is popular in the MQ based transport, typically as a Kafka consumer. The SkyWalking agent side uses the push mode, and the OAP server uses the pull mode.&lt;/p&gt;
&lt;p&gt;The conclusion: push mode is the native way, but pull mode works in some special cases too.&lt;/p&gt;
&lt;h3 id=&#34;metrics-analysis-isnt-just-mathematical-calculation&#34;&gt;Metrics analysis isn&amp;rsquo;t just mathematical calculation&lt;/h3&gt;
&lt;p&gt;Metrics rely on mathematical theories and calculations. Percentile is a good measure for identifying the long tail issue, and reasonable average response time and successful rate are good SLO(s). But those are not all. Distributed tracing provides not just traces with detailed information, but high values metrics that can be analyzed.&lt;/p&gt;
&lt;p&gt;The service topology map is required from Ops and SRE teams for the NOC dashboard and confirmation of system data flow. SkyWalking uses the &lt;a href=&#34;https://wu-sheng.github.io/STAM/&#34;&gt;STAM (Streaming Topology Analysis Method)&lt;/a&gt; to analyze topology from the traces, or based on ALS (Envoy Access Log Service) in the service mesh environment. This topology and metrics of nodes (services) and lines (service relationships) can&amp;rsquo;t be pulled from simple metrics SDKs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;topology-v8.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;As with fixing the limitation of endpoint metrics collection, SkyWalking needs to do endpoint dependency analysis from trace data too. Endpoint dependency analysis provides more important and specific information, including upstream and downstream. Those dependency relationships and metrics help the developer team to locate the boundaries of a performance issue, to specific code blocks.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;endpoint-dependency-v8.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;pre-calculation-vs-query-stage-calculation&#34;&gt;Pre-calculation vs. query stage calculation?&lt;/h3&gt;
&lt;p&gt;Query stage calculation provides flexibility. Pre-calculation, in the analysis stage, provides better and much more stable performance. Recall our design principle: SkyWalking targets a large-scale distributed system. Query stage calculation was very limited in scope, and most metrics calculations need to be pre-defined and pre-calculated. The key of supporting large datasets is reducing the size of datasets in the design level. Pre-calculation allows the original data to be merged into aggregated results downstream, to be used in a query or even for an alert check.&lt;/p&gt;
&lt;p&gt;TTL of metrics is another important business enabler. With the near linear performance offered by queries because of pre-calculation, with a similar query infrastructure, organizations can offer higher TTL, thereby providing extended visibility of performance.&lt;/p&gt;
&lt;p&gt;Speaking of alerts, query-stage calculation also means the alerting query is required to be based on the query engine. But in this case, when the dataset increasing, the query performance could be inconsistent. The same thing happens in a different metrics query.&lt;/p&gt;
&lt;h3 id=&#34;cases-today&#34;&gt;Cases today&lt;/h3&gt;
&lt;p&gt;Today, SkyWalking is monitoring super large-scale distributed systems in many large enterprises, including Alibaba, Huawei, Tencent, Baidu, China Telecom, and various banks and insurance companies. The online service companies have more traffic than the traditional companies, like banks and telecom suppliers.&lt;/p&gt;
&lt;p&gt;SkyWalking is the observability platform used for a variety of use cases for distributed systems that are super-large by many measures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lagou.com, an online job recruitment platform
&lt;ul&gt;
&lt;li&gt;SkyWalking is observing &amp;gt;100 services, 500+ JVM instances&lt;/li&gt;
&lt;li&gt;SkyWalking collects and analyzes 4+ billion traces per day to analyze performance data, including metrics of 300k+ endpoints and dependencies&lt;/li&gt;
&lt;li&gt;Monitoring &amp;gt;50k traffic per second in the whole cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Yonghui SuperMarket, online service
&lt;ul&gt;
&lt;li&gt;SkyWalking analyzes at least 10+ billion (3B) traces with metrics per day&lt;/li&gt;
&lt;li&gt;SkyWalking&amp;rsquo;s second, smaller deployment, analyzes 200+ million traces per day&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Baidu, internet and AI company, Kubernetes deployment
&lt;ul&gt;
&lt;li&gt;SkyWalking collects 1T+ traces a day from 1,400+ pods of 120+ services&lt;/li&gt;
&lt;li&gt;Continues to scale out as more services are added&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Beike Zhaofang(ke.com), a Chinese online property brokerage backed by Tencent Holdings and SoftBank Group
&lt;ul&gt;
&lt;li&gt;Has used SkyWalking from its very beginning, and has two members in the PMC team.&lt;/li&gt;
&lt;li&gt;Deployments collect 16+ billion traces per day&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ali Yunxiao, DevOps service on the Alibaba Cloud,
&lt;ul&gt;
&lt;li&gt;SkyWalking collects and analyzes billions of spans per day&lt;/li&gt;
&lt;li&gt;SkyWalking keeps AliCloud&amp;rsquo;s 45 services and ~300 instances stable&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;A department of Alibaba TMall, one of the largest business-to-consumer online retailers, spun off from Taobao
&lt;ul&gt;
&lt;li&gt;A customized version of SkyWalking monitors billions of traces per day&lt;/li&gt;
&lt;li&gt;At the same time, they are building a load testing platform based on SkyWalking&amp;rsquo;s agent tech stack, leveraging its tracing and context propagation cabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;SkyWalking&amp;rsquo;s approach to observability follows these principles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Understand the logic model: don&amp;rsquo;t treat observability as a mathematical tool.&lt;/li&gt;
&lt;li&gt;Identify dependencies first, then their metrics.&lt;/li&gt;
&lt;li&gt;Scaling should be accomplished easily and natively.&lt;/li&gt;
&lt;li&gt;Maintain consistency across different architectures, and in the performance of APM itself.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;resources&#34;&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Read about the &lt;a href=&#34;https://github.com/apache/skywalking/blob/master/CHANGES.md&#34;&gt;SkyWalking 8.1 release highlights&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Get more SkyWalking updates on &lt;a href=&#34;https://twitter.com/asfskywalking?lang=en&#34;&gt;Twitter&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Sign up to hear more about SkyWalking and observability from &lt;a href=&#34;https://www.tetrate.io/contact-us/&#34;&gt;Tetrate&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: SkyWalking hits 200 contributors mark</title>
      <link>/blog/2020-01-20-celebrate-200th-contributor/</link>
      <pubDate>Mon, 20 Jan 2020 00:00:00 +0000</pubDate>
      <guid>/blog/2020-01-20-celebrate-200th-contributor/</guid>
      <description>
        
        
        &lt;ul&gt;
&lt;li&gt;Author: Wu Sheng, tetrate.io, SkyWalking original creator, SkyWalking V.P.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/wu-sheng&#34;&gt;GitHub&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/wusheng1108&#34;&gt;Twitter&lt;/a&gt;, &lt;a href=&#34;https://www.linkedin.com/in/wusheng1108&#34;&gt;Linkedin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;200th-celebration.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;The SkyWalking project provides distributed tracing, topology map analysis, service mesh telemetry analysis, metrics analysis and a super cool visualization
targeting distributed systems in k8s or traditional VM deployments.&lt;/p&gt;
&lt;p&gt;The project is widely used in Alibaba, Huawei, Tencent, DiDi, xiaomi, Pingan, China’s top 3 telecom companies (China Mobile, China telecom, China Unicom), airlines, banks and more. It has over 140 company users listed on our &lt;a href=&#34;https://github.com/apache/skywalking/blob/master/docs/powered-by.md&#34;&gt;powered by&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;Today, we welcome and celebrate reaching 200 code contributors on our main repo. We hereby mark this milestone as official today, : &lt;strong&gt;Jan. 20th 2020&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;At this great moment, I would like to share SkyWalking’s 4-year open source journey.&lt;/p&gt;
&lt;p&gt;I wrote the first line on Nov. 1st, 2015, guiding people to understand a distributed system just as  micro-services and distributed architecture were becoming popular.
In the first 2 years, I never thought it would become such a big and active community. I didn’t even expect it would be an open source project.
Initially, the goal was primarily to teach others about distributed tracing and analysis.&lt;/p&gt;
&lt;p&gt;It was a typical open source project in obscurity in its first two years. But
people still showed up, asked questions, and tried to improve the project. I got several invitations to share the project at local meetups.All these made me realize people really needed a good open source APM project.&lt;/p&gt;
&lt;p&gt;In 2017, I decided to dedicate myself as much as possible to make the project successful, and it became my day job. To be honest, I had no clue about how to do that; at that time in China, it was rare to have this kind of job.
So, I began to ask friends around me, “Do you want to collaborate on the open source APM with me?” Most people were busy and gave a clear &lt;strong&gt;NO&lt;/strong&gt;, but two of them agreed to help: Xin Zhang and Yongsheng Peng. We built SkyWalking 3.x and shared the 3.2 release at GOPS Shanghai, China.&lt;/p&gt;
&lt;p&gt;It became the first adoption version used in production&lt;/p&gt;
&lt;p&gt;Compared to today&amp;rsquo;s SkyWalking, it was a toy prototype, but it had the same tracing design, protocol and analysis method.&lt;/p&gt;
&lt;p&gt;That year the contributor team was 15-20, and the project had obvious potential to expand. I began to consider bringing the project into a worldwide, top-level open source foundation. Thanks to our initial incubator mentors, Michael Semb Wever, William Jiang, and Luke Han, this really worked.
At the end of 2017, SkyWalking joined the Apache Incubator, and kept following the Apache Way to build community. More contributors joined the community.&lt;/p&gt;
&lt;p&gt;With more people spending time on the project collaborations, including codes, tests, blogs, conference talks, books and uses of the project, a chemical reaction happens. New developers begin to provide bug fixes, new feature requirements and new proposals.
At the moment of graduation in spring 2019, the project had 100 contributors. Now, only 9 months later, it’s surged to 200 super quickly. They enhance the project and extend it to frontiers we never imaged: 5 popular language agents, service mesh adoption, CLI tool, super cool visualization. We are even moving on thread profiling, browser performance and Nginx tracing NOW.&lt;/p&gt;
&lt;p&gt;Over the whole 4+ years open source journey, we have had supports from leaders in the tracing open source community around the world, including Adrian Cole, William Jiang, Luke Han, Michael Semb Wever, Ben Sigelman, and Jonah Kowall. And we’ve had critical  foundations&amp;rsquo; help, especially Apache Software Foundation and the Cloud Native Computing Foundation.&lt;/p&gt;
&lt;p&gt;Our contributors also have their support from their employers, including, to the best of my knowledge, Alibaba, Huawei, China Mobile, ke.com, DaoCloud, Lizhi.fm, Yonghui Supermarket, and dangdang.com. I also have support from my employers, &lt;a href=&#34;https://www.tetrate.io/&#34;&gt;tetrate.io&lt;/a&gt;, Huawei, and OneAPM.&lt;/p&gt;
&lt;p&gt;Thanks to our 200+ contributors and the companies behind them. You make this magic happen.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
