<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>xiayuanyin (X)</title>
    <link>https://ruby-china.org/xiayuanyin</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>请教，在 Linux 主机下如何知道通过网线直连的设备的 IP 地址？</title>
      <description>&lt;p&gt;场景如下：&lt;/p&gt;

&lt;p&gt;我手上有个 Linux 主机 (Ubuntu)，用网线直连了一个树莓派，树莓派的 IP/网段未知，可能是静态 IP 也有可能是 DHCP 自动生成地址&lt;/p&gt;

&lt;p&gt;现在我该如何在 ubuntu 上获取这台树莓派的 IP？(arp -a 好像只能获取到有通讯的设备)&lt;/p&gt;</description>
      <author>xiayuanyin</author>
      <pubDate>Wed, 23 Sep 2020 12:27:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/40429</link>
      <guid>https://ruby-china.org/topics/40429</guid>
    </item>
    <item>
      <title>SimpleAPM - Rails 慢事务追踪</title>
      <description>&lt;p&gt;分享自己做的一个 Rails 项目的监控 GEM(SimpleApm)&lt;/p&gt;

&lt;p&gt;目前在公司生产服务器上运行状态良好……&lt;/p&gt;

&lt;p&gt;第一次发东西，欢迎大家的批评和意见&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/xiayuanyin/simple_apm" rel="nofollow" target="_blank"&gt;https://github.com/xiayuanyin/simple_apm&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="功能"&gt;功能&lt;/h2&gt;
&lt;p&gt;基于 Redis 的简单的 Web 请求性能监控/慢事务追踪工具，支持集群服务&lt;/p&gt;

&lt;p&gt;以天为维度记录：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;耗时最长的 N 个请求&lt;/li&gt;
&lt;li&gt;记录每个 action 最慢的 20 次请求&lt;/li&gt;
&lt;li&gt;记录每个 action 的平均访问时间&lt;/li&gt;
&lt;li&gt;记录慢请求的详情和对应 SQL 详情（多余的会删掉）&lt;/li&gt;
&lt;li&gt;以 10 分钟为刻度记录平均/最慢访问时间、次数等性能指标，并生成图表&lt;/li&gt;
&lt;li&gt;记录请求中外部 http 访问时间&lt;/li&gt;
&lt;li&gt;记录请求前后的内存变动 (用 Unicorn 的时候比较有用)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="原理"&gt;原理&lt;/h2&gt;
&lt;p&gt;围绕 Rack 记录请求级别的相关信息，使用 redis 作为数据存储/计算工具来记录慢事务&lt;/p&gt;

&lt;p&gt;数据传递核心为：Active Support Instrumentation&lt;/p&gt;

&lt;p&gt;处理 Instrument 方式为：开启一个不影响主线程的常驻线程，循环计算处理数据&lt;/p&gt;

&lt;p&gt;获取内存信息用到了 gem: get_process_mem&lt;/p&gt;

&lt;p&gt;配置文件说明：&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# config/simple_apm.yml&lt;/span&gt;
&lt;span class="c1"&gt;# 默认为 redis://localhost:6379/0&lt;/span&gt;
&lt;span class="c1"&gt;# 确保是完整的redis地址，可以设置远程地址&lt;/span&gt;
&lt;span class="na"&gt;redis_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
&lt;span class="c1"&gt;# 默认为空, 建议使用hiredis(并确保有这个gem)&lt;/span&gt;
&lt;span class="na"&gt;redis_driver&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hiredis&lt;/span&gt;
&lt;span class="c1"&gt;# 记录每天的最慢的请求数存储量，默认200&lt;/span&gt;
&lt;span class="na"&gt;slow_actions_limit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="c1"&gt;# 记录每天的每个Action最慢的N个请求，默认20&lt;/span&gt;
&lt;span class="na"&gt;action_slow_request_limit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="c1"&gt;# 项目名，默认为 'app'，区分项目名可以多个项目数据存于一台redis server上&lt;/span&gt;
&lt;span class="na"&gt;app_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="c1"&gt;# SQL记录临界值，超过的才记录(秒)&lt;/span&gt;
&lt;span class="na"&gt;sql_critical_time&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.1&lt;/span&gt;
&lt;span class="c1"&gt;# 不统计的请求(值为：xxxController#Action)（数组）&lt;/span&gt;
&lt;span class="c1"&gt;#  - Devise::SessionsController#create&lt;/span&gt;
&lt;span class="na"&gt;exclude_actions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="功能截图"&gt;功能截图&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;请求量，响应时间概况&lt;/strong&gt;
&lt;img src="https://l.ruby-china.com/photo/2019/e2f82c15-86e0-45d5-84de-e8e723861fe2.jpg!large" title="" alt="Dashboard"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;慢请求详情&lt;/strong&gt;
&lt;img src="https://l.ruby-china.com/photo/2019/7ee732ce-17b6-429d-a657-ee5a1ff2e829.png!large" title="" alt="RequestInfo"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action 的概况&lt;/strong&gt;
&lt;img src="https://l.ruby-china.com/photo/2019/710e0ac5-d9e1-4e5c-98d5-4db823358ef2.png!large" title="" alt="ActionInfo"&gt;&lt;/p&gt;</description>
      <author>xiayuanyin</author>
      <pubDate>Mon, 25 Feb 2019 12:03:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/38145</link>
      <guid>https://ruby-china.org/topics/38145</guid>
    </item>
  </channel>
</rss>
