<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Instrumenting Ruby code > 原文:[https://docs.gitlab.com/ee/development/instrumentation.html](https://docs.gitlab.com/ee/development/instrumentation.html) * [Instrumenting Methods](#instrumenting-methods) * [Examples](#examples) * [Checking Instrumented Methods](#checking-instrumented-methods) * [Instrumenting Ruby Blocks](#instrumenting-ruby-blocks) * [Tracking Custom Events](#tracking-custom-events) # Instrumenting Ruby code[](#instrumenting-ruby-code "Permalink") [GitLab Performance Monitoring](../administration/monitoring/performance/index.html)可以檢測 Ruby 代碼的方法和自定義塊. 方法檢測是基于塊的檢測的主要檢測形式,僅當我們想深入到方法中特定代碼區域時才使用. 如果要跟蹤產品使用模式,請參考[遙測](telemetry/index.html) . ## Instrumenting Methods[](#instrumenting-methods "Permalink") 使用`Gitlab::Metrics::Instrumentation`模塊可以完成檢測方法. 該模塊提供了幾種可用于檢測代碼的方法: * `instrument_method` :檢測單個類方法. * `instrument_instance_method` :檢測單個實例方法. * `instrument_class_hierarchy` :給定一個 Class,此方法將遞歸地檢測所有子類(類方法和實例方法). * `instrument_methods` :檢測模塊的所有公共和私有類方法. * `instrument_instance_methods` :檢測模塊的所有公共和私有實例方法. 為了消除鍵入完整的`Gitlab::Metrics::Instrumentation`命名空間的需要,您可以使用`configure`類方法. 通過傳遞`Gitlab::Metrics::Instrumentation`作為其參數時,此方法僅產生提供的塊. 一個例子: ``` Gitlab::Metrics::Instrumentation.configure do |conf| conf.instrument_method(Foo, :bar) conf.instrument_method(Foo, :baz) end ``` 通常,使用此方法優于直接調用各種檢測方法. 方法檢測應添加到初始化程序`config/initializers/zz_metrics.rb` . ### Examples[](#examples "Permalink") 檢測單個方法: ``` Gitlab::Metrics::Instrumentation.configure do |conf| conf.instrument_method(User, :find_by) end ``` 檢測整個類的層次結構: ``` Gitlab::Metrics::Instrumentation.configure do |conf| conf.instrument_class_hierarchy(ActiveRecord::Base) end ``` 檢測所有公共類方法: ``` Gitlab::Metrics::Instrumentation.configure do |conf| conf.instrument_methods(User) end ``` ### Checking Instrumented Methods[](#checking-instrumented-methods "Permalink") 檢查一種方法是否已被檢測的最簡單方法是檢查其源位置. 例如: ``` method = Banzai::Renderer.method(:render) method.source_location ``` 如果源位置指向`lib/gitlab/metrics/instrumentation.rb` ,則說明該方法已經過檢測. 如果使用的是 Pry,則可以使用`$`命令顯示方法的源代碼(及其源位置),這比運行上面的 Ruby 代碼容易. 如果是上述片段,請運行以下代碼: * `$ Banzai::Renderer.render` 這將打印出以下內容: ``` From: /path/to/your/gitlab/lib/gitlab/metrics/instrumentation.rb @ line 148: Owner: #<Module:0x0055f0865c6d50> Visibility: public Number of lines: 21 def #{name}(#{args_signature}) if trans = Gitlab::Metrics::Instrumentation.transaction trans.measure_method(#{label.inspect}) { super } else super end end ``` ## Instrumenting Ruby Blocks[](#instrumenting-ruby-blocks "Permalink") 通過調用`Gitlab::Metrics.measure`并將其傳遞給塊來完成對 Ruby 代碼塊的測量. 例如: ``` Gitlab::Metrics.measure(:foo) do ... end ``` 執行該塊并將執行時間存儲為當前運行的事務中的一組字段. 如果不存在事務,則不進行任何測量就產生該塊. 測量一個塊的三個值: * 經過的實時時間,存儲在`NAME_real_time` . * The CPU time elapsed, stored in `NAME_cpu_time`. * 通話次數,存儲在`NAME_call_count` . 實時和 CPU 計時均以毫秒為單位. 多次調用同一塊將導致最終值是所有單個值的總和. 以下面的代碼為例: ``` 3.times do Gitlab::Metrics.measure(:sleep) do sleep 1 end end ``` 在這里, `sleep_real_time`的最終值為`3` , *而不是* `1` . ## Tracking Custom Events[](#tracking-custom-events "Permalink") 除了檢測代碼,GitLab Performance Monitoring 還支持跟蹤自定義事件. 這主要用于跟蹤業務指標,例如 Git 推送數,存儲庫導入等. 要跟蹤自定義事件,只需調用`Gitlab::Metrics.add_event`傳遞事件名稱和一組自定義(可選)標簽. 例如: ``` Gitlab::Metrics.add_event(:user_login, email: current_user.email) ``` 事件名稱應為動詞,例如`push_repository`和`remove_branch` .
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看