|
1414 | 1414 | <span class=linenos data-linenos="1487 "></span> <span class=kn>import</span><span class=w> </span><span class=nn>subprocess</span> |
1415 | 1415 | <span class=linenos data-linenos="1488 "></span> <span class=kn>import</span><span class=w> </span><span class=nn>sys</span> |
1416 | 1416 | <span class=linenos data-linenos="1489 "></span> |
1417 | | -<span class=linenos data-linenos="1490 "></span> <span class=n>process</span> <span class=o>=</span> <span class=n>subprocess</span><span class=o>.</span><span class=n>Popen</span><span class=p>(</span> |
1418 | | -<span class=linenos data-linenos="1491 "></span> <span class=p>[</span><span class=n>sys</span><span class=o>.</span><span class=n>executable</span><span class=p>,</span> <span class=s1>'-c'</span><span class=p>,</span> <span class=s1>'import sys, yaml; print(yaml.safe_load(sys.stdin.read()))'</span><span class=p>],</span> |
1419 | | -<span class=linenos data-linenos="1492 "></span> <span class=n>stdin</span><span class=o>=</span><span class=n>subprocess</span><span class=o>.</span><span class=n>PIPE</span><span class=p>,</span> |
1420 | | -<span class=linenos data-linenos="1493 "></span> <span class=n>stdout</span><span class=o>=</span><span class=n>subprocess</span><span class=o>.</span><span class=n>PIPE</span><span class=p>,</span> |
1421 | | -<span class=linenos data-linenos="1494 "></span> <span class=n>stderr</span><span class=o>=</span><span class=n>subprocess</span><span class=o>.</span><span class=n>PIPE</span><span class=p>,</span> |
1422 | | -<span class=linenos data-linenos="1495 "></span> <span class=p>)</span> |
1423 | | -<span class=linenos data-linenos="1496 "></span> <span class=n>stdout</span><span class=p>,</span> <span class=n>stderr</span> <span class=o>=</span> <span class=n>process</span><span class=o>.</span><span class=n>communicate</span><span class=p>(</span><span class=n>yaml_str</span><span class=o>.</span><span class=n>encode</span><span class=p>())</span> |
1424 | | -<span class=linenos data-linenos="1497 "></span> <span class=k>if</span> <span class=n>process</span><span class=o>.</span><span class=n>returncode</span> <span class=o>!=</span> <span class=mi>0</span><span class=p>:</span> |
1425 | | -<span class=linenos data-linenos="1498 "></span> <span class=k>raise</span> <span class=ne>ValueError</span><span class=p>(</span><span class=sa>f</span><span class=s1>'Failed to load config: </span><span class=si>{</span><span class=n>stderr</span><span class=o>.</span><span class=n>decode</span><span class=p>()</span><span class=si>}</span><span class=s1>'</span><span class=p>)</span> |
1426 | | -<span class=linenos data-linenos="1499 "></span> |
1427 | | -<span class=linenos data-linenos="1500 "></span> <span class=k>return</span> <span class=n>_parse_ast_config</span><span class=p>(</span><span class=n>stdout</span><span class=o>.</span><span class=n>strip</span><span class=p>()</span><span class=o>.</span><span class=n>decode</span><span class=p>())</span> |
| 1417 | +<span class=linenos data-linenos="1490 "></span> <span class=c1># Force UTF-8 encoding for subprocess</span> |
| 1418 | +<span class=linenos data-linenos="1491 "></span> <span class=n>env</span> <span class=o>=</span> <span class=n>os</span><span class=o>.</span><span class=n>environ</span><span class=o>.</span><span class=n>copy</span><span class=p>()</span> |
| 1419 | +<span class=linenos data-linenos="1492 "></span> <span class=n>env</span><span class=p>[</span><span class=s1>'PYTHONIOENCODING'</span><span class=p>]</span> <span class=o>=</span> <span class=s1>'utf-8'</span> |
| 1420 | +<span class=linenos data-linenos="1493 "></span> |
| 1421 | +<span class=linenos data-linenos="1494 "></span> <span class=n>process</span> <span class=o>=</span> <span class=n>subprocess</span><span class=o>.</span><span class=n>Popen</span><span class=p>(</span> |
| 1422 | +<span class=linenos data-linenos="1495 "></span> <span class=p>[</span><span class=n>sys</span><span class=o>.</span><span class=n>executable</span><span class=p>,</span> <span class=s1>'-c'</span><span class=p>,</span> <span class=s1>'import sys, yaml; print(yaml.safe_load(sys.stdin.read()))'</span><span class=p>],</span> |
| 1423 | +<span class=linenos data-linenos="1496 "></span> <span class=n>stdin</span><span class=o>=</span><span class=n>subprocess</span><span class=o>.</span><span class=n>PIPE</span><span class=p>,</span> |
| 1424 | +<span class=linenos data-linenos="1497 "></span> <span class=n>stdout</span><span class=o>=</span><span class=n>subprocess</span><span class=o>.</span><span class=n>PIPE</span><span class=p>,</span> |
| 1425 | +<span class=linenos data-linenos="1498 "></span> <span class=n>stderr</span><span class=o>=</span><span class=n>subprocess</span><span class=o>.</span><span class=n>PIPE</span><span class=p>,</span> |
| 1426 | +<span class=linenos data-linenos="1499 "></span> <span class=n>env</span><span class=o>=</span><span class=n>env</span><span class=p>,</span> |
| 1427 | +<span class=linenos data-linenos="1500 "></span> <span class=p>)</span> |
| 1428 | +<span class=linenos data-linenos="1501 "></span> <span class=c1># Explicitly encode as UTF-8 to match PYTHONIOENCODING</span> |
| 1429 | +<span class=linenos data-linenos="1502 "></span> <span class=n>stdout</span><span class=p>,</span> <span class=n>stderr</span> <span class=o>=</span> <span class=n>process</span><span class=o>.</span><span class=n>communicate</span><span class=p>(</span><span class=n>yaml_str</span><span class=o>.</span><span class=n>encode</span><span class=p>(</span><span class=s1>'utf-8'</span><span class=p>))</span> |
| 1430 | +<span class=linenos data-linenos="1503 "></span> <span class=k>if</span> <span class=n>process</span><span class=o>.</span><span class=n>returncode</span> <span class=o>!=</span> <span class=mi>0</span><span class=p>:</span> |
| 1431 | +<span class=linenos data-linenos="1504 "></span> <span class=k>raise</span> <span class=ne>ValueError</span><span class=p>(</span><span class=sa>f</span><span class=s1>'Failed to load config: </span><span class=si>{</span><span class=n>stderr</span><span class=o>.</span><span class=n>decode</span><span class=p>(</span><span class=s2>"utf-8"</span><span class=p>,</span><span class=w> </span><span class=n>errors</span><span class=o>=</span><span class=s2>"replace"</span><span class=p>)</span><span class=si>}</span><span class=s1>'</span><span class=p>)</span> |
| 1432 | +<span class=linenos data-linenos="1505 "></span> |
| 1433 | +<span class=linenos data-linenos="1506 "></span> <span class=k>return</span> <span class=n>_parse_ast_config</span><span class=p>(</span><span class=n>stdout</span><span class=o>.</span><span class=n>strip</span><span class=p>()</span><span class=o>.</span><span class=n>decode</span><span class=p>(</span><span class=s1>'utf-8'</span><span class=p>))</span> |
1428 | 1434 | </code></pre></div> </details> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h4 id=datadog_checks.base.checks.base.AgentCheck.http class="doc doc-heading"> <code class="highlight language-python"><span class=n>http</span></code> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#datadog_checks.base.checks.base.AgentCheck.http class=headerlink title="Permanent link">¶</a></h4> <div class="doc doc-contents "> <p>Provides logic to yield consistent network behavior based on user configuration.</p> <p>Only new checks or checks on Agent 6.13+ can and should use this for HTTP requests.</p> </div> </div> <div class="doc doc-object doc-function"> <h4 id=datadog_checks.base.checks.base.AgentCheck.gauge class="doc doc-heading"> <code class="highlight language-python"><span class=n>gauge</span><span class=p>(</span><span class=n>name</span><span class=p>,</span> <span class=n>value</span><span class=p>,</span> <span class=n>tags</span><span class=o>=</span><span class=kc>None</span><span class=p>,</span> <span class=n>hostname</span><span class=o>=</span><span class=kc>None</span><span class=p>,</span> <span class=n>device_name</span><span class=o>=</span><span class=kc>None</span><span class=p>,</span> <span class=n>raw</span><span class=o>=</span><span class=kc>False</span><span class=p>)</span></code> <a href=#datadog_checks.base.checks.base.AgentCheck.gauge class=headerlink title="Permanent link">¶</a></h4> <div class="doc doc-contents "> <p>Sample a gauge metric.</p> <p><span class=doc-section-title>Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class=doc-section-item> <td> <code>name</code> </td> <td> <code><span title=str>str</span></code> </td> <td> <div class=doc-md-description> <p>the name of the metric</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class=doc-section-item> <td> <code>value</code> </td> <td> <code><span title=float>float</span></code> </td> <td> <div class=doc-md-description> <p>the value for the metric</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class=doc-section-item> <td> <code>tags</code> </td> <td> <code><span title=list>list</span>[<span title=str>str</span>]</code> </td> <td> <div class=doc-md-description> <p>a list of tags to associate with this metric</p> </div> </td> <td> <code>None</code> </td> </tr> <tr class=doc-section-item> <td> <code>hostname</code> </td> <td> <code><span title=str>str</span></code> </td> <td> <div class=doc-md-description> <p>a hostname to associate with this metric. Defaults to the current host.</p> </div> </td> <td> <code>None</code> </td> </tr> <tr class=doc-section-item> <td> <code>device_name</code> </td> <td> <code><span title=str>str</span></code> </td> <td> <div class=doc-md-description> <p><strong>deprecated</strong> add a tag in the form <code>device:<device_name></code> to the <code>tags</code> list instead.</p> </div> </td> <td> <code>None</code> </td> </tr> <tr class=doc-section-item> <td> <code>raw</code> </td> <td> <code><span title=bool>bool</span></code> </td> <td> <div class=doc-md-description> <p>whether to ignore any defined namespace prefix</p> </div> </td> <td> <code>False</code> </td> </tr> </tbody> </table> <details class=quote> <summary>Source code in <code>datadog_checks_base/datadog_checks/base/checks/base.py</code></summary> <div class=highlight><pre><span></span><code><span class=linenos data-linenos="771 "></span><span class=k>def</span><span class=w> </span><span class=nf>gauge</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>name</span><span class=p>,</span> <span class=n>value</span><span class=p>,</span> <span class=n>tags</span><span class=o>=</span><span class=kc>None</span><span class=p>,</span> <span class=n>hostname</span><span class=o>=</span><span class=kc>None</span><span class=p>,</span> <span class=n>device_name</span><span class=o>=</span><span class=kc>None</span><span class=p>,</span> <span class=n>raw</span><span class=o>=</span><span class=kc>False</span><span class=p>):</span> |
1429 | 1435 | <span class=linenos data-linenos="772 "></span> <span class=c1># type: (str, float, Sequence[str], str, str, bool) -> None</span> |
1430 | 1436 | <span class=linenos data-linenos="773 "></span><span class=w> </span><span class=sd>"""Sample a gauge metric.</span> |
|
0 commit comments