<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Telegraf on ポンコツ地方エンジニアの技術ブログ</title><link>https://blog.ponkotools.com/tags/telegraf/</link><description>Recent content in Telegraf on ポンコツ地方エンジニアの技術ブログ</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><lastBuildDate>Sat, 27 May 2023 00:00:00 +0900</lastBuildDate><atom:link href="https://blog.ponkotools.com/tags/telegraf/index.xml" rel="self" type="application/rss+xml"/><item><title>Telegraf で Jetson の GPU 情報を取得する</title><link>https://blog.ponkotools.com/posts/2023/05/27/telegraf/</link><pubDate>Sat, 27 May 2023 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2023/05/27/telegraf/</guid><description>&lt;p&gt;Telegraf で GPU 情報を取得しよううとしたのですが、Jetson には &lt;code&gt;nvidia-smi&lt;/code&gt; のコマンドがありません。&lt;/p&gt;
&lt;p&gt;どうしようかなと思っていたら、以下の記事に Jetson で GPU 情報を取得する方法が書いてありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/nvidia-jetson-series-part-1-jetson-stats/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/nvidia-jetson-series-part-1-jetson-stats/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これを参考に、InfluxDB にデータを保存し、Grafana で可視化まで行いました。&lt;br&gt;
尚、TIG Stack (Telegraf, InfluxDB, Grafana) については以下を参考にしてください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2021/12/telegraf-influxdb-garafana.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2021/12/telegraf-influxdb-garafana.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Jetson Xavier NX&lt;/li&gt;
&lt;li&gt;Ubuntu 18.04&lt;/li&gt;
&lt;li&gt;Telegraf 1.23.0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Telegraf, InfluxDB, Grafana は Docker で動作させています。&lt;/p&gt;
&lt;h2 id="jetson-stats-のインストール"&gt;&lt;a href="#jetson-stats-%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab" class="header-anchor"&gt;&lt;/a&gt;Jetson Stats のインストール
&lt;/h2&gt;&lt;p&gt;まずはホストに Jetson Stats をインストールします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get install python3-pip
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo -H python3 -m pip install -U jetson-stats
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;インストール後、一度ログアウト or 再起動します。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;jtop&lt;/code&gt; を実行して動作確認します。&lt;/p&gt;
&lt;h2 id="telegraf-の設定"&gt;&lt;a href="#telegraf-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Telegraf の設定
&lt;/h2&gt;&lt;p&gt;Jetson Stats を使って GPU の情報を取得する python スクリプトを作成し、それを Telegraf から定期的に実行するようにします。&lt;br&gt;
ただし、今回 Telegraf は Docker コンテナで動かしているので、上記の記事そのままでは上手く行きません。&lt;/p&gt;
&lt;h3 id="python-スクリプトの作成"&gt;&lt;a href="#python-%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;Python スクリプトの作成
&lt;/h3&gt;&lt;p&gt;上記の記事にある以下のスクリプトを &lt;code&gt;jetson_stats.py&lt;/code&gt; という名前で保存しました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Import jtop python library. We will use this to access the Jetson_Stats service.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;jtop&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;jtop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;json&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nn"&gt;datetime&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;jtop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;jetson&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# jetson.stats provides our system measurements as type dict.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;jetson&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stats&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# time and uptime are proved as time objects. These needed to be converted before passing as a JSON string,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;%m/&lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="s1"&gt;/%Y&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;uptime&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;uptime&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# We then convert our dict -&amp;amp;gt; Json string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;influx_json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;jetson&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;influx_json&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このスクリプトを Telegraf から定期的に実行することになります。&lt;/p&gt;
&lt;h3 id="dockerfile-の作成"&gt;&lt;a href="#dockerfile-%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;Dockerfile の作成
&lt;/h3&gt;&lt;p&gt;今までは Telegraf の Docker イメージをそのまま使っていましたが、このコンテナには Python の実行環境が入っていないため、上記の Python スクリプトを動かすことができません。&lt;br&gt;
そこで、以下のような Dockerfile を作成しました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;1.23&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ARG&lt;/span&gt; &lt;span class="n"&gt;DEBIAN_FRONTEND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;noninteractive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;COPY&lt;/span&gt; &lt;span class="n"&gt;jetson_stats&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;RUN&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;recommends&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;python3&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;python3&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pip&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;python3&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;setuptools&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;python3&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;wheel&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;autoremove&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;clean&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;rm&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rf&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lists&lt;/span&gt;&lt;span class="o"&gt;/*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;RUN&lt;/span&gt; &lt;span class="n"&gt;pip3&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;jetson&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;stats&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;jetson_stats.py&lt;/code&gt; をイメージ内にコピーし、あとは Python の実行環境と Jetson Stats をインストールしています。&lt;/p&gt;
&lt;h3 id="docker-composeyml-の変更"&gt;&lt;a href="#docker-composeyml-%e3%81%ae%e5%a4%89%e6%9b%b4" class="header-anchor"&gt;&lt;/a&gt;docker-compose.yml の変更
&lt;/h3&gt;&lt;p&gt;コンテナ内で Jetson Stats を使うためには、&lt;code&gt;/run/jtop.sock&lt;/code&gt; をマウントする必要があるようです。&lt;br&gt;
ただ、それだけではアクセス権限の関係で以下のようなエラーが表示されました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jtop.core.exceptions.JtopException: I can&amp;#39;t access jetson_stats.service.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Docker コンテナの実行ユーザーを &lt;code&gt;/run/jtop.sock&lt;/code&gt; の所有グループに加えたら解決できたので、&lt;code&gt;group_add&lt;/code&gt; のプロパティを追加します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/rbonghi/jetson_stats" target="_blank" rel="noopener"
 &gt;https://github.com/rbonghi/jetson_stats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上を踏まえ、docker-compose.yml を以下のように変更しました（今回に関連する部分のみ抜粋）。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;telegraf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;HOSTNAME&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;NVIDIA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;NVIDIA_DRIVER_CAPABILITIES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;resources&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;reservations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;capabilities&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;gpu&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;unless&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;stopped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;6514&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6514&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;nvidia&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;smi&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;nvidia&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;smi&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 以下は Jetson Xavier NX 用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jtop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jtop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ro&lt;/span&gt; &lt;span class="c1"&gt;# https://github.com/rbonghi/jetson_stats&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;TELEGRAF_UID_GID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;group_add&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${JTOP_GID:?}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="環境変数の追加"&gt;&lt;a href="#%e7%92%b0%e5%a2%83%e5%a4%89%e6%95%b0%e3%81%ae%e8%bf%bd%e5%8a%a0" class="header-anchor"&gt;&lt;/a&gt;環境変数の追加
&lt;/h3&gt;&lt;p&gt;上記の docker-compose.yml 内にある &lt;code&gt;JTOP_GID&lt;/code&gt; という環境変数を定義します。&lt;br&gt;
&lt;code&gt;~/.bashrc&lt;/code&gt; に以下を追記します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="n"&gt;JTOP_GID&lt;/span&gt;&lt;span class="o"&gt;=$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stat&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%g&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jtop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;再読み込みします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~$ &lt;span class="nb"&gt;source&lt;/span&gt; .bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで、&lt;code&gt;/run/jtop.sock&lt;/code&gt; の所有グループを &lt;code&gt;JTOP_GID&lt;/code&gt; で参照できます。&lt;/p&gt;
&lt;h3 id="telegrafconf-の設定"&gt;&lt;a href="#telegrafconf-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;telegraf.conf の設定
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;telegraf.conf&lt;/code&gt; に以下を追記します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[[inputs.exec]]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ## Commands array
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; commands = [
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;python3 /usr/local/bin/jetson_stats.py&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ## Timeout for each command to complete.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; timeout = &amp;#34;5s&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ## measurement name suffix (for separating different commands)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; name_suffix = &amp;#34;_jetson_stats&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ## Data format to consume.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ## Each data format has its own unique set of configuration options, read
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ## more about them here:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; data_format = &amp;#34;json&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ## Array of glob pattern strings or booleans keys that should be added as string fields.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; json_string_fields = [&amp;#34;jetson_uptime&amp;#34;, &amp;#34;jetson_nvp model&amp;#34;, &amp;#34;jetson_NVENC&amp;#34;, &amp;#34;jetson_NVDEC&amp;#34;, &amp;#34;jetson_NVJPG&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;内容は前述の参考記事の中身そのままです。&lt;/p&gt;
&lt;h3 id="テスト"&gt;&lt;a href="#%e3%83%86%e3%82%b9%e3%83%88" class="header-anchor"&gt;&lt;/a&gt;テスト
&lt;/h3&gt;&lt;p&gt;Docker コンテナに入って、以下のコマンドを実行します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 jetson_stats.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;json が取得できていれば OK です。&lt;/p&gt;
&lt;h2 id="grafana-のダッシュボードを作成"&gt;&lt;a href="#grafana-%e3%81%ae%e3%83%80%e3%83%83%e3%82%b7%e3%83%a5%e3%83%9c%e3%83%bc%e3%83%89%e3%82%92%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;Grafana のダッシュボードを作成
&lt;/h2&gt;&lt;p&gt;Jetson Stats 用のテンプレートがないかなと探してみましたが、見つかりませんでした。&lt;br&gt;
どうやら自分で作成するしかなさそうです。&lt;/p&gt;
&lt;p&gt;参考として、&lt;code&gt;jetson_stats.py&lt;/code&gt; を実行したら以下のような出力が得られます（わかりやすいように整形しています）。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;jetson&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;09/14/2022&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;uptime&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0:40:39.970000&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;jetson_clocks&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;OFF&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;nvp model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MODE_10W_DESKTOP&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CPU1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CPU2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CPU3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CPU4&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CPU5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;OFF&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CPU6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;OFF&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;GPU&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;MTS FG&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;MTS BG&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;RAM&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1413804&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;EMC&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1413804&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;SWAP&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;APE&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;NVENC&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;OFF&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;NVDEC&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;OFF&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;NVJPG&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;OFF&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;fan&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Temp AO&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;42.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Temp AUX&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;42.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Temp CPU&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;42.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Temp GPU&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;41.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Temp thermal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;42.15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;power cur&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4166&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;power avg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4166&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これらの値が InfluxDB に格納されているはずなので、その値を使ってダッシュボードを作成していきます。&lt;br&gt;
尚、各プロパティの説明は以下にありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://rnext.it/jetson_stats/jtop.html#jtop.jtop.jtop.stats" target="_blank" rel="noopener"
 &gt;https://rnext.it/jetson_stats/jtop.html#jtop.jtop.jtop.stats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;単位くらい書いておいてほしいなぁ〜。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/nvidia-jetson-series-part-1-jetson-stats/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/nvidia-jetson-series-part-1-jetson-stats/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/rbonghi/jetson_stats" target="_blank" rel="noopener"
 &gt;https://github.com/rbonghi/jetson_stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/rbonghi/jetson_stats/issues/63" target="_blank" rel="noopener"
 &gt;https://github.com/rbonghi/jetson_stats/issues/63&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/manabuishiirb/items/a2620ec8020811540d81" target="_blank" rel="noopener"
 &gt;https://qiita.com/manabuishiirb/items/a2620ec8020811540d81&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/14493-nvidia-jetson/" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/14493-nvidia-jetson/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>TIG Stack を動かしてみる</title><link>https://blog.ponkotools.com/posts/2022/09/16/tigstack/</link><pubDate>Fri, 16 Sep 2022 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2022/09/16/tigstack/</guid><description>&lt;p&gt;サーバーリソースのメトリクスやログの収集・保存・可視化・アラートを行うためにTIG Stack (Telegraf, InfluxDB, Grafana) を使って一通り設定してみました。&lt;/p&gt;
&lt;p&gt;一応、以前にも記事は書いていますが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2021/12/telegraf-influxdb-garafana.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2021/12/telegraf-influxdb-garafana.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ちょっと情報が古くなっていたので、アップデートし、さらに出来る限り設定を自動化しました。&lt;/p&gt;
&lt;h2 id="予備知識"&gt;&lt;a href="#%e4%ba%88%e5%82%99%e7%9f%a5%e8%ad%98" class="header-anchor"&gt;&lt;/a&gt;予備知識
&lt;/h2&gt;&lt;p&gt;時系列とは何ぞや？ TICK スタックとは何ぞや？みたいな話が以下に載ってました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/influxdb-the-platform-for-time-series-data/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/influxdb-the-platform-for-time-series-data/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/introduction-to-influxdatas-influxdb-and-tick-stack/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/introduction-to-influxdatas-influxdb-and-tick-stack/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://medium.com/yavar/influxdb-tick-stack-part1-28bd04d10a18" target="_blank" rel="noopener"
 &gt;https://medium.com/yavar/influxdb-tick-stack-part1-28bd04d10a18&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/integration/syslog/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/integration/syslog/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;p&gt;TIG Stack は全て Docker で動かします。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 20.04&lt;/li&gt;
&lt;li&gt;Docker 20.10.12&lt;/li&gt;
&lt;li&gt;Telegraf 1.23.0&lt;/li&gt;
&lt;li&gt;InfluxDB 1.8.10&lt;/li&gt;
&lt;li&gt;Grafana 9.1.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="各ツールの役割"&gt;&lt;a href="#%e5%90%84%e3%83%84%e3%83%bc%e3%83%ab%e3%81%ae%e5%bd%b9%e5%89%b2" class="header-anchor"&gt;&lt;/a&gt;各ツールの役割
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ツール&lt;/th&gt;
 &lt;th style="text-align: left"&gt;役割&lt;/th&gt;
 &lt;th&gt;Docker イメージ&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Telegraf&lt;/td&gt;
 &lt;td style="text-align: left"&gt;データの収集&lt;/td&gt;
 &lt;td&gt;&lt;a class="link" href="https://hub.docker.com/_/telegraf" target="_blank" rel="noopener"
 &gt;https://hub.docker.com/_/telegraf&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;InfluxDB&lt;/td&gt;
 &lt;td style="text-align: left"&gt;データの保存（時系列データベース）&lt;/td&gt;
 &lt;td&gt;&lt;a class="link" href="https://hub.docker.com/_/influxdb" target="_blank" rel="noopener"
 &gt;https://hub.docker.com/_/influxdb&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Grafana&lt;/td&gt;
 &lt;td style="text-align: left"&gt;データの可視化（UI）&lt;/td&gt;
 &lt;td&gt;&lt;a class="link" href="https://hub.docker.com/r/grafana/grafana/" target="_blank" rel="noopener"
 &gt;https://hub.docker.com/r/grafana/grafana/&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;上記の Docker hub のページに各ツールの起動方法や設定方法などが一通り載っているので、それを参考に設定していきます。&lt;/p&gt;
&lt;h2 id="telegraf-の設定"&gt;&lt;a href="#telegraf-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Telegraf の設定
&lt;/h2&gt;&lt;p&gt;まずは設定ファイルの雛型（デフォルトの設定ファイル）を取得します。&lt;br&gt;
Telegraf の Docker コンテナを起動し、コンテナ内から設定ファイルをホストにコピーしてきます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ docker run --rm telegraf telegraf config &amp;gt; telegraf.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この &lt;code&gt;telegraf.conf&lt;/code&gt; を取得したいデータに応じて編集します。&lt;br&gt;
これについてはいろいろあるので、別記事にまとめました。&lt;/p&gt;
&lt;h2 id="docker-composeyml"&gt;&lt;a href="#docker-composeyml" class="header-anchor"&gt;&lt;/a&gt;docker-compose.yml
&lt;/h2&gt;&lt;p&gt;設定ファイルが必要なのは Telegraf だけなので、ここで TIG Stack を起動する &lt;code&gt;docker-compose.yml&lt;/code&gt; のサンプルを載せます。&lt;br&gt;
前提として、&lt;code&gt;tigstack&lt;/code&gt; というネットワークを共通に使用しているので、以下のコマンドであらかじめ作成しておく必要があります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ docker network create tigstack
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以下、&lt;code&gt;docker-compose.yml&lt;/code&gt; のサンプルです。解説などは後述します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="telegraf-について"&gt;&lt;a href="#telegraf-%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6" class="header-anchor"&gt;&lt;/a&gt;Telegraf について
&lt;/h3&gt;&lt;h4 id="gpu-の情報取得について"&gt;&lt;a href="#gpu-%e3%81%ae%e6%83%85%e5%a0%b1%e5%8f%96%e5%be%97%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6" class="header-anchor"&gt;&lt;/a&gt;GPU の情報取得について
&lt;/h4&gt;&lt;p&gt;NVIDIA の GPU の情報を取得するために以下を指定しています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;NVIDIA_VISIBLE_DEVICES=all&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;NVIDIA_DRIVER_CAPABILITIES=all&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;resources&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;reservations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;capabilities&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;gpu]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/usr/bin/nvidia-smi:/usr/bin/nvidia-smi:ro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これについては以下の記事を参照してください。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/usr/bin/nvidia-smi&lt;/code&gt; のパスは環境によっては異なるかもしれません。&lt;/p&gt;
&lt;h4 id="docker-の情報取得について"&gt;&lt;a href="#docker-%e3%81%ae%e6%83%85%e5%a0%b1%e5%8f%96%e5%be%97%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6" class="header-anchor"&gt;&lt;/a&gt;Docker の情報取得について
&lt;/h4&gt;&lt;p&gt;Docker の情報を取得するためには &lt;code&gt;/var/run/docker.sock&lt;/code&gt; をマウントする必要があります。&lt;br&gt;
さらに Telegraf の実行ユーザーが docker.sock にアクセスできるように、&lt;code&gt;user&lt;/code&gt; を設定する必要があります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/var/run/docker.sock:/var/run/docker.sock:ro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${TELEGRAF_UID_GID:?}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これについては以下の記事を参照してください。&lt;/p&gt;
&lt;h4 id="ホスト名の指定"&gt;&lt;a href="#%e3%83%9b%e3%82%b9%e3%83%88%e5%90%8d%e3%81%ae%e6%8c%87%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;ホスト名の指定
&lt;/h4&gt;&lt;p&gt;Telegraf がメトリクスを InfluxDB に記録する際、ホスト名も記録されますが、Docker コンテナのホスト名はデフォルトだとランダムな値となり、このままでよくわからないので、設定します。&lt;br&gt;
ここではホストマシンと同じホスト名を指定しました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hostname: ${HOSTNAME:?}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これについては以下の記事を参照してください。&lt;/p&gt;
&lt;h3 id="influxdb-について"&gt;&lt;a href="#influxdb-%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6" class="header-anchor"&gt;&lt;/a&gt;InfluxDB について
&lt;/h3&gt;&lt;p&gt;初回起動時にデフォルトのリテンションポリシーを設定するために以下を指定しています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;DOCKER_INFLUXDB_INIT_MODE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;setup&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;DOCKER_INFLUXDB_INIT_RETENTION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;10d&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Telegraf で CPU の温度を取得する</title><link>https://blog.ponkotools.com/posts/2022/08/24/telegraf/</link><pubDate>Wed, 24 Aug 2022 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2022/08/24/telegraf/</guid><description>&lt;p&gt;タイトルの通りです。&lt;/p&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ubuntu 20.04&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cpu-の温度観測プローブを調べる"&gt;&lt;a href="#cpu-%e3%81%ae%e6%b8%a9%e5%ba%a6%e8%a6%b3%e6%b8%ac%e3%83%97%e3%83%ad%e3%83%bc%e3%83%96%e3%82%92%e8%aa%bf%e3%81%b9%e3%82%8b" class="header-anchor"&gt;&lt;/a&gt;CPU の温度観測プローブを調べる
&lt;/h2&gt;&lt;p&gt;以下の記事が参考になりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/koara-local/items/1fac13704123717f5cc8" target="_blank" rel="noopener"
 &gt;https://qiita.com/koara-local/items/1fac13704123717f5cc8&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;/sys/class/thermal&lt;/code&gt; に &lt;code&gt;thermal_zone0&lt;/code&gt; 〜 &lt;code&gt;thermal_zone3&lt;/code&gt; の４つのディレクトリがあり、このうちのどれかが CPU の温度観測用のファイルのようです。&lt;br&gt;
これらの中にある &lt;code&gt;type&lt;/code&gt; ファイルを見ることで、何の温度を表しているかが分かるようです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat /sys/class/thermal/thermal_zone0/type
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;acpitz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat /sys/class/thermal/thermal_zone1/type
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;acpitz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat /sys/class/thermal/thermal_zone2/type
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pch_skylake
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat /sys/class/thermal/thermal_zone3/type
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;x86_pkg_temp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;どうやら私の環境では &lt;code&gt;thermal_zone3&lt;/code&gt; が CPU の温度のようです。&lt;br&gt;
なので、&lt;code&gt;/sys/class/thermal/thermal_zone3/temp&lt;/code&gt; を見ることで CPU の温度が取得できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat /sys/class/thermal/thermal_zone3/temp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;35000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;1000 倍された値が表示されるので、上記の場合 35℃ です。&lt;/p&gt;
&lt;h2 id="telegraf-の設定"&gt;&lt;a href="#telegraf-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Telegraf の設定
&lt;/h2&gt;&lt;p&gt;上記のファイルを監視するように、&lt;code&gt;telegraf.conf&lt;/code&gt; に以下を記述するだけです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[[&lt;/span&gt;inputs.file&lt;span class="o"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/sys/class/thermal/thermal_zone3/temp&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;name_override&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;cpu_temperature&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;data_format&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;value&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;data_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;integer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/koara-local/items/1fac13704123717f5cc8" target="_blank" rel="noopener"
 &gt;https://qiita.com/koara-local/items/1fac13704123717f5cc8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://goozenlab.github.io/blog/2019/08/telegraf-pi-install/" target="_blank" rel="noopener"
 &gt;https://goozenlab.github.io/blog/2019/08/telegraf-pi-install/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.htkyama.org/telegraf_influxdb_grafana" target="_blank" rel="noopener"
 &gt;https://blog.htkyama.org/telegraf_influxdb_grafana&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Telegraf が docker.sock にアクセスできない</title><link>https://blog.ponkotools.com/posts/2022/07/02/telegraf/</link><pubDate>Sat, 02 Jul 2022 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2022/07/02/telegraf/</guid><description>&lt;p&gt;Docker コンテナ内で Telegraf を動かして、Docker の情報を収集するには &lt;code&gt;/var/run/docker.sock&lt;/code&gt; をマウントする必要がありますが、それだけでは以下のように &lt;code&gt;Got permission denied&lt;/code&gt; のエラーが表示されました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;E! &lt;span class="o"&gt;[&lt;/span&gt;inputs.docker&lt;span class="o"&gt;]&lt;/span&gt; Error in plugin: Got permission denied &lt;span class="k"&gt;while&lt;/span&gt; trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get &lt;span class="s2"&gt;&amp;#34;http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info&amp;#34;&lt;/span&gt;: dial unix /var/run/docker.sock: connect: permission denied
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;E! &lt;span class="o"&gt;[&lt;/span&gt;inputs.docker&lt;span class="o"&gt;]&lt;/span&gt; Error in plugin: Got permission denied &lt;span class="k"&gt;while&lt;/span&gt; trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get &lt;span class="s2"&gt;&amp;#34;http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?filters=%7B%22status%22%3A%7B%22running%22%3Atrue%7D%7D&amp;amp;limit=0&amp;#34;&lt;/span&gt;: dial unix /var/run/docker.sock: connect: permission denied
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Telegraf の 1.20.3 以降、Telegraf の実行ユーザーは &lt;code&gt;telegraf&lt;/code&gt; という非 root ユーザーに変わったらしいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/docker-run-telegraf-as-non-root/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/docker-run-telegraf-as-non-root/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なので、Telegraf の実行ユーザーが docker コマンドを実行できるように、以下のように &lt;code&gt;user&lt;/code&gt; を指定する必要があるそうです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;docker&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stat&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%g&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="docker-compose-の場合"&gt;&lt;a href="#docker-compose-%e3%81%ae%e5%a0%b4%e5%90%88" class="header-anchor"&gt;&lt;/a&gt;docker-compose の場合
&lt;/h2&gt;&lt;p&gt;yml 内ではシェル変数を参照できないので、あらかじめ環境変数を設定しておくなど、少し工夫が必要です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;TELEGRAF_UID_GID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;telegraf:&lt;span class="k"&gt;$(&lt;/span&gt;stat -c &lt;span class="s1"&gt;&amp;#39;%g&amp;#39;&lt;/span&gt; /var/run/docker.sock&lt;span class="k"&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;docker-compose.yml&lt;/code&gt; で環境変数を参照します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${TELEGRAF_UID_GID}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここらへんについては以下の記事が参考になると思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2022/06/docker-composeyml-hostname.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2022/06/docker-composeyml-hostname.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/docker-run-telegraf-as-non-root/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/docker-run-telegraf-as-non-root/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Telegraf で Docker の情報を 取得して Grafana で可視化する</title><link>https://blog.ponkotools.com/posts/2021/12/27/telegraf-grafana/</link><pubDate>Mon, 27 Dec 2021 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2021/12/27/telegraf-grafana/</guid><description>&lt;p&gt;サーバーリソースの可視化は以前やったので、今度は Docker の情報を可視化してみました。&lt;/p&gt;
&lt;p&gt;Grafana のダッシュボードは以下を使いました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/10585" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/10585&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これに書いてあることをやっただけですが・・・。&lt;/p&gt;
&lt;h2 id="telegrafconf-の設定"&gt;&lt;a href="#telegrafconf-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;telegraf.conf の設定
&lt;/h2&gt;&lt;p&gt;以下を追加します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;unix:///var/run/docker.sock&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;gather_services&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;container_name_include&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;container_name_exclude&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;5s&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;docker_label_include&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;docker_label_exclude&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;perdevice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="docker-composeyaml-の設定"&gt;&lt;a href="#docker-composeyaml-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;docker-compose.yaml の設定
&lt;/h2&gt;&lt;p&gt;Telegraf の volume に &lt;code&gt;/var/run/docker.sock&lt;/code&gt; を追加します。&lt;br&gt;
また、&lt;code&gt;/var/run/docker.sock&lt;/code&gt; にアクセスするためには Telegraf の実行ユーザーを Docker と同じにする必要があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/docker-run-telegraf-as-non-root/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/docker-run-telegraf-as-non-root/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;133&lt;/span&gt; &lt;span class="c1"&gt;# UID:GID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;さらに、情報を習得したい全サービスに以下を追加してグループ化します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;labels:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - &amp;#34;docker.group=&amp;lt;some_name&amp;gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ラベルの名前は何でもいいようです。&lt;br&gt;
ラベルを設定しなかったサービスの情報は取得されませんでした。&lt;/p&gt;
&lt;h2 id="grafana-の設定"&gt;&lt;a href="#grafana-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Grafana の設定
&lt;/h2&gt;&lt;p&gt;以下から JSON ファイルをダウンロードし、Grafana でインポートします。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/10585" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/10585&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上で以下のようなダッシュボードが表示されます。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="515px" data-flex-grow="214" height="933" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.ponkotools.com/posts/2021/12/27/telegraf-grafana/01.webp" srcset="https://blog.ponkotools.com/posts/2021/12/27/telegraf-grafana/01_hu_3ea807a2ee27bfa9.webp 800w, https://blog.ponkotools.com/posts/2021/12/27/telegraf-grafana/01_hu_4a0caec175c09e8c.webp 1600w, https://blog.ponkotools.com/posts/2021/12/27/telegraf-grafana/01.webp 2005w" width="2005"&gt;&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/10585" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/10585&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/docker-run-telegraf-as-non-root/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/docker-run-telegraf-as-non-root/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Telegraf で GPU の情報を取得し、Grafana で可視化する</title><link>https://blog.ponkotools.com/posts/2021/12/26/telegraf-grafana/</link><pubDate>Sun, 26 Dec 2021 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2021/12/26/telegraf-grafana/</guid><description>&lt;p&gt;Telegraf, InfluxDB, Grafana を使って GPU の情報を閲覧できるようにしました。&lt;/p&gt;
&lt;p&gt;以前、Telegraf, InfluxDB, Grafana を使ってサーバーリソースの情報を閲覧できるようにしました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2021/12/telegraf-influxdb-garafana.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2021/12/telegraf-influxdb-garafana.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これを前提としたうえで、今回 GPU の情報も見れるようにしました。&lt;/p&gt;
&lt;p&gt;試したグラフィックボードは NVIDIA GeForce RTX 3080 です。&lt;br&gt;
グラフィックドライバーのインストールなどは完了している前提です。&lt;/p&gt;
&lt;h2 id="概要"&gt;&lt;a href="#%e6%a6%82%e8%a6%81" class="header-anchor"&gt;&lt;/a&gt;概要
&lt;/h2&gt;&lt;p&gt;Telegraf の nvidia_smi プラグインを使えば GPU の情報を取得できるようです。&lt;br&gt;
nvidia_smi のプラグインについては以下に説明があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/influxdata/telegraf/blob/master/plugins/inputs/nvidia_smi/README.md" target="_blank" rel="noopener"
 &gt;https://github.com/influxdata/telegraf/blob/master/plugins/inputs/nvidia_smi/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記の記事に書いてありますが、Docker で動作させている Telegraf で GPU の情報を取得するには、以下の２つの方法があるようです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nvidia/cuda&lt;/code&gt; の Docker イメージをベースに Telegraf をインストールしたカスタムイメージを作成する&lt;/li&gt;
&lt;li&gt;Volume のマウントバインディングを使用して nvidia-smi のバイナリを Docker コンテナに注入する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回は後者でいきます。&lt;/p&gt;
&lt;h2 id="telegraf-の設定"&gt;&lt;a href="#telegraf-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Telegraf の設定
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;telegraf.conf&lt;/code&gt; に以下を追加しました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[[inputs.nvidia_smi]]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; #bin_path = &amp;#34;/usr/bin/nvidia-smi&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;inputs.nvidia_smi&lt;/code&gt; を追加するだけでプラグインが有効になるようです。&lt;br&gt;
&lt;code&gt;bin_path&lt;/code&gt; は &lt;code&gt;nvidia-smi&lt;/code&gt; のある場所です。&lt;br&gt;
以下のコマンドで調べられます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ which nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr/bin/nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Linux では通常 &lt;code&gt;/usr/bin/nvidia-smi&lt;/code&gt; にあるそうで、その場合は指定しなくてもよいそうです。&lt;/p&gt;
&lt;h2 id="docker-compose-の設定"&gt;&lt;a href="#docker-compose-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;docker-compose の設定
&lt;/h2&gt;&lt;p&gt;Telegraf を動作させている Docker コンテナから nvidia-smi と GPU にアクセスできるように設定します。&lt;br&gt;
例えば、以下のような感じです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;version: &amp;#39;3.5&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; telegraf:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; container_name: telegraf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: telegraf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; environment:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - NVIDIA_VISIBLE_DEVICES=all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - NVIDIA_DRIVER_CAPABILITIES=all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; deploy:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; resources:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reservations:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; devices:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - capabilities: [gpu]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - /usr/bin/nvidia-smi:/usr/bin/nvidia-smi:ro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ホストの &lt;code&gt;/usr/bin/nvidia-smi&lt;/code&gt; をコンテナにマウントします。&lt;br&gt;
Docker コンテナでの GPU の使用については以下の記事にも書いているので、参照してください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2021/11/docker-compose-gpu.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2021/11/docker-compose-gpu.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="grafana-の設定"&gt;&lt;a href="#grafana-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Grafana の設定
&lt;/h2&gt;&lt;p&gt;Docker コンテナを起動したら、Grafana で以下のダッシュボードのテンプレートをインストールします。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/12225" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/12225&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これで閲覧できるようになると思ったのですが、&lt;code&gt;Hostname&lt;/code&gt; に &lt;code&gt;None&lt;/code&gt; しか表示されず、グラフに何も表示されない状態でした。&lt;br&gt;
どうもこのテンプレートが Windows を前提としているようですので、ダッシュボードの設定をちょっと修正しました。&lt;/p&gt;
&lt;p&gt;ダッシュボードの設定画面を開き Variables を選択します。&lt;br&gt;
&lt;code&gt;hostname&lt;/code&gt; の定義を以下のように変更します。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;変更前&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SHOW TAG VALUES FROM &amp;#34;win_system&amp;#34; WITH KEY = &amp;#34;host&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;変更後&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SHOW TAG VALUES FROM system WITH KEY=host
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで以下のようにグラフが表示されるようになりました。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="394px" data-flex-grow="164" height="427" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.ponkotools.com/posts/2021/12/26/telegraf-grafana/01.webp" width="701"&gt;&lt;/p&gt;
&lt;p&gt;他に &lt;code&gt;CPU Usage&lt;/code&gt; と &lt;code&gt;Memory Free&lt;/code&gt; のメーター表示も Windows 前提となっているようなので、必要なら修正してください。&lt;br&gt;
私は CPU やメモリなどは他のダッシュボードで閲覧しており、ここでは GPU の情報だけで十分だったので、そこまで修正しませんでした。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/influxdata/telegraf/blob/master/plugins/inputs/nvidia_smi/README.md" target="_blank" rel="noopener"
 &gt;https://github.com/influxdata/telegraf/blob/master/plugins/inputs/nvidia_smi/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://cristianpb.github.io/blog/grafana-dashboard" target="_blank" rel="noopener"
 &gt;https://cristianpb.github.io/blog/grafana-dashboard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>rsyslog から Telegraf への送信に時々失敗する</title><link>https://blog.ponkotools.com/posts/2021/12/22/rsyslog-telegraf/</link><pubDate>Wed, 22 Dec 2021 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2021/12/22/rsyslog-telegraf/</guid><description>&lt;p&gt;rsyslog から Telegraf にログを TCP で転送するように設定してみましたが、Grafana で閲覧していると表示されないログがあり、送信に失敗しているようでした。&lt;/p&gt;
&lt;p&gt;ググてみると以下のページを見つけました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://gist.github.com/froop/e3a1e7d14a8143f9951b85afff6b5469#file-rsyslog-bug4227-md" target="_blank" rel="noopener"
 &gt;https://gist.github.com/froop/e3a1e7d14a8143f9951b85afff6b5469#file-rsyslog-bug4227-md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;どうやら rsyslog の不具合のようで、バージョン 8.2010.0 で修正されているようです。&lt;br&gt;
rsyslog のバージョンは以下で確認できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ rsyslogd -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;私の環境 (Ubuntu 20.04) の rsyslog のバージョンは 8.2001.0 でした。
なので、rsyslog をアップデートします。
アップデート方法は以下に書いてありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.rsyslog.com/ubuntu-repository/" target="_blank" rel="noopener"
 &gt;https://www.rsyslog.com/ubuntu-repository/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo add-apt-repository ppa:adiscon/v8-stable
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get install rsyslog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;現在の &lt;code&gt;/etc/rsyslog.conf&lt;/code&gt; を最新のに差し替えるか残すかを聞かれますが、最新のに差し替えた後で再設定を行いました。
再設定後は rsyslog を再起動します。
尚、アップデート後のバージョンは 8.2021.0 でした。
アップデート後は、ざっと見た感じきちんと転送されているように見えます。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://gist.github.com/froop/e3a1e7d14a8143f9951b85afff6b5469#file-rsyslog-bug4227-md" target="_blank" rel="noopener"
 &gt;https://gist.github.com/froop/e3a1e7d14a8143f9951b85afff6b5469#file-rsyslog-bug4227-md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.rsyslog.com/ubuntu-repository/" target="_blank" rel="noopener"
 &gt;https://www.rsyslog.com/ubuntu-repository/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Syslog を Telegraf に送り、Grafana で閲覧できるようにする</title><link>https://blog.ponkotools.com/posts/2021/12/20/syslog-telegraf-grafana/</link><pubDate>Mon, 20 Dec 2021 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2021/12/20/syslog-telegraf-grafana/</guid><description>&lt;p&gt;以下に Syslog 用のテンプレートと解説があるので簡単にできるかと思ったんですが、結構苦労しました・・・。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/12433" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/12433&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="概要"&gt;&lt;a href="#%e6%a6%82%e8%a6%81" class="header-anchor"&gt;&lt;/a&gt;概要
&lt;/h2&gt;&lt;p&gt;ホストの Syslog から Telegraf にログを送り、Telegraf が InfluxDB に保存し、Grafana が InfluxDB から読み込んで可視化します。&lt;/p&gt;
&lt;p&gt;Telegraf、InfluxDB、Grafana は全て docker-compose で動かしています。&lt;br&gt;
これについては以下の記事で書いているので省略します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2021/12/telegraf-influxdb-garafana.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2021/12/telegraf-influxdb-garafana.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記記事からの変更点を以下に記述します。&lt;/p&gt;
&lt;h2 id="rsyslog-の設定"&gt;&lt;a href="#rsyslog-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;rsyslog の設定
&lt;/h2&gt;&lt;p&gt;まずは Syslog から Telegraf にログを送信するように設定します。&lt;br&gt;
&lt;code&gt;/etc/rsyslog.conf&lt;/code&gt; を編集します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo gedit /etc/rsyslog.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以下の設定を追加します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;WorkDirectory&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;spool&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rsyslog&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ActionQueueType&lt;/span&gt; &lt;span class="n"&gt;LinkedList&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ActionQueueFileName&lt;/span&gt; &lt;span class="n"&gt;srvrfwd&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ActionResumeRetryCount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ActionQueueSaveOnShutdown&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ModLoad&lt;/span&gt; &lt;span class="n"&gt;imudp&lt;/span&gt; &lt;span class="c1"&gt;#loads the udp module &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;UDPServerAddress&lt;/span&gt; &lt;span class="n"&gt;localhost&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;UDPServerRun&lt;/span&gt; &lt;span class="mi"&gt;514&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*.*&lt;/span&gt; &lt;span class="err"&gt;@@&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6514&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;RSYSLOG_SyslogProtocol23Format&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;rsyslog を再起動します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo systemctl restart rsyslog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="telegraf-の設定"&gt;&lt;a href="#telegraf-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Telegraf の設定
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;telegraf.conf&lt;/code&gt; に以下の設定を追加します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[[inputs.syslog]]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; server = &amp;#34;tcp://0.0.0.0:6514&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Syslog から TCP ポート 6514 で受信するように設定していますが、docker で動かしているので &lt;code&gt;localhost&lt;/code&gt; を指定すると上手く動作しません。&lt;br&gt;
とりあえず &lt;code&gt;0.0.0.0&lt;/code&gt; を指定しましたが、もしかしたら &lt;code&gt;host.docker.internal&lt;/code&gt; とかでもいけるのかもしれません（未確認）。&lt;/p&gt;
&lt;h2 id="docker-composeyaml-の変更"&gt;&lt;a href="#docker-composeyaml-%e3%81%ae%e5%a4%89%e6%9b%b4" class="header-anchor"&gt;&lt;/a&gt;docker-compose.yaml の変更
&lt;/h2&gt;&lt;p&gt;ポート 6514 を使用できるようにします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; telegraf:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; container_name: telegraf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: telegraf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 6514:6514
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;docker コンテナを再起動します。&lt;/p&gt;
&lt;h2 id="grafana-の設定"&gt;&lt;a href="#grafana-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Grafana の設定
&lt;/h2&gt;&lt;p&gt;以下のページからダッシュボードの JSON ファイルをダウンロードしてインポートするだけです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/12433" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/12433&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これで以下のようなダッシュボードが完成します。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="338px" data-flex-grow="140" height="320" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.ponkotools.com/posts/2021/12/20/syslog-telegraf-grafana/01.webp" width="451"&gt;&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.htkyama.org/rsyslog_grafana" target="_blank" rel="noopener"
 &gt;https://blog.htkyama.org/rsyslog_grafana&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/12433" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/12433&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/haccht/items/82e8694c57202135ae5e" target="_blank" rel="noopener"
 &gt;https://qiita.com/haccht/items/82e8694c57202135ae5e&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Telegraf + InfluxDB + Garafana でサーバーリソースを可視化する</title><link>https://blog.ponkotools.com/posts/2021/12/18/telegraf-influxdb-grafana/</link><pubDate>Sat, 18 Dec 2021 00:00:00 +0900</pubDate><guid>https://blog.ponkotools.com/posts/2021/12/18/telegraf-influxdb-grafana/</guid><description>&lt;p&gt;CPUやメモリなどのリソースを収集して閲覧したいなと思い、ググってみるとこの組み合わせが良さそうでした。&lt;br&gt;
Telegraf でデータを取得して InfluxDB に書き込み、Grafana で InfluxDB のデータを読み込んで可視化します。&lt;/p&gt;
&lt;p&gt;個人的に InfluxDB と Grafana は使ったことありますが、Telegraf は今回初めて使いました。&lt;/p&gt;
&lt;p&gt;尚、この３つの頭文字を取って TIG Stack と呼んでいるページもいくつか見かけました。&lt;/p&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ubuntu 20.04&lt;/li&gt;
&lt;li&gt;Docker 20.10.7&lt;/li&gt;
&lt;li&gt;Telegraf 1.20.4&lt;/li&gt;
&lt;li&gt;InfluxDB 1.8.6&lt;/li&gt;
&lt;li&gt;Grafana 7.5.7&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Telegraf と Grafana は現時点の最新のバージョンですが、InfluxDB は 2.0 系ではなく 1.8.6 を使いました。&lt;br&gt;
InfluxDB 2.0 を使ったことがないのと、参考にした Telegraf の設定ファイルのサンプルが InfluxDB 2.0 ではないものばかりだったからです。&lt;/p&gt;
&lt;p&gt;また、Telegraf, InfluxDB, Grafana は全て Docker (docker-compose) を使って動かします。&lt;/p&gt;
&lt;h2 id="docker-composeyaml-のサンプル"&gt;&lt;a href="#docker-composeyaml-%e3%81%ae%e3%82%b5%e3%83%b3%e3%83%97%e3%83%ab" class="header-anchor"&gt;&lt;/a&gt;docker-compose.yaml のサンプル
&lt;/h2&gt;&lt;p&gt;以下のような &lt;code&gt;docker-compose.yaml&lt;/code&gt; を作成しました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3.1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;telegraf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;telegraf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;telegraf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;depends_on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;influxdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;influxdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;common&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;influxdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;1.8&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;8086&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;8086&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;influxdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;common&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;grafana&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grafana&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grafana&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;grafana&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;influxdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;grafana&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;grafana&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;common&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;common&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;external&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;grafana&lt;/span&gt;&lt;span class="p"&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;common&lt;/code&gt; というネットワークを共通で使っているので、あらかじめ &lt;code&gt;docker network create&lt;/code&gt; で作成しておく必要があります。&lt;/p&gt;
&lt;h2 id="telegraf-の設定"&gt;&lt;a href="#telegraf-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Telegraf の設定
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;telegraf.conf&lt;/code&gt; を作成します。&lt;/p&gt;
&lt;p&gt;以下のページにちょうど良いのがあるのでこれをそのまま使いました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/928" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/928&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;後述しますが、Grafana のダッシュボードのテンプレートもこれを使いました。&lt;br&gt;
上記の設定をコピーしたら最低限以下の設定だけ変更します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;[agent]&lt;/code&gt; &amp;gt; &lt;code&gt;hostname&lt;/code&gt; にマシン名を設定
&lt;ul&gt;
&lt;li&gt;設定しないと自動で設定されますが、起動の度に変わるので設定しておいたほうがよいと思います。&lt;/li&gt;
&lt;li&gt;環境変数が使えるので、&lt;code&gt;hostname = &amp;quot;$HOSTNAME&amp;quot;&lt;/code&gt; のようにも書けます。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[[outputs.influxdb]]&lt;/code&gt; &amp;gt; &lt;code&gt;urls&lt;/code&gt; を InfluxDB の URL に変更
&lt;ul&gt;
&lt;li&gt;上記の &lt;code&gt;docker-compose.yaml&lt;/code&gt; の場合、URL は &lt;code&gt;http://influxdb.common:8086&lt;/code&gt; のようにコンテナ名とネットワーク名を使っても指定できます。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;他は必要に応じて設定します。&lt;/p&gt;
&lt;h2 id="起動"&gt;&lt;a href="#%e8%b5%b7%e5%8b%95" class="header-anchor"&gt;&lt;/a&gt;起動
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ docker-compose up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;デーモン化したい場合は &lt;code&gt;-d&lt;/code&gt; を指定します。&lt;br&gt;
起動すると InfluxDB に Telegraf 用のデータベースを自動で作成してくれます。&lt;br&gt;
（データベース名は &lt;code&gt;telegraf.conf&lt;/code&gt; で設定できます。）&lt;/p&gt;
&lt;h2 id="grafana-の設定"&gt;&lt;a href="#grafana-%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Grafana の設定
&lt;/h2&gt;&lt;p&gt;Grafana にアクセスし、ログインします。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;http://localhost:3000&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;初期 ID とパスワードはどちらも &lt;code&gt;admin&lt;/code&gt; です。&lt;/p&gt;
&lt;h3 id="db-の登録"&gt;&lt;a href="#db-%e3%81%ae%e7%99%bb%e9%8c%b2" class="header-anchor"&gt;&lt;/a&gt;DB の登録
&lt;/h3&gt;&lt;p&gt;Configuration &amp;gt; Data Sources &amp;gt; Add data source &amp;gt; InfluxDB を選択します。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;URL&lt;/code&gt; と &lt;code&gt;Database&lt;/code&gt; の２つを設定します。&lt;br&gt;
今回の例では以下のように設定します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;URL&lt;/code&gt; に &lt;code&gt;http://influxdb.common:8086&lt;/code&gt; を設定&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Database&lt;/code&gt; に &lt;code&gt;telegraf_metrics&lt;/code&gt; を設定&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ダッシュボードの作成"&gt;&lt;a href="#%e3%83%80%e3%83%83%e3%82%b7%e3%83%a5%e3%83%9c%e3%83%bc%e3%83%89%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;ダッシュボードの作成
&lt;/h3&gt;&lt;p&gt;Telegraf 用のテンプレートがあるので、それをインポートするのが楽です。&lt;br&gt;
テンプレートは以下のページで探せます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回は以下のテンプレートを使いました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/928" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/928&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記から JSON ファイルをダウンロードし、Grafana の左メニューの + ボタンからインポートします。&lt;br&gt;
インポートの際、データベースは &lt;code&gt;telegraf_metrics&lt;/code&gt; を選択します。&lt;/p&gt;
&lt;p&gt;ダッシュボードにアクセスすると以下のような画面が表示されます。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="377px" data-flex-grow="157" height="1275" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.ponkotools.com/posts/2021/12/18/telegraf-influxdb-grafana/01.webp" srcset="https://blog.ponkotools.com/posts/2021/12/18/telegraf-influxdb-grafana/01_hu_1c1df1dba5082846.webp 800w, https://blog.ponkotools.com/posts/2021/12/18/telegraf-influxdb-grafana/01_hu_a462fb49fe1c77e3.webp 1600w, https://blog.ponkotools.com/posts/2021/12/18/telegraf-influxdb-grafana/01.webp 2003w" width="2003"&gt;&lt;/p&gt;
&lt;p&gt;かっこいい画面が簡単に作成できました。&lt;/p&gt;
&lt;h2 id="リテンションポリシーの設定"&gt;&lt;a href="#%e3%83%aa%e3%83%86%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%9d%e3%83%aa%e3%82%b7%e3%83%bc%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;リテンションポリシーの設定
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;telegraf.conf&lt;/code&gt; の [[outputs.influxdb]] &amp;gt; retention_policy でリテンションポリシーを指定できますが、ここが未指定だとデフォルトの &lt;code&gt;autogen&lt;/code&gt; が使用され、データが無期限に保存されることになるので指定します。&lt;br&gt;
例えば、リテンションポリシー名に &lt;code&gt;hoge&lt;/code&gt; と指定します。&lt;/p&gt;
&lt;p&gt;この状態で動作させると、&lt;code&gt;hoge&lt;/code&gt; というリテンションポリシーが存在しないというエラーが出るので、InfluxDB のコンテナに入ってリテンションポリシーを作成します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ docker exec -it influxdb bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コンテナに入ったら以下のコマンドでリテンションポリシーを作成します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# influx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; CREATE RETENTION POLICY &amp;#34;リテンションポリシー名&amp;#34; ON &amp;#34;データベース名&amp;#34; DURATION &amp;#34;期間&amp;#34; REPLICATION 1 DEFAULT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例えば、今回は以下のように指定します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CREATE RETENTION POLICY &amp;#34;hoge&amp;#34; ON &amp;#34;telegraf_metrics&amp;#34; DURATION 1h REPLICATION 1 DEFAULT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上記のコマンドではデータの保存期間を１時間に設定しています。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/sammrai/items/0c329ac7aa8b100b66a8" target="_blank" rel="noopener"
 &gt;https://qiita.com/sammrai/items/0c329ac7aa8b100b66a8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/influxdata/telegraf/blob/master/etc/telegraf.conf" target="_blank" rel="noopener"
 &gt;https://github.com/influxdata/telegraf/blob/master/etc/telegraf.conf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/grafana/dashboards/928" target="_blank" rel="noopener"
 &gt;https://grafana.com/grafana/dashboards/928&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.htkyama.org/telegraf_influxdb_grafana" target="_blank" rel="noopener"
 &gt;https://blog.htkyama.org/telegraf_influxdb_grafana&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>