<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>nullpo.io</title>
  
  
  <link href="https://www.nullpo.io/atom.xml" rel="self"/>
  
  <link href="https://www.nullpo.io/"/>
  <updated>2021-09-13T00:02:26.150Z</updated>
  <id>https://www.nullpo.io/</id>
  
  <author>
    <name>nullpo</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Windows10のアップグレードで0x800f0805エラーになる</title>
    <link href="https://www.nullpo.io/2021/09/13/windows-windows10-upgrade-error-0x800f0805/"/>
    <id>https://www.nullpo.io/2021/09/13/windows-windows10-upgrade-error-0x800f0805/</id>
    <published>2021-09-13T00:00:00.000Z</published>
    <updated>2021-09-13T00:02:26.150Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="windowws10をhomeからproにアップグレードしたい">Windowws10をHomeからProにアップグレードしたい</span></h2><p>Windows10 Homeではリモートデスクトップが使えません。リモートデスクトップを使うにはWindows10 Proが必要になります。アップグレードは簡単で、プロダクトキーを購入して入力するだけです。<br>しかし、うまくアップグレードできない。エラーは<strong>0x800f0805</strong>です。</p><h2><span id="windows10にはアップグレード可能なエディションというものがある">Windows10にはアップグレード可能なエディションというものがある</span></h2><p>アップグレード可能なエディションは<code>dism /online /get-targeteditions</code>で確認することができます。</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">C:\<span class="title">Windows</span>\<span class="title">system32</span>&gt;<span class="title">dism</span> /<span class="title">online</span> /<span class="title">get</span>-<span class="title">targeteditions</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">展開イメージのサービスと管理ツール</span></span><br><span class="line"><span class="function">バージョン: 10.0.19041.572</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">イメージのバージョン: 10.0.19042.662</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">アップグレード可能なエディション:</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">エラー: 0<span class="title">x800f0805</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="title">Windows</span> エディションが検出されませんでした。</span></span><br><span class="line"><span class="function">指定したイメージが有効な <span class="title">Windows</span> オペレーティング システム イメージであることを確認してください。</span></span><br></pre></td></tr></table></figure><p>標準状態では有効なオペレーティングシステムがないと表示されています。</p><h2><span id="アップグレード可能にするにはchangepkexe">アップグレード可能にするにはchangepk.exe</span></h2><p><code>changepk.exe /ProductKey &lt;enter your new product key here&gt;</code>を実行して再起動するだけです。</p><p>再度<strong>dismコマンド</strong>で確認します。</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">C:\<span class="title">Windows</span>\<span class="title">system32</span>&gt;<span class="title">dism</span> /<span class="title">online</span> /<span class="title">get</span>-<span class="title">targeteditions</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">展開イメージのサービスと管理ツール</span></span><br><span class="line"><span class="function">バージョン: 10.0.19041.572</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">イメージのバージョン: 10.0.19042.662</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">アップグレード可能なエディション:</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">ターゲット エディション : <span class="title">Professional</span></span></span><br><span class="line"><span class="function">ターゲット エディション : <span class="title">ProfessionalEducation</span></span></span><br><span class="line"><span class="function">ターゲット エディション : <span class="title">ProfessionalWorkstation</span></span></span><br><span class="line"><span class="function">ターゲット エディション : <span class="title">Education</span></span></span><br><span class="line"><span class="function">ターゲット エディション : <span class="title">ProfessionalCountrySpecific</span></span></span><br><span class="line"><span class="function">ターゲット エディション : <span class="title">ProfessionalSingleLanguage</span></span></span><br><span class="line"><span class="function">ターゲット エディション : <span class="title">ServerRdsh</span></span></span><br><span class="line"><span class="function">ターゲット エディション : <span class="title">IoTEnterprise</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">操作は正常に完了しました。</span></span><br></pre></td></tr></table></figure><p>この状態でプロダクトキーを入力してアップグレードしたところ正常にアップグレードできました！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;windowws10をhomeからproにアップグレードしたい&quot;&gt;Windowws10をHomeからProにアップグレードしたい&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Windows10 Homeではリモートデスクトップが使えません。リモートデスクトップを使うに</summary>
      
    
    
    
    <category term="Windows" scheme="https://www.nullpo.io/categories/Windows/"/>
    
    
    <category term="Windows10" scheme="https://www.nullpo.io/tags/Windows10/"/>
    
  </entry>
  
  <entry>
    <title>最速でWindows10のプロダクトキーを確認する方法</title>
    <link href="https://www.nullpo.io/2021/09/13/windows-product-key/"/>
    <id>https://www.nullpo.io/2021/09/13/windows-product-key/</id>
    <published>2021-09-12T23:00:00.000Z</published>
    <updated>2021-09-13T00:14:44.932Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="os導入済のメーカー製パソコンの場合">OS導入済のメーカー製パソコンの場合</span></h2><p>ワンライナーで確認できます。<strong>管理者実行したコマンドプロンプト</strong>で<code>wmic path SoftwareLicensingService get OA3xOriginalProductKey</code>を実行</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">C:\<span class="title">WINDOWS</span>\<span class="title">system32</span>&gt;<span class="title">wmic</span> <span class="title">path</span> <span class="title">SoftwareLicensingService</span> <span class="title">get</span> <span class="title">OA3xOriginalProductKey</span></span></span><br><span class="line"><span class="function"><span class="title">OA3xOriginalProductKey</span></span></span><br><span class="line"><span class="function"><span class="title">XXXX</span>-<span class="title">XXXX</span>-<span class="title">XXXX</span>-<span class="title">XXXX</span>-<span class="title">XXXX</span></span></span><br></pre></td></tr></table></figure><h2><span id="自作pcの場合">自作PCの場合</span></h2><p>しかし、自作PCではこの方法では確認できません。実行しても何も表示されません。<br>自作PCの場合はフリーソフトを使います<a href="http://www.rjlsoftware.com/software/utility/winproductkey/download.shtml">RJL</a>から<strong>Windows Product Key Viewer</strong>をダウンロード実行します。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/windows-product-key/2021-09-13-windows-product-key-01.png" alt="Product key viewer width=640"></p><p>実行すると、すぐにプロダクトキーが表示されます。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_480/v1/windows-product-key/2021-09-13-windows-product-key-02.png" alt="Product key viewer width=480"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;os導入済のメーカー製パソコンの場合&quot;&gt;OS導入済のメーカー製パソコンの場合&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;ワンライナーで確認できます。&lt;strong&gt;管理者実行したコマンドプロンプト&lt;/strong&gt;で&lt;code&gt;wmic path SoftwareL</summary>
      
    
    
    
    <category term="Windows" scheme="https://www.nullpo.io/categories/Windows/"/>
    
    
    <category term="Windows10" scheme="https://www.nullpo.io/tags/Windows10/"/>
    
    <category term="ProductKey" scheme="https://www.nullpo.io/tags/ProductKey/"/>
    
  </entry>
  
  <entry>
    <title>Fluent-BitでファイルにJSON形式でログ出力する</title>
    <link href="https://www.nullpo.io/2021/08/15/logging-fluent-bit-output-json/"/>
    <id>https://www.nullpo.io/2021/08/15/logging-fluent-bit-output-json/</id>
    <published>2021-08-15T14:40:00.000Z</published>
    <updated>2021-08-15T15:13:22.569Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="ファイルに出力する">ファイルに出力する</span></h2><p>ファイルへの出力は<a href="https://docs.fluentbit.io/manual/pipeline/outputs/file">FileOutputプラグイン</a>を使用する</p><h3><span id="docker-composeyml">docker-compose.yml</span></h3><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&#x27;3.5&#x27;</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">web1:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">nginx:latest</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;8888:80&quot;</span> </span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluent-bit</span></span><br><span class="line">    <span class="attr">command:</span> [<span class="string">nginx-debug</span>, <span class="string">&#x27;-g&#x27;</span>, <span class="string">&#x27;daemon off;&#x27;</span>]</span><br><span class="line">    <span class="attr">logging:</span></span><br><span class="line">      <span class="attr">driver:</span> <span class="string">fluentd</span></span><br><span class="line">      <span class="attr">options:</span></span><br><span class="line">        <span class="attr">fluentd-address:</span> <span class="string">&quot;localhost:24224&quot;</span></span><br><span class="line">        <span class="attr">fluentd-async-connect:</span> <span class="string">&quot;false&quot;</span></span><br><span class="line">  <span class="attr">web2:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">nginx:latest</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;8889:80&quot;</span> </span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluent-bit</span></span><br><span class="line">    <span class="attr">command:</span> [<span class="string">nginx-debug</span>, <span class="string">&#x27;-g&#x27;</span>, <span class="string">&#x27;daemon off;&#x27;</span>]</span><br><span class="line">    <span class="attr">logging:</span></span><br><span class="line">      <span class="attr">driver:</span> <span class="string">fluentd</span></span><br><span class="line">      <span class="attr">options:</span></span><br><span class="line">        <span class="attr">fluentd-address:</span> <span class="string">&quot;localhost:24224&quot;</span></span><br><span class="line">        <span class="attr">fluentd-async-connect:</span> <span class="string">&quot;false&quot;</span></span><br><span class="line">  <span class="attr">fluent-bit:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">fluent/fluent-bit</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">./log:/log:rw</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;24224:24224&quot;</span></span><br></pre></td></tr></table></figure><h3><span id="fluent-bitconf">fluent-bit.conf</span></h3><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[SERVICE]</span></span><br><span class="line">    Log_Level       info</span><br><span class="line">    Parsers_File    parsers.conf</span><br><span class="line"></span><br><span class="line"><span class="section">[INPUT]</span></span><br><span class="line">    Name    forward</span><br><span class="line">    Listen  0.0.0.0</span><br><span class="line">    Port    24224</span><br><span class="line"></span><br><span class="line"><span class="section">[FILTER]</span></span><br><span class="line">    Name parser</span><br><span class="line">    Match *</span><br><span class="line">    Key_Name log</span><br><span class="line">    Parser nginx</span><br><span class="line">    Preserve_Key Off</span><br><span class="line">    Reserve_Data On</span><br><span class="line"></span><br><span class="line"><span class="section">[OUTPUT]</span></span><br><span class="line">    Name file</span><br><span class="line">    Match *</span><br><span class="line">    Path /log/</span><br></pre></td></tr></table></figure><h2><span id="どのように記録されるか">どのように記録されるか？</span></h2><h3><span id="標準設定で出力してみる">標準設定で出力してみる</span></h3><p>‘/log’ディレクトリには以下のファイルが作成された</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">Mode                 LastWriteTime         Length Name</span><br><span class="line">----                 -------------         ------ ----</span><br><span class="line">-a---l        2021/08/15     14:15          16383 247a34282381</span><br><span class="line">-a---l        2021/08/15     14:12           2205 9b0fd4a80449</span><br></pre></td></tr></table></figure><p>ファイルには<strong>eginx</strong>のログが記録されている</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">247a34282381: [1629004368.000000000, &#123;&quot;source&quot;:&quot;stdout&quot;,&quot;log&quot;:&quot;/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration&quot;,&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;&#125;]</span><br><span class="line">247a34282381: [1629004368.000000000, &#123;&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;,&quot;log&quot;:&quot;/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/&quot;&#125;]</span><br><span class="line">247a34282381: [1629004368.000000000, &#123;&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;,&quot;log&quot;:&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh&quot;,&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;&#125;]</span><br><span class="line">247a34282381: [1629004368.000000000, &#123;&quot;log&quot;:&quot;10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf&quot;,&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;&#125;]</span><br><span class="line">247a34282381: [1629004368.000000000, &#123;&quot;log&quot;:&quot;10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf&quot;,&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;&#125;]</span><br><span class="line">247a34282381: [1629004368.000000000, &#123;&quot;log&quot;:&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh&quot;,&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;&#125;]</span><br><span class="line">247a34282381: [1629004368.000000000, &#123;&quot;log&quot;:&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh&quot;,&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;&#125;]</span><br><span class="line">247a34282381: [1629004368.000000000, &#123;&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;,&quot;log&quot;:&quot;/docker-entrypoint.sh: Configuration complete; ready for start up&quot;&#125;]</span><br><span class="line">247a34282381: [1629004383.000000000, &#123;&quot;remote&quot;:&quot;172.27.0.1&quot;,&quot;host&quot;:&quot;-&quot;,&quot;user&quot;:&quot;-&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;path&quot;:&quot;/&quot;,&quot;code&quot;:&quot;304&quot;,&quot;size&quot;:&quot;0&quot;,&quot;referer&quot;:&quot;-&quot;,&quot;agent&quot;:&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36&quot;,&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;&#125;]</span><br><span class="line">247a34282381: [1629004384.000000000, &#123;&quot;remote&quot;:&quot;172.27.0.1&quot;,&quot;host&quot;:&quot;-&quot;,&quot;user&quot;:&quot;-&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;path&quot;:&quot;/&quot;,&quot;code&quot;:&quot;304&quot;,&quot;size&quot;:&quot;0&quot;,&quot;referer&quot;:&quot;-&quot;,&quot;agent&quot;:&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36&quot;,&quot;container_id&quot;:&quot;247a342823810c30c81814b59743aa4da98240b96bac829f0558770956925f67&quot;,&quot;container_name&quot;:&quot;/output-jsonfile_web1_1&quot;,&quot;source&quot;:&quot;stdout&quot;&#125;]</span><br></pre></td></tr></table></figure><h3><span id="ログフォーマットは">ログフォーマットは？</span></h3><p>標準のフォーマットは<code>tag: [time, &#123;&quot;key1&quot;:&quot;value1&quot;, &quot;key2&quot;:&quot;value2&quot;, &quot;key3&quot;:&quot;value3&quot;&#125;]</code>というもの。</p><p>タグがファイル名として使用され、タグとタイムスタンプ以外はJSON形式になっている。</p><h2><span id="ログファイル名をカスタマイズしたい">ログファイル名をカスタマイズしたい</span></h2><p>ログファイル名はタグが使用されるので、タグ名をファイル名として整形すれば希望のログファイル名を設定できる。<br><code>docker-compose</code>で起動している場合、docker-composeのオプションでタグを調整する。</p><p><code>logging</code>の<code>options</code>に<code>tag: &quot;logfile_name_$&#123;DATE_YYYYMMDD&#125;.log&quot;</code>のような設定を行う。<br>dateコマンドなどでYYYYMMDD形式に整形した日付を環境変数<strong>DATE_YYYYMMDD</strong>として定義する。</p><p>ログは<code>/log/logfile_name_YYYYMMDD.log</code>のようなファイルで生成される。</p><h3><span id="docker-composeymlタグ修正版">docker-compose.ymlタグ修正版</span></h3><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&#x27;3.5&#x27;</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">web1:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">nginx:latest</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;8888:80&quot;</span> </span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluent-bit</span></span><br><span class="line">    <span class="attr">command:</span> [<span class="string">nginx-debug</span>, <span class="string">&#x27;-g&#x27;</span>, <span class="string">&#x27;daemon off;&#x27;</span>]</span><br><span class="line">    <span class="attr">logging:</span></span><br><span class="line">      <span class="attr">driver:</span> <span class="string">fluentd</span></span><br><span class="line">      <span class="attr">options:</span></span><br><span class="line">        <span class="attr">fluentd-address:</span> <span class="string">&quot;localhost:24224&quot;</span></span><br><span class="line">        <span class="attr">fluentd-async-connect:</span> <span class="string">&quot;false&quot;</span></span><br><span class="line">        <span class="attr">tag:</span> <span class="string">&quot;logfile_name_$&#123;DATE_YYYYMMDD&#125;.log&quot;</span></span><br><span class="line">  <span class="attr">web2:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">nginx:latest</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;8889:80&quot;</span> </span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluent-bit</span></span><br><span class="line">    <span class="attr">command:</span> [<span class="string">nginx-debug</span>, <span class="string">&#x27;-g&#x27;</span>, <span class="string">&#x27;daemon off;&#x27;</span>]</span><br><span class="line">    <span class="attr">logging:</span></span><br><span class="line">      <span class="attr">driver:</span> <span class="string">fluentd</span></span><br><span class="line">      <span class="attr">options:</span></span><br><span class="line">        <span class="attr">fluentd-address:</span> <span class="string">&quot;localhost:24224&quot;</span></span><br><span class="line">        <span class="attr">fluentd-async-connect:</span> <span class="string">&quot;false&quot;</span></span><br><span class="line">        <span class="attr">tag:</span> <span class="string">&quot;logfile_name_$&#123;DATE_YYYYMMDD&#125;.log&quot;</span></span><br><span class="line">  <span class="attr">fluent-bit:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">fluent/fluent-bit</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">./log:/log:rw</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;24224:24224&quot;</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;ファイルに出力する&quot;&gt;ファイルに出力する&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;ファイルへの出力は&lt;a href=&quot;https://docs.fluentbit.io/manual/pipeline/outputs/file&quot;&gt;FileOutputプラグイン&lt;/</summary>
      
    
    
    
    <category term="Container" scheme="https://www.nullpo.io/categories/Container/"/>
    
    <category term="Logging" scheme="https://www.nullpo.io/categories/Logging/"/>
    
    
    <category term="Docker" scheme="https://www.nullpo.io/tags/Docker/"/>
    
    <category term="docker-compose" scheme="https://www.nullpo.io/tags/docker-compose/"/>
    
    <category term="Fluent-Bit" scheme="https://www.nullpo.io/tags/Fluent-Bit/"/>
    
  </entry>
  
  <entry>
    <title>EFKスタックをdocker-composeでマルチノードを構成する</title>
    <link href="https://www.nullpo.io/2021/08/15/logging-efk-stack-multinode/"/>
    <id>https://www.nullpo.io/2021/08/15/logging-efk-stack-multinode/</id>
    <published>2021-08-15T04:44:00.000Z</published>
    <updated>2021-08-15T14:58:28.324Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="efk-composeをマルチノード化する">EFK Composeをマルチノード化する</span></h2><p><a href="https://docs.fluentd.org/v/0.12/articles/docker-logging-efk-compose">Docker Logging Efk Compose</a>で、docker-composeを使ったELKスタックの例があるが、これをElasticSearchのマルチノード構成にする。</p><h3><span id="docker-compsoeyml">docker-compsoe.yml</span></h3><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&#x27;3.7&#x27;</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">web:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">httpd</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;8080:80&quot;</span></span><br><span class="line">    <span class="attr">links:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluentd</span></span><br><span class="line">    <span class="attr">logging:</span></span><br><span class="line">      <span class="attr">driver:</span> <span class="string">&quot;fluentd&quot;</span></span><br><span class="line">      <span class="attr">options:</span></span><br><span class="line">        <span class="attr">fluentd-address:</span> <span class="string">&quot;localhost:24224&quot;</span></span><br><span class="line">        <span class="attr">fluentd-async-connect:</span> <span class="string">&quot;false&quot;</span></span><br><span class="line">        <span class="attr">tag:</span> <span class="string">httpd.access</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">elastic</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">fluentd:</span></span><br><span class="line">    <span class="attr">build:</span> <span class="string">./fluentd</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./fluentd/conf:/fluentd/etc</span></span><br><span class="line">    <span class="attr">links:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">es01</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">es02</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">es03</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;24224:24224&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;24224:24224/udp&quot;</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">elastic</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">es01:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">docker.elastic.co/elasticsearch/elasticsearch:7.12.1</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">es01</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">node.name=es01</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">cluster.name=es-docker-cluster</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">discovery.seed_hosts=es02,es03</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">cluster.initial_master_nodes=es01,es02,es03</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">bootstrap.memory_lock=true</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;ES_JAVA_OPTS=-Xms512m -Xmx512m&quot;</span></span><br><span class="line">    <span class="attr">ulimits:</span></span><br><span class="line">      <span class="attr">memlock:</span></span><br><span class="line">        <span class="attr">soft:</span> <span class="number">-1</span></span><br><span class="line">        <span class="attr">hard:</span> <span class="number">-1</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./data/data01:/usr/share/elasticsearch/data:rw</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">9200</span><span class="string">:9200</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">elastic</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">es02:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">docker.elastic.co/elasticsearch/elasticsearch:7.12.1</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">es02</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">node.name=es02</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">cluster.name=es-docker-cluster</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">discovery.seed_hosts=es01,es03</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">cluster.initial_master_nodes=es01,es02,es03</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">bootstrap.memory_lock=true</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;ES_JAVA_OPTS=-Xms512m -Xmx512m&quot;</span></span><br><span class="line">    <span class="attr">ulimits:</span></span><br><span class="line">      <span class="attr">memlock:</span></span><br><span class="line">        <span class="attr">soft:</span> <span class="number">-1</span></span><br><span class="line">        <span class="attr">hard:</span> <span class="number">-1</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./data/data02:/usr/share/elasticsearch/data:rw</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">elastic</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">es03:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">docker.elastic.co/elasticsearch/elasticsearch:7.12.1</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">es03</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">node.name=es03</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">cluster.name=es-docker-cluster</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">discovery.seed_hosts=es01,es02</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">cluster.initial_master_nodes=es01,es02,es03</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">bootstrap.memory_lock=true</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;ES_JAVA_OPTS=-Xms512m -Xmx512m&quot;</span></span><br><span class="line">    <span class="attr">ulimits:</span></span><br><span class="line">      <span class="attr">memlock:</span></span><br><span class="line">        <span class="attr">soft:</span> <span class="number">-1</span></span><br><span class="line">        <span class="attr">hard:</span> <span class="number">-1</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./data/data03:/usr/share/elasticsearch/data:rw</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">elastic</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">kib01:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">docker.elastic.co/kibana/kibana:7.12.1</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">kib01</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">5601</span><span class="string">:5601</span></span><br><span class="line">    <span class="attr">links:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">es01</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">es02</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">es03</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="attr">ELASTICSEARCH_URL:</span> <span class="string">http://es01:9200</span></span><br><span class="line">      <span class="attr">ELASTICSEARCH_HOSTS:</span> <span class="string">&#x27;[&quot;http://es01:9200&quot;,&quot;http://es02:9200&quot;,&quot;http://es03:9200&quot;]&#x27;</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">elastic</span></span><br><span class="line"></span><br><span class="line"><span class="attr">networks:</span></span><br><span class="line">  <span class="attr">elastic:</span></span><br><span class="line">    <span class="attr">driver:</span> <span class="string">bridge</span></span><br></pre></td></tr></table></figure><h3><span id="fluentdconffluentconf">fluentd/conf/fluent.conf</span></h3><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"># fluentd/conf/fluent.conf</span><br><span class="line"><span class="tag">&lt;<span class="name">source</span>&gt;</span></span><br><span class="line">  @type forward</span><br><span class="line">  port 24224</span><br><span class="line">  bind 0.0.0.0</span><br><span class="line"><span class="tag">&lt;/<span class="name">source</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">match</span> *<span class="attr">.</span>**&gt;</span></span><br><span class="line">  @type copy</span><br><span class="line">  <span class="tag">&lt;<span class="name">store</span>&gt;</span></span><br><span class="line">    @type elasticsearch</span><br><span class="line">    host es01</span><br><span class="line">    port 9200</span><br><span class="line">    logstash_format true</span><br><span class="line">    logstash_prefix fluentd</span><br><span class="line">    logstash_dateformat %Y%m%d</span><br><span class="line">    include_tag_key true</span><br><span class="line">    type_name access_log</span><br><span class="line">    tag_key @log_name</span><br><span class="line">    flush_interval 1s</span><br><span class="line">    reconnect_on_error true</span><br><span class="line">    reload_on_failure true</span><br><span class="line">    reload_connections false</span><br><span class="line">  <span class="tag">&lt;/<span class="name">store</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">store</span>&gt;</span></span><br><span class="line">    @type stdout</span><br><span class="line">  <span class="tag">&lt;/<span class="name">store</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">match</span>&gt;</span></span><br></pre></td></tr></table></figure><h3><span id="fluentddockerfile">fluentd/Dockerfile</span></h3><figure class="highlight dockerfile"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># fluentd/Dockerfile</span></span><br><span class="line"><span class="keyword">FROM</span> fluent/fluentd:latest</span><br><span class="line"><span class="keyword">RUN</span><span class="bash"> gem install fluent-plugin-elasticsearch --no-rdoc --no-ri</span></span><br></pre></td></tr></table></figure><h2><span id="kibanaの状態">Kibanaの状態</span></h2><p>Kibanaにアクセス。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack-multinode/2021-08-15-logging-efk-stack-multinode-kibana-01.png" alt="Kibana width=640"></p><p>左上のメニューから<strong>Stack Managemet</strong>を選択。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack-multinode/2021-08-15-logging-efk-stack-multinode-kibana-02.png" alt="Kibana width=640"></p><p><strong>Index Management</strong>を選択。<code>fluentd-YYYYMMDD</code>の形式でインデックスが登録されている。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack-multinode/2021-08-15-logging-efk-stack-multinode-kibana-03.png" alt="Kibana width=640"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;efk-composeをマルチノード化する&quot;&gt;EFK Composeをマルチノード化する&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://docs.fluentd.org/v/0.12/articles/docker-logging-ef</summary>
      
    
    
    
    <category term="Container" scheme="https://www.nullpo.io/categories/Container/"/>
    
    <category term="Logging" scheme="https://www.nullpo.io/categories/Logging/"/>
    
    
    <category term="Docker" scheme="https://www.nullpo.io/tags/Docker/"/>
    
    <category term="docker-compose" scheme="https://www.nullpo.io/tags/docker-compose/"/>
    
    <category term="Fluent-Bit" scheme="https://www.nullpo.io/tags/Fluent-Bit/"/>
    
    <category term="ElasticSearch" scheme="https://www.nullpo.io/tags/ElasticSearch/"/>
    
    <category term="Kibana" scheme="https://www.nullpo.io/tags/Kibana/"/>
    
  </entry>
  
  <entry>
    <title>SplashのLuaスクリプトでgsubやgmatchがうごかない</title>
    <link href="https://www.nullpo.io/2021/08/09/python-scrapy-splash-luasandobox/"/>
    <id>https://www.nullpo.io/2021/08/09/python-scrapy-splash-luasandobox/</id>
    <published>2021-08-09T07:19:00.000Z</published>
    <updated>2021-08-09T07:49:37.251Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="splash上で正規表現動かない">Splash上で正規表現動かない</span></h2><p>Splash上のLuaスクリプトで特定の標準ライブラリが動かない・・・正規表現を使うタイプのものが動かないようだ。</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#x27;Error happened while executing Lua script&#x27;, &#x27;info&#x27;: &#123;&#x27;source&#x27;: &#x27;[string <span class="string">&quot;...&quot;</span>]&#x27;, &#x27;line_number&#x27;: <span class="number">107</span>, &#x27;error&#x27;: <span class="string">&quot;attempt to call field &#x27;gsub&#x27; (a nil value)&quot;</span>, &#x27;type&#x27;: &#x27;LUA_ERROR&#x27;, &#x27;message&#x27;: &#x27;Lua error: [string <span class="string">&quot;...&quot;</span>]:<span class="number">107</span>: attempt to call field \&#x27;gsub\&#x27; (a nil value)&#x27;&#125;&#125;</span><br></pre></td></tr></table></figure><h2><span id="splashの制限によるものだ">Splashの制限によるものだ</span></h2><p>Splashの<a href="https://github.com/scrapinghub/splash/blob/master/splash/lua_modules/sandbox.lua">Luaサンドボックス</a>でリソース食いのものが制限されている。</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">local</span> _string = &#123;</span><br><span class="line">  <span class="built_in">byte</span> = <span class="built_in">string</span>.<span class="built_in">byte</span>,</span><br><span class="line">  <span class="built_in">char</span> = <span class="built_in">string</span>.<span class="built_in">char</span>,</span><br><span class="line">  <span class="built_in">find</span> = <span class="built_in">string</span>.<span class="built_in">find</span>,</span><br><span class="line">  <span class="built_in">format</span> = <span class="built_in">string</span>.<span class="built_in">format</span>,</span><br><span class="line"><span class="comment">--  gmatch = string.gmatch,     -- can be CPU intensive</span></span><br><span class="line"><span class="comment">--  gsub = string.gsub,         -- can be CPU intensive; can result in arbitrary native code execution (in 5.1)?</span></span><br><span class="line">  <span class="built_in">len</span> = <span class="built_in">string</span>.<span class="built_in">len</span>,</span><br><span class="line">  <span class="built_in">lower</span> = <span class="built_in">string</span>.<span class="built_in">lower</span>,</span><br><span class="line"><span class="comment">--  match = string.match,       -- can be CPU intensive</span></span><br><span class="line"><span class="comment">--  rep = string.rep,           -- can eat memory</span></span><br><span class="line">  <span class="built_in">reverse</span> = <span class="built_in">string</span>.<span class="built_in">reverse</span>,</span><br><span class="line">  <span class="built_in">sub</span> = <span class="built_in">string</span>.<span class="built_in">sub</span>,</span><br><span class="line">  <span class="built_in">upper</span> = <span class="built_in">string</span>.<span class="built_in">upper</span>,</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2><span id="どうすればいい">どうすればいい？</span></h2><p>Splash起動時に<code>--disable-lua-sandbox</code>でLuaサンドボックスを無効化すればいい。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;splash上で正規表現動かない&quot;&gt;Splash上で正規表現動かない&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Splash上のLuaスクリプトで特定の標準ライブラリが動かない・・・正規表現を使うタイプのものが動かないようだ。&lt;/p&gt;
&lt;figure class=&quot;</summary>
      
    
    
    
    <category term="Python" scheme="https://www.nullpo.io/categories/Python/"/>
    
    <category term="Lua" scheme="https://www.nullpo.io/categories/Lua/"/>
    
    
    <category term="Python3" scheme="https://www.nullpo.io/tags/Python3/"/>
    
    <category term="Scrapy" scheme="https://www.nullpo.io/tags/Scrapy/"/>
    
    <category term="Splash" scheme="https://www.nullpo.io/tags/Splash/"/>
    
  </entry>
  
  <entry>
    <title>非対話型でプライベートリポジトリをクローンする</title>
    <link href="https://www.nullpo.io/2021/08/09/git-github-clone-nonintaractive/"/>
    <id>https://www.nullpo.io/2021/08/09/git-github-clone-nonintaractive/</id>
    <published>2021-08-09T07:13:00.000Z</published>
    <updated>2021-08-09T07:49:37.140Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="git-cloneをssh経由で実行する">git cloneをssh経由で実行する</span></h2><p>SSHが利用可能にする。<br>たとえばsshのconfigが以下のような設定の場合</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">Host github-USER_Y</span><br><span class="line">HostName github.com</span><br><span class="line">User git</span><br><span class="line">IdentityFile ~/.ssh/USER_Y/priv.key</span><br><span class="line">IdentitiesOnly yes</span><br><span class="line">AddKeysToAgent yes</span><br></pre></td></tr></table></figure><p>実行は以下</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> git@github-USER_Y:&#123;GITユーザ名&#125;/&#123;リポジトリ名&#125;.git</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;git-cloneをssh経由で実行する&quot;&gt;git cloneをssh経由で実行する&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;SSHが利用可能にする。&lt;br&gt;たとえばsshのconfigが以下のような設定の場合&lt;/p&gt;
&lt;figure class=&quot;highlig</summary>
      
    
    
    
    <category term="Git" scheme="https://www.nullpo.io/categories/Git/"/>
    
    
    <category term="Git" scheme="https://www.nullpo.io/tags/Git/"/>
    
    <category term="GitHub" scheme="https://www.nullpo.io/tags/GitHub/"/>
    
  </entry>
  
  <entry>
    <title>リモートブランチを消してしまったときに</title>
    <link href="https://www.nullpo.io/2021/08/09/git-github-deleted-remote-branch/"/>
    <id>https://www.nullpo.io/2021/08/09/git-github-deleted-remote-branch/</id>
    <published>2021-08-09T07:03:00.000Z</published>
    <updated>2021-08-09T07:30:11.768Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="リモートブランチが消えた時に">リモートブランチが消えた時に</span></h2><p>リモートのブランチが消えてしまった？</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> &gt; git pull</span><br><span class="line">Your configuration specifies to merge with the ref <span class="string">&#x27;refs/heads/issue90&#x27;</span></span><br><span class="line">from the remote, but no such ref was fetched.</span><br></pre></td></tr></table></figure><h2><span id="ローカルブランチがあるなら">ローカルブランチがあるなら</span></h2><p>ローカルがあるならpushするだけ</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> &gt; git push origin issue90</span><br><span class="line">Enumerating objects: <span class="number">5</span>, done.</span><br><span class="line">Counting objects: <span class="number">100</span>% (<span class="number">5</span>/<span class="number">5</span>), done.</span><br><span class="line">Delta compression <span class="keyword">using</span> up to 16 threads</span><br><span class="line">Compressing objects: <span class="number">100</span>% (<span class="number">3</span>/<span class="number">3</span>), done.</span><br><span class="line">Writing objects: <span class="number">100</span>% (<span class="number">3</span>/<span class="number">3</span>), <span class="number">555</span> bytes | <span class="number">555.00</span> KiB/s, done.</span><br><span class="line">Total <span class="number">3</span> (delta <span class="number">2</span>), reused <span class="number">0</span> (delta <span class="number">0</span>)</span><br><span class="line">remote: Resolving deltas: <span class="number">100</span>% (<span class="number">2</span>/<span class="number">2</span>), completed with <span class="number">2</span> local objects.</span><br><span class="line">remote:</span><br><span class="line">remote: Create a pull request <span class="keyword">for</span> <span class="string">&#x27;issue90&#x27;</span> on GitHub by visiting:</span><br><span class="line">remote:      https://github.com/&#123;USER&#125;/&#123;REPO&#125;/pull/new/issue90</span><br><span class="line">remote:</span><br><span class="line">To XXXXXXXXXXXXXX:&#123;USER&#125;/&#123;REPO&#125;</span><br><span class="line"> * [<span class="type">new</span> <span class="type">branch</span>]      issue90 -&gt; issue90</span><br></pre></td></tr></table></figure><p>pullすると正常にリモートを参照できている</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> &gt; git pull</span><br><span class="line">Already up to date.</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;リモートブランチが消えた時に&quot;&gt;リモートブランチが消えた時に&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;リモートのブランチが消えてしまった？&lt;/p&gt;
&lt;figure class=&quot;highlight powershell&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=</summary>
      
    
    
    
    <category term="Git" scheme="https://www.nullpo.io/categories/Git/"/>
    
    
    <category term="Git" scheme="https://www.nullpo.io/tags/Git/"/>
    
    <category term="GitHub" scheme="https://www.nullpo.io/tags/GitHub/"/>
    
  </entry>
  
  <entry>
    <title>OpenSSLでオレオレ証明書を作るワンライナー</title>
    <link href="https://www.nullpo.io/2021/06/05/linux-openssl-req-certs-oneliner/"/>
    <id>https://www.nullpo.io/2021/06/05/linux-openssl-req-certs-oneliner/</id>
    <published>2021-06-04T22:25:00.000Z</published>
    <updated>2021-08-09T07:30:11.949Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="ワンライナーで証明書を発行する">ワンライナーで証明書を発行する</span></h2><p>オレオレ証明書がとりあえず必要だけど、対話的に入力せずにワンライナーでつくりたい。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">HOSTNAME=www.example.com</span><br><span class="line"></span><br><span class="line"><span class="variable">$openssl</span> req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj <span class="string">&quot;/C=JP/ST=Tokyo/L=Chiyoda/O=Dis/CN=<span class="variable">$&#123;HOSTNAME&#125;</span>&quot;</span> -keyout <span class="variable">$&#123;HOSTNAME&#125;</span>.key -out <span class="variable">$&#123;HOSTNAME&#125;</span>.cert</span><br><span class="line">Generating a RSA private key</span><br><span class="line">...++++</span><br><span class="line">...............................................................................................................................................................................................................................................................................................................................................................................................................................................++++</span><br><span class="line">writing new private key to <span class="string">&#x27;www.example.com.key&#x27;</span></span><br><span class="line">-----</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;ワンライナーで証明書を発行する&quot;&gt;ワンライナーで証明書を発行する&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;オレオレ証明書がとりあえず必要だけど、対話的に入力せずにワンライナーでつくりたい。&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;t</summary>
      
    
    
    
    <category term="Linux" scheme="https://www.nullpo.io/categories/Linux/"/>
    
    
    <category term="OpenSSL" scheme="https://www.nullpo.io/tags/OpenSSL/"/>
    
  </entry>
  
  <entry>
    <title>Gitで追跡を維持してファイル名を変更する</title>
    <link href="https://www.nullpo.io/2021/06/04/git-renamed/"/>
    <id>https://www.nullpo.io/2021/06/04/git-renamed/</id>
    <published>2021-06-04T12:18:00.000Z</published>
    <updated>2021-08-09T07:49:37.175Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="フォルダ構成を変えると追跡できなくなる">フォルダ構成を変えると追跡できなくなる</span></h2><p>ファイルを追跡したまま移動するには・・・？</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> &gt; git status</span><br><span class="line">On branch master</span><br><span class="line">Your branch is up to date with <span class="string">&#x27;origin/master&#x27;</span>.</span><br><span class="line"></span><br><span class="line">Changes not staged <span class="keyword">for</span> commit:</span><br><span class="line">  (use <span class="string">&quot;git add/rm &lt;file&gt;...&quot;</span> to update what will be committed)</span><br><span class="line">  (use <span class="string">&quot;git restore &lt;file&gt;...&quot;</span> to discard changes <span class="keyword">in</span> working directory)</span><br><span class="line">        deleted:    Dockerfile</span><br><span class="line">        deleted:    app.py</span><br><span class="line">        deleted:    docker<span class="literal">-compose</span>.yml</span><br><span class="line">        deleted:    requirements.txt</span><br><span class="line"></span><br><span class="line">Untracked files:</span><br><span class="line">  (use <span class="string">&quot;git add &lt;file&gt;...&quot;</span> to include <span class="keyword">in</span> what will be committed)</span><br><span class="line">        webapp/</span><br></pre></td></tr></table></figure><h2><span id="追跡を維持したまま移動するにはgit-mvを使う">追跡を維持したまま移動するにはgit mvを使う？</span></h2><p><code>git mv</code>を使えば<strong>renamed</strong>と認識されるが、ワイルドカードは使えないしめんどくさい。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> &gt; git <span class="built_in">mv</span> app.py webapp</span><br><span class="line"><span class="built_in">PS</span> &gt; git <span class="built_in">mv</span> docker<span class="literal">-compose</span>.yml webapp</span><br><span class="line"><span class="built_in">PS</span> &gt; git <span class="built_in">mv</span> Dockerfile webapp</span><br><span class="line"><span class="built_in">PS</span> &gt; git <span class="built_in">mv</span> requirements.txt webapp</span><br><span class="line"><span class="built_in">PS</span> &gt; git status</span><br><span class="line">On branch master</span><br><span class="line">Your branch is up to date with <span class="string">&#x27;origin/master&#x27;</span>.</span><br><span class="line"></span><br><span class="line">Changes to be committed:</span><br><span class="line">  (use <span class="string">&quot;git restore --staged &lt;file&gt;...&quot;</span> to unstage)</span><br><span class="line">        renamed:    Dockerfile -&gt; webapp/Dockerfile</span><br><span class="line">        renamed:    app.py -&gt; webapp/app.py</span><br><span class="line">        renamed:    docker<span class="literal">-compose</span>.yml -&gt; webapp/docker<span class="literal">-compose</span>.yml</span><br><span class="line">        renamed:    requirements.txt -&gt; webapp/requirements.txt</span><br></pre></td></tr></table></figure><h2><span id="いやいや-ファイル名やフォルダ構成を変えるだけでgit-mvは必要ない">いやいや、ファイル名やフォルダ構成を変えるだけでgit mvは必要ない</span></h2><p>gitはファイルの内容で判断するので、<code>-A</code>オプションを実行するこで<strong>renamed</strong>になる。<br><code>-A</code>を付けることで、全ての変更が<strong>add</strong>される。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">PS &gt; git add . -A</span><br><span class="line">warning: CRLF will be replaced by LF in webapp/Dockerfile.</span><br><span class="line">The file will have its original line endings in your working directory</span><br><span class="line">warning: CRLF will be replaced by LF in webapp/app.py.</span><br><span class="line">The file will have its original line endings in your working directory</span><br><span class="line">warning: CRLF will be replaced by LF in webapp/docker-compose.yml.</span><br><span class="line">The file will have its original line endings in your working directory</span><br><span class="line">warning: CRLF will be replaced by LF in webapp/requirements.txt.</span><br><span class="line">The file will have its original line endings in your working directory</span><br><span class="line">PS &gt; git status</span><br><span class="line">On branch master</span><br><span class="line">Your branch is up to date with &#x27;origin/master&#x27;.</span><br><span class="line"></span><br><span class="line">Changes to be committed:</span><br><span class="line">  (use &quot;git restore --staged &lt;file&gt;...&quot; to unstage)</span><br><span class="line">        renamed:    Dockerfile -&gt; webapp/Dockerfile</span><br><span class="line">        renamed:    app.py -&gt; webapp/app.py</span><br><span class="line">        renamed:    docker-compose.yml -&gt; webapp/docker-compose.yml</span><br><span class="line">        renamed:    requirements.txt -&gt; webapp/requirements.txt</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;フォルダ構成を変えると追跡できなくなる&quot;&gt;フォルダ構成を変えると追跡できなくなる&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;ファイルを追跡したまま移動するには・・・？&lt;/p&gt;
&lt;figure class=&quot;highlight powershell&quot;&gt;&lt;table&gt;&lt;</summary>
      
    
    
    
    <category term="Git" scheme="https://www.nullpo.io/categories/Git/"/>
    
    
    <category term="Git" scheme="https://www.nullpo.io/tags/Git/"/>
    
    <category term="Git for Windows" scheme="https://www.nullpo.io/tags/Git-for-Windows/"/>
    
  </entry>
  
  <entry>
    <title>Dockerでプライベートレジストリにイメージ登録する</title>
    <link href="https://www.nullpo.io/2021/06/04/docker-compose-registry/"/>
    <id>https://www.nullpo.io/2021/06/04/docker-compose-registry/</id>
    <published>2021-06-03T22:52:00.000Z</published>
    <updated>2021-08-09T07:30:11.516Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="dockerのプライベートレジストリをつかう">Dockerのプライベートレジストリをつかう</span></h2><ul><li>ローカルのデータファオルダ<code>data/</code>にリポジトリ作成</li><li>証明書は<code>./certs</code>に保存</li></ul><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&#x27;3&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">    <span class="attr">registry:</span></span><br><span class="line">        <span class="attr">image:</span> <span class="string">registry:latest</span></span><br><span class="line">        <span class="comment">#restart: always</span></span><br><span class="line">        <span class="attr">ports:</span></span><br><span class="line">            <span class="bullet">-</span> <span class="number">5000</span><span class="string">:5000</span></span><br><span class="line">        <span class="attr">volumes:</span></span><br><span class="line">            <span class="bullet">-</span> <span class="string">./data:/var/lib/registry:rw</span></span><br><span class="line">            <span class="bullet">-</span> <span class="string">./certs:/certs</span></span><br><span class="line">        <span class="attr">environment:</span></span><br><span class="line">            <span class="attr">REGISTRY_HTTP_TLS_CERTIFICATE:</span> <span class="string">/certs/myregistry.cert</span></span><br><span class="line">            <span class="attr">REGISTRY_HTTP_TLS_KEY:</span> <span class="string">/certs/myregistry.key</span></span><br></pre></td></tr></table></figure><p>起動する</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker-compose</span> <span class="string">up</span></span><br><span class="line"><span class="string">Docker</span> <span class="string">Compose</span> <span class="string">is</span> <span class="string">now</span> <span class="string">in</span> <span class="string">the</span> <span class="string">Docker</span> <span class="string">CLI,</span> <span class="string">try</span> <span class="string">`docker</span> <span class="string">compose</span> <span class="string">up`</span></span><br><span class="line"></span><br><span class="line"><span class="string">Starting</span> <span class="string">docker-registry_registry_1</span> <span class="string">...</span> <span class="string">done</span></span><br><span class="line"><span class="string">registry_1</span>  <span class="string">|</span> <span class="string">time=&quot;2021-06-04T13:33:11.1124135Z&quot;</span> <span class="string">level=warning</span> <span class="string">msg=&quot;No</span> <span class="string">HTTP</span> <span class="string">secret</span> <span class="string">provided</span> <span class="bullet">-</span> <span class="string">generated</span> <span class="string">random</span> <span class="string">secret.</span> <span class="string">This</span> <span class="string">may</span> <span class="string">cause</span> <span class="string">problems</span> <span class="string">with</span> <span class="string">uploads</span> <span class="string">if</span> <span class="string">multiple</span> <span class="string">registries</span> <span class="string">are</span> <span class="string">behind</span> <span class="string">a</span> <span class="string">load-balancer.</span> <span class="string">To</span> <span class="string">provide</span> <span class="string">a</span> <span class="string">shared</span> <span class="string">secret,</span> <span class="string">fill</span> <span class="string">in</span> <span class="string">http.secret</span> <span class="string">in</span> <span class="string">the</span> <span class="string">configuration</span> <span class="string">file</span> <span class="string">or</span> <span class="string">set</span> <span class="string">the</span> <span class="string">REGISTRY_HTTP_SECRET</span> <span class="string">environment</span> <span class="string">variable.&quot;</span> <span class="string">go.version=go1.11.2</span> <span class="string">instance.id=aa8cf638-64be-49d6-b66a-5f6fd1167cd4</span> <span class="string">service=registry</span> <span class="string">version=v2.7.1</span></span><br><span class="line"><span class="string">registry_1</span>  <span class="string">|</span> <span class="string">time=&quot;2021-06-04T13:33:11.112522Z&quot;</span> <span class="string">level=info</span> <span class="string">msg=&quot;redis</span> <span class="string">not</span> <span class="string">configured&quot;</span> <span class="string">go.version=go1.11.2</span> <span class="string">instance.id=aa8cf638-64be-49d6-b66a-5f6fd1167cd4</span> <span class="string">service=registry</span> <span class="string">version=v2.7.1</span></span><br><span class="line"><span class="string">registry_1</span>  <span class="string">|</span> <span class="string">time=&quot;2021-06-04T13:33:11.1126419Z&quot;</span> <span class="string">level=info</span> <span class="string">msg=&quot;Starting</span> <span class="string">upload</span> <span class="string">purge</span> <span class="string">in</span> <span class="string">29m0s&quot;</span> <span class="string">go.version=go1.11.2</span> <span class="string">instance.id=aa8cf638-64be-49d6-b66a-5f6fd1167cd4</span> <span class="string">service=registry</span> <span class="string">version=v2.7.1</span></span><br><span class="line"><span class="string">registry_1</span>  <span class="string">|</span> <span class="string">time=&quot;2021-06-04T13:33:11.1199872Z&quot;</span> <span class="string">level=info</span> <span class="string">msg=&quot;using</span> <span class="string">inmemory</span> <span class="string">blob</span> <span class="string">descriptor</span> <span class="string">cache&quot;</span> <span class="string">go.version=go1.11.2</span> <span class="string">instance.id=aa8cf638-64be-49d6-b66a-5f6fd1167cd4</span> <span class="string">service=registry</span> <span class="string">version=v2.7.1</span></span><br><span class="line"><span class="string">registry_1</span>  <span class="string">|</span> <span class="string">time=&quot;2021-06-04T13:33:11.1256163Z&quot;</span> <span class="string">level=info</span> <span class="string">msg=&quot;listening</span> <span class="string">on</span> [<span class="string">::</span>]<span class="string">:5000,</span> <span class="string">tls&quot;</span> <span class="string">go.version=go1.11.2</span> <span class="string">instance.id=aa8cf638-64be-49d6-b66a-5f6fd1167cd4</span> <span class="string">service=registry</span> <span class="string">version=v2.7.1</span></span><br></pre></td></tr></table></figure><h2><span id="プライベートリポジトリにイメージを登録する">プライベートリポジトリにイメージを登録する</span></h2><h3><span id="dockerイメージにタグ付けする">dockerイメージにタグ付けする</span></h3><p><code>[REGISTRYHOST/][USERNAME/]NAME[:TAG]</code>がタグになる。<br>今回のレジストリではUSERNAMEはないので<code>[REGISTRYHOST/]NAME[:TAG]</code>となり、<code>localhost:5000/ubuntu:latest</code>である。</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">pull</span> <span class="string">ubuntu:latest</span></span><br><span class="line"><span class="attr">latest:</span> <span class="string">Pulling</span> <span class="string">from</span> <span class="string">library/ubuntu</span></span><br><span class="line"><span class="attr">345e3491a907:</span> <span class="string">Pull</span> <span class="string">complete</span></span><br><span class="line"><span class="attr">57671312ef6f:</span> <span class="string">Pull</span> <span class="string">complete</span></span><br><span class="line"><span class="attr">5e9250ddb7d0:</span> <span class="string">Pull</span> <span class="string">complete</span></span><br><span class="line"><span class="attr">Digest:</span> <span class="string">sha256:adf73ca014822ad8237623d388cedf4d5346aa72c270c5acc01431cc93e18e2d</span></span><br><span class="line"><span class="attr">Status:</span> <span class="string">Downloaded</span> <span class="string">newer</span> <span class="string">image</span> <span class="string">for</span> <span class="string">ubuntu:latest</span></span><br><span class="line"><span class="string">docker.io/library/ubuntu:latest</span></span><br><span class="line"></span><br><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">image</span> <span class="string">ls</span> <span class="string">ubuntu</span></span><br><span class="line"><span class="string">REPOSITORY</span>   <span class="string">TAG</span>       <span class="string">IMAGE</span> <span class="string">ID</span>       <span class="string">CREATED</span>       <span class="string">SIZE</span></span><br><span class="line"><span class="string">ubuntu</span>       <span class="string">latest</span>    <span class="string">7e0aa2d69a15</span>   <span class="number">5</span> <span class="string">weeks</span> <span class="string">ago</span>   <span class="number">72.</span><span class="string">7MB</span></span><br><span class="line"></span><br><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">tag</span> <span class="string">ubuntu:latest</span> <span class="string">localhost:5000/ubuntu:latest</span></span><br><span class="line"></span><br><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">image</span> <span class="string">ls</span> <span class="string">localhost:5000/ubuntu</span></span><br><span class="line"><span class="string">REPOSITORY</span>              <span class="string">TAG</span>       <span class="string">IMAGE</span> <span class="string">ID</span>       <span class="string">CREATED</span>       <span class="string">SIZE</span></span><br><span class="line"><span class="string">localhost:5000/ubuntu</span>   <span class="string">latest</span>    <span class="string">7e0aa2d69a15</span>   <span class="number">5</span> <span class="string">weeks</span> <span class="string">ago</span>   <span class="number">72.</span><span class="string">7MB</span></span><br></pre></td></tr></table></figure><h3><span id="dockerイメージをpushする">Dockerイメージをpushする</span></h3><p>対象イメージをpushすると設定した<strong>REGISTRYHOST</strong>にpushされる。</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">push</span> <span class="string">localhost:5000/ubuntu:latest</span></span><br><span class="line"><span class="string">The</span> <span class="string">push</span> <span class="string">refers</span> <span class="string">to</span> <span class="string">repository</span> [<span class="string">localhost:5000/ubuntu</span>]</span><br><span class="line"><span class="attr">2f140462f3bc:</span> <span class="string">Pushed</span></span><br><span class="line"><span class="attr">63c99163f472:</span> <span class="string">Pushed</span></span><br><span class="line"><span class="attr">ccdbb80308cc:</span> <span class="string">Pushed</span></span><br><span class="line"><span class="attr">latest: digest: sha256:86ac87f73641c920fb42cc9612d4fb57b5626b56ea2a19b894d0673fd5b4f2e9 size:</span> <span class="number">943</span></span><br></pre></td></tr></table></figure><h3><span id="dockerイメージをpullする">Dockerイメージをpullする</span></h3><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">image</span> <span class="string">ls</span></span><br><span class="line"><span class="string">ubuntu</span>                                          <span class="string">latest</span>     <span class="string">7e0aa2d69a15</span>   <span class="number">6</span> <span class="string">weeks</span> <span class="string">ago</span>     <span class="number">72.</span><span class="string">7MB</span></span><br><span class="line"><span class="string">localhost:5000/ubuntu</span>                           <span class="string">latest</span>     <span class="string">7e0aa2d69a15</span>   <span class="number">6</span> <span class="string">weeks</span> <span class="string">ago</span>     <span class="number">72.</span><span class="string">7MB</span></span><br><span class="line"></span><br><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">rmi</span> <span class="string">-f</span> <span class="string">7e0aa2d69a15</span></span><br><span class="line"><span class="attr">Untagged:</span> <span class="string">ubuntu:latest</span></span><br><span class="line"><span class="attr">Untagged:</span> <span class="string">ubuntu@sha256:adf73ca014822ad8237623d388cedf4d5346aa72c270c5acc01431cc93e18e2d</span></span><br><span class="line"><span class="attr">Untagged:</span> <span class="string">localhost:5000/ubuntu:latest</span></span><br><span class="line"><span class="attr">Untagged:</span> <span class="string">localhost:5000/ubuntu@sha256:86ac87f73641c920fb42cc9612d4fb57b5626b56ea2a19b894d0673fd5b4f2e9</span></span><br><span class="line"><span class="attr">Deleted:</span> <span class="string">sha256:7e0aa2d69a153215c790488ed1fcec162015e973e49962d438e18249d16fa9bd</span></span><br><span class="line"><span class="attr">Deleted:</span> <span class="string">sha256:3dd8c8d4fd5b59d543c8f75a67cdfaab30aef5a6d99aea3fe74d8cc69d4e7bf2</span></span><br><span class="line"><span class="attr">Deleted:</span> <span class="string">sha256:8d8dceacec7085abcab1f93ac1128765bc6cf0caac334c821e01546bd96eb741</span></span><br><span class="line"><span class="attr">Deleted:</span> <span class="string">sha256:ccdbb80308cc5ef43b605ac28fac29c6a597f89f5a169bbedbb8dec29c987439</span></span><br><span class="line"></span><br><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">pull</span> <span class="string">localhost:5000/ubuntu:latest</span></span><br><span class="line"><span class="attr">latest:</span> <span class="string">Pulling</span> <span class="string">from</span> <span class="string">ubuntu</span></span><br><span class="line"><span class="attr">345e3491a907:</span> <span class="string">Pull</span> <span class="string">complete</span></span><br><span class="line"><span class="attr">57671312ef6f:</span> <span class="string">Pull</span> <span class="string">complete</span></span><br><span class="line"><span class="attr">5e9250ddb7d0:</span> <span class="string">Pull</span> <span class="string">complete</span></span><br><span class="line"><span class="attr">Digest:</span> <span class="string">sha256:86ac87f73641c920fb42cc9612d4fb57b5626b56ea2a19b894d0673fd5b4f2e9</span></span><br><span class="line"><span class="attr">Status:</span> <span class="string">Downloaded</span> <span class="string">newer</span> <span class="string">image</span> <span class="string">for</span> <span class="string">localhost:5000/ubuntu:latest</span></span><br><span class="line"><span class="string">localhost:5000/ubuntu:latest</span></span><br><span class="line"></span><br><span class="line"><span class="string">PS</span> <span class="string">&gt;</span> <span class="string">docker</span> <span class="string">image</span> <span class="string">ls</span></span><br><span class="line"><span class="string">REPOSITORY</span>                                      <span class="string">TAG</span>        <span class="string">IMAGE</span> <span class="string">ID</span>       <span class="string">CREATED</span>         <span class="string">SIZE</span></span><br><span class="line"><span class="string">localhost:5000/ubuntu</span>                           <span class="string">latest</span>     <span class="string">7e0aa2d69a15</span>   <span class="number">6</span> <span class="string">weeks</span> <span class="string">ago</span>     <span class="number">72.</span><span class="string">7MB</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;dockerのプライベートレジストリをつかう&quot;&gt;Dockerのプライベートレジストリをつかう&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;ローカルのデータファオルダ&lt;code&gt;data/&lt;/code&gt;にリポジトリ作成&lt;/li&gt;
&lt;li&gt;証明書は&lt;code&gt;</summary>
      
    
    
    
    <category term="Container" scheme="https://www.nullpo.io/categories/Container/"/>
    
    
    <category term="Docker" scheme="https://www.nullpo.io/tags/Docker/"/>
    
    <category term="docker-compose" scheme="https://www.nullpo.io/tags/docker-compose/"/>
    
  </entry>
  
  <entry>
    <title>AnsibleでUbuntuの初期設定を行う</title>
    <link href="https://www.nullpo.io/2021/05/24/ansible-linux-ubuntu-setup/"/>
    <id>https://www.nullpo.io/2021/05/24/ansible-linux-ubuntu-setup/</id>
    <published>2021-05-24T02:08:00.000Z</published>
    <updated>2021-06-04T01:59:09.293Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="ansibleでubuntuの設定を行う">AnsibleでUbuntuの設定を行う</span></h2><h3><span id="プレイブックの実行">プレイブックの実行</span></h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">ansible-playbook unattended-upgrades.yml -i hosts</span><br><span class="line">ansible-playbook install-ubuntu-packages.yml -i hosts</span><br><span class="line">ansible-playbook ufw.yml -i hosts</span><br></pre></td></tr></table></figure><h3><span id="インベントリファイルhosts">インベントリファイル「hosts」</span></h3><p>初期設定を行う<strong>init</strong>グループを設定する。</p><ul><li>ansible_user/ansible_passwordは対象Ubuntuのログインユーザ、パスワード</li><li>ansible_become_passwordはsudo時のパスワード</li></ul><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[ubuntu]</span></span><br><span class="line">target</span><br><span class="line"></span><br><span class="line"><span class="section">[ubuntu:vars]</span></span><br><span class="line"><span class="attr">ansible_python_interpreter</span>=/usr/bin/python3</span><br><span class="line"><span class="attr">ansible_port</span>=※カスタマイズしたポート※</span><br><span class="line"><span class="attr">ansible_user</span>=※ansible用ユーザ名※</span><br><span class="line"><span class="attr">ansible_ssh_private_key_file</span>=~/.ssh/id_rsa</span><br></pre></td></tr></table></figure><h3><span id="プレイブックunattended-upgradesyml">プレイブック「unattended-upgrades.yml」</span></h3><p>セキュリティパッチや推奨パッチを自動インストールする<strong>Unattended-upgrades</strong>を設定する。</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="bullet">-</span> <span class="attr">hosts:</span> <span class="string">ubuntu</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">vars:</span></span><br><span class="line">  <span class="attr">gather_facts:</span> <span class="literal">no</span></span><br><span class="line">  <span class="attr">become:</span> <span class="literal">true</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">tasks:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Configure</span> <span class="string">debconf</span></span><br><span class="line">      <span class="attr">debconf:</span> <span class="string">name=unattended-upgrades</span> <span class="string">question=unattended-upgrades/enable_auto_updates</span> <span class="string">vtype=boolean</span> <span class="string">value=&#x27;true&#x27;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">unattended-upgrades</span></span><br><span class="line">      <span class="attr">apt:</span> <span class="string">name=unattended-upgrades</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Configure</span> <span class="string">unattended-upgrades</span></span><br><span class="line">      <span class="attr">command:</span></span><br><span class="line">        <span class="attr">cmd:</span> <span class="string">dpkg-reconfigure</span> <span class="string">-f</span> <span class="string">noninteractive</span> <span class="string">unattended-upgrades</span></span><br><span class="line">        <span class="attr">creates:</span> <span class="string">/etc/apt/apt.conf.d/20auto-upgrades</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Enable</span> <span class="string">periodic</span> <span class="string">for</span> <span class="string">download</span> <span class="string">and</span> <span class="string">clean</span></span><br><span class="line">      <span class="attr">lineinfile:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">/etc/apt/apt.conf.d/20auto-upgrades</span></span><br><span class="line">        <span class="attr">line:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; item &#125;&#125;</span>&quot;</span></span><br><span class="line">      <span class="attr">with_items:</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">&#x27;APT::Periodic::Download-Upgradeable-Packages &quot;1&quot;;&#x27;</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">&#x27;APT::Periodic::AutocleanInterval &quot;7&quot;;&#x27;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Enable</span> <span class="string">upgrade</span> <span class="string">recommend</span> <span class="string">updates</span></span><br><span class="line">      <span class="attr">lineinfile:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">/etc/apt/apt.conf.d/50unattended-upgrades</span></span><br><span class="line">        <span class="attr">regexp:</span> <span class="string">&#x27;^//\t+\&quot;\$&#123;distro_id&#125;\:\$&#123;distro_codename&#125;-updates\&quot;;&#x27;</span></span><br><span class="line">        <span class="attr">line:</span> <span class="string">&quot;\t\&quot;$&#123;distro_id&#125;:$&#123;distro_codename&#125;-updates\&quot;;&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Enable</span> <span class="string">automatic</span> <span class="string">reboot</span></span><br><span class="line">      <span class="attr">lineinfile:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">/etc/apt/apt.conf.d/50unattended-upgrades</span></span><br><span class="line">        <span class="attr">regexp:</span> <span class="string">&#x27;^//Unattended-Upgrade::Automatic-Reboot \&quot;false\&quot;;&#x27;</span></span><br><span class="line">        <span class="attr">line:</span> <span class="string">&quot;Unattended-Upgrade::Automatic-Reboot \&quot;true\&quot;;&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Set</span> <span class="string">automatic</span> <span class="string">reboot</span> <span class="string">time</span></span><br><span class="line">      <span class="attr">lineinfile:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">/etc/apt/apt.conf.d/50unattended-upgrades</span></span><br><span class="line">        <span class="attr">regexp:</span> <span class="string">&#x27;^//Unattended-Upgrade::Automatic-Reboot-Time \&quot;02:00\&quot;;&#x27;</span></span><br><span class="line">        <span class="attr">line:</span> <span class="string">&quot;Unattended-Upgrade::Automatic-Reboot-Time \&quot;04:00\&quot;;&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Enable</span> <span class="string">remove</span> <span class="string">unused</span> <span class="string">kernel</span> <span class="string">packages</span></span><br><span class="line">      <span class="attr">lineinfile:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">/etc/apt/apt.conf.d/50unattended-upgrades</span></span><br><span class="line">        <span class="attr">regexp:</span> <span class="string">&#x27;^//Unattended-Upgrade::Remove-Unused-Kernel-Packages \&quot;true\&quot;;&#x27;</span></span><br><span class="line">        <span class="attr">line:</span> <span class="string">&quot;Unattended-Upgrade::Remove-Unused-Kernel-Packages \&quot;true\&quot;;&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Enable</span> <span class="string">remove</span> <span class="string">unused</span> <span class="string">dependencies</span></span><br><span class="line">      <span class="attr">lineinfile:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">/etc/apt/apt.conf.d/50unattended-upgrades</span></span><br><span class="line">        <span class="attr">regexp:</span> <span class="string">&#x27;^//Unattended-Upgrade::Remove-Unused-Dependencies \&quot;false\&quot;;&#x27;</span></span><br><span class="line">        <span class="attr">line:</span> <span class="string">&quot;Unattended-Upgrade::Remove-Unused-Dependencies \&quot;true\&quot;;&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Reboot</span> <span class="string">the</span> <span class="string">machine</span> <span class="string">(Wait</span> <span class="string">for</span> <span class="number">5</span> <span class="string">min)</span></span><br><span class="line">      <span class="attr">reboot:</span></span><br><span class="line">        <span class="attr">reboot_timeout:</span> <span class="number">300</span></span><br></pre></td></tr></table></figure><h3><span id="プレイブックinstall-ubuntu-packagesyml">プレイブック「install-ubuntu-packages.yml」</span></h3><p>パッケージを追加する。</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="bullet">-</span> <span class="attr">hosts:</span> <span class="string">ubuntu</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">vars:</span></span><br><span class="line">  <span class="attr">gather_facts:</span> <span class="literal">no</span></span><br><span class="line">  <span class="attr">become:</span> <span class="literal">true</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">tasks:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">net-tools</span></span><br><span class="line">      <span class="attr">apt:</span></span><br><span class="line">        <span class="attr">update_cache:</span> <span class="literal">yes</span></span><br><span class="line">        <span class="attr">name:</span></span><br><span class="line">          <span class="bullet">-</span> <span class="string">net-tools</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">curl</span></span><br><span class="line">      <span class="attr">apt:</span></span><br><span class="line">        <span class="attr">update_cache:</span> <span class="literal">yes</span></span><br><span class="line">        <span class="attr">name:</span></span><br><span class="line">          <span class="bullet">-</span> <span class="string">curl</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">tree</span></span><br><span class="line">      <span class="attr">apt:</span></span><br><span class="line">        <span class="attr">update_cache:</span> <span class="literal">yes</span></span><br><span class="line">        <span class="attr">name:</span></span><br><span class="line">          <span class="bullet">-</span> <span class="string">tree</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">htop</span></span><br><span class="line">      <span class="attr">apt:</span></span><br><span class="line">        <span class="attr">update_cache:</span> <span class="literal">yes</span></span><br><span class="line">        <span class="attr">name:</span></span><br><span class="line">          <span class="bullet">-</span> <span class="string">htop</span></span><br></pre></td></tr></table></figure><h3><span id="プレイブックufwyml">プレイブック「ufw.yml」</span></h3><p>ファイアウォールを有効化する。<br>デフォルトDENYでポート番号を変更したSSHポートのみ許可する</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="bullet">-</span> <span class="attr">hosts:</span> <span class="string">ubuntu</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">vars:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">sshd_port:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; lookup(&#x27;env&#x27;, &#x27;SSHD_PORT&#x27;) &#125;&#125;</span>&quot;</span></span><br><span class="line">  <span class="attr">gather_facts:</span> <span class="literal">no</span></span><br><span class="line">  <span class="attr">become:</span> <span class="literal">true</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">tasks:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deny</span> <span class="string">all</span> <span class="string">access</span> <span class="string">from</span> <span class="string">any</span></span><br><span class="line">      <span class="attr">ufw:</span></span><br><span class="line">        <span class="attr">default:</span> <span class="string">deny</span></span><br><span class="line">        <span class="attr">direction:</span> <span class="string">incoming</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Allow</span> <span class="string">all</span> <span class="string">access</span> <span class="string">to</span> <span class="string">port</span> &#123;&#123; <span class="string">sshd_port</span> &#125;&#125; <span class="string">(SSH)</span></span><br><span class="line">      <span class="attr">ufw:</span></span><br><span class="line">        <span class="attr">rule:</span> <span class="string">allow</span></span><br><span class="line">        <span class="attr">proto:</span> <span class="string">tcp</span></span><br><span class="line">        <span class="attr">port:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; sshd_port &#125;&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Enable</span> <span class="string">firewall</span></span><br><span class="line">      <span class="attr">ufw:</span></span><br><span class="line">        <span class="attr">state:</span> <span class="string">enabled</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;ansibleでubuntuの設定を行う&quot;&gt;AnsibleでUbuntuの設定を行う&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span id=&quot;プレイブックの実行&quot;&gt;プレイブックの実行&lt;/span&gt;&lt;/h3&gt;&lt;figure class=&quot;highlight b</summary>
      
    
    
    
    <category term="Ansible" scheme="https://www.nullpo.io/categories/Ansible/"/>
    
    <category term="Linux" scheme="https://www.nullpo.io/categories/Linux/"/>
    
    
    <category term="Ansible" scheme="https://www.nullpo.io/tags/Ansible/"/>
    
    <category term="Linux" scheme="https://www.nullpo.io/tags/Linux/"/>
    
    <category term="Ubuntu20" scheme="https://www.nullpo.io/tags/Ubuntu20/"/>
    
  </entry>
  
  <entry>
    <title>AnsibleでUbuntuに専用ユーザで秘密鍵で接続可能にする</title>
    <link href="https://www.nullpo.io/2021/05/24/ansible-linux-ubuntu-init/"/>
    <id>https://www.nullpo.io/2021/05/24/ansible-linux-ubuntu-init/</id>
    <published>2021-05-24T01:54:00.000Z</published>
    <updated>2021-06-04T01:59:09.274Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="ansibleでubuntuに接続可能にする">AnsibleでUbuntuに接続可能にする</span></h2><h3><span id="プレイブックの実行">プレイブックの実行</span></h3><p><code>ansible-playbook add-user-ssh.yml -i hosts</code></p><h3><span id="インベントリファイルhosts">インベントリファイル「hosts」</span></h3><p>初期設定を行う<strong>init</strong>グループを設定する。</p><ul><li>ansible_user/ansible_passwordは対象Ubuntuのログインユーザ、パスワード</li><li>ansible_become_passwordはsudo時のパスワード</li></ul><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[init]</span></span><br><span class="line">target</span><br><span class="line"></span><br><span class="line"><span class="section">[init:vars]</span></span><br><span class="line"><span class="attr">ansible_python_interpreter</span>=/usr/bin/python3</span><br><span class="line"><span class="attr">ansible_port</span>=<span class="number">22</span></span><br><span class="line"><span class="attr">ansible_user</span>=※ユーザ名※</span><br><span class="line"><span class="attr">ansible_password</span>=※パスワード※</span><br><span class="line"><span class="attr">ansible_become_password</span>=※パスワード※</span><br></pre></td></tr></table></figure><h3><span id="プレイブックadd-user-sshyml">プレイブック「add-user-ssh.yml」</span></h3><p>Ansible用のユーザ追加とSSHDの初期設定を行う。</p><ul><li>lookup(‘env’,’XXXXX’)はAnsible実行ホストの環境変数を参照する</li><li>sudo実行可能なユーザとして<code>ANSIBLE_USERNAME</code>で指定したユーザを追加する</li><li>追加したユーザにSSH用の公開鍵を登録する</li><li>SSHDのポート番号変更やルートログイン禁止の設定を行いsshdをリスタートする</li></ul><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="bullet">-</span> <span class="attr">hosts:</span> <span class="string">init</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">vars:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">ansible_user_name:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; lookup(&#x27;env&#x27;, &#x27;ANSIBLE_USERNAME&#x27;) &#125;&#125;</span>&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">ansible_user_password:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; lookup(&#x27;env&#x27;, &#x27;ANSIBLE_PASSWORD&#x27;) &#125;&#125;</span>&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">sshd_port:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; lookup(&#x27;env&#x27;, &#x27;SSHD_PORT&#x27;) &#125;&#125;</span>&quot;</span></span><br><span class="line">  <span class="attr">gather_facts:</span> <span class="literal">no</span></span><br><span class="line">  <span class="attr">become:</span> <span class="literal">true</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">tasks:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Add</span> <span class="string">a</span> <span class="string">new</span> <span class="string">user</span> <span class="string">named</span> &#123;&#123; <span class="string">ansible_user_name</span> &#125;&#125;</span><br><span class="line">      <span class="attr">user:</span></span><br><span class="line">        <span class="attr">name:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; ansible_user_name &#125;&#125;</span>&quot;</span></span><br><span class="line">        <span class="attr">shell:</span> <span class="string">/bin/bash</span></span><br><span class="line">        <span class="attr">password:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; ansible_user_password &#125;&#125;</span>&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Add</span> <span class="string">ansible</span> <span class="string">user</span> <span class="string">to</span> <span class="string">the</span> <span class="string">sudoers</span></span><br><span class="line">      <span class="attr">copy:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">&quot;/etc/sudoers.d/<span class="template-variable">&#123;&#123; ansible_user_name &#125;&#125;</span>&quot;</span></span><br><span class="line">        <span class="attr">content:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; ansible_user_name &#125;&#125;</span>  ALL=(ALL)  NOPASSWD: ALL&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">SSH</span> <span class="string">Key</span></span><br><span class="line">      <span class="attr">authorized_key:</span></span><br><span class="line">        <span class="attr">user:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; ansible_user_name &#125;&#125;</span>&quot;</span></span><br><span class="line">        <span class="attr">key:</span> <span class="string">&quot;<span class="template-variable">&#123;&#123; lookup(&#x27;file&#x27;, &#x27;/root/.ssh/id_rsa.pub&#x27;) &#125;&#125;</span>&quot;</span></span><br><span class="line">        <span class="attr">state:</span> <span class="string">present</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Change</span> <span class="string">port</span> <span class="string">to</span> &#123;&#123; <span class="string">sshd_port</span> &#125;&#125;</span><br><span class="line">      <span class="attr">lineinfile:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">/etc/ssh/sshd_config</span></span><br><span class="line">        <span class="attr">regexp:</span> <span class="string">&quot;^Port&quot;</span></span><br><span class="line">        <span class="attr">insertafter:</span> <span class="string">&quot;^#Port&quot;</span></span><br><span class="line">        <span class="attr">line:</span> <span class="string">&quot;Port <span class="template-variable">&#123;&#123; sshd_port &#125;&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Disable</span> <span class="string">Root</span> <span class="string">Login</span></span><br><span class="line">      <span class="attr">lineinfile:</span></span><br><span class="line">        <span class="attr">dest:</span> <span class="string">/etc/ssh/sshd_config</span></span><br><span class="line">        <span class="attr">regexp:</span> <span class="string">&quot;^PermitRootLogin&quot;</span></span><br><span class="line">        <span class="attr">line:</span> <span class="string">&quot;PermitRootLogin no&quot;</span></span><br><span class="line">        <span class="attr">state:</span> <span class="string">present</span></span><br><span class="line">        <span class="attr">backup:</span> <span class="literal">yes</span></span><br><span class="line">      <span class="attr">notify:</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">restart</span> <span class="string">sshd</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">handlers:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">restart</span> <span class="string">sshd</span></span><br><span class="line">      <span class="attr">service:</span></span><br><span class="line">        <span class="attr">name:</span> <span class="string">sshd</span></span><br><span class="line">        <span class="attr">state:</span> <span class="string">restarted</span></span><br></pre></td></tr></table></figure><h2><span id="発生したエラーと対策">発生したエラーと対策</span></h2><h3><span id="エラーsudo-a-password-is-required">エラー「sudo: a password is required」</span></h3><p>sudoのパスワードが指定されていない。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fatal: [target]: FAILED! =&gt; &#123;&quot;changed&quot;: false, &quot;module_stderr&quot;: &quot;Shared connection to target closed.\r\n&quot;, &quot;module_stdout&quot;: &quot;sudo: a password is required\r\n&quot;, &quot;msg&quot;: &quot;MODULE FAILURE\nSee stdout/stderr for the exact error&quot;, &quot;rc&quot;: 1&#125;</span><br></pre></td></tr></table></figure><p><strong>ansible_become_password</strong>でsudoパスワードを指定する</p><h2><span id="エラーusrbinpython-not-found">エラー「/usr/bin/python: not found」</span></h2><p>pythonが見つからない。</p><p><code>ansible_python_interpreter=/usr/bin/python3</code>でpythonのパスを明示する</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fatal: [target]: FAILED! =&gt; &#123;&quot;changed&quot;: false, &quot;module_stderr&quot;: &quot;Shared connection to target closed.\r\n&quot;, &quot;module_stdout&quot;: &quot;\r\n/bin/sh: 1: /usr/bin/python: not found\r\n&quot;, &quot;msg&quot;: &quot;MODULE FAILURE\nSee stdout/stderr for the exact error&quot;, &quot;rc&quot;: 127&#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;ansibleでubuntuに接続可能にする&quot;&gt;AnsibleでUbuntuに接続可能にする&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span id=&quot;プレイブックの実行&quot;&gt;プレイブックの実行&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;ansible-playb</summary>
      
    
    
    
    <category term="Ansible" scheme="https://www.nullpo.io/categories/Ansible/"/>
    
    <category term="Linux" scheme="https://www.nullpo.io/categories/Linux/"/>
    
    
    <category term="Ansible" scheme="https://www.nullpo.io/tags/Ansible/"/>
    
    <category term="Linux" scheme="https://www.nullpo.io/tags/Linux/"/>
    
    <category term="Ubuntu20" scheme="https://www.nullpo.io/tags/Ubuntu20/"/>
    
  </entry>
  
  <entry>
    <title>Ansibleをdocker-composeで動かす</title>
    <link href="https://www.nullpo.io/2021/05/24/ansible-docker-compose/"/>
    <id>https://www.nullpo.io/2021/05/24/ansible-docker-compose/</id>
    <published>2021-05-24T00:56:00.000Z</published>
    <updated>2021-06-04T01:59:09.259Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="dockerコンテナをansible実行ホストとして構成する">dockerコンテナをansible実行ホストとして構成する</span></h2><p>docker-composeで環境をカプセル化してGitでPlaybookとともに管理したい。</p><h2><span id="最終的な構成">最終的な構成</span></h2><h3><span id="docker-composeyml">docker-compose.yml</span></h3><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&#x27;3.5&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">tutorial:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">python:3-slim</span></span><br><span class="line">    <span class="attr">tty:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">working_dir:</span> <span class="string">/work</span></span><br><span class="line">    <span class="attr">entrypoint:</span> <span class="string">./entrypoint.sh</span></span><br><span class="line">    <span class="attr">command:</span> <span class="string">/bin/bash</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">.:/work</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="attr">ANSIBLE_CONFIG:</span> <span class="string">.</span></span><br><span class="line">      <span class="attr">ANSIBLE_USERNAME:</span> <span class="string">$&#123;ANSIBLE_USERNAME&#125;</span></span><br><span class="line">      <span class="attr">ANSIBLE_PASSWORD:</span> <span class="string">$&#123;ANSIBLE_PASSWORD&#125;</span></span><br><span class="line">    <span class="attr">secrets:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">secret_key</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">public_key</span></span><br><span class="line"></span><br><span class="line"><span class="attr">secrets:</span></span><br><span class="line">  <span class="attr">secret_key:</span></span><br><span class="line">    <span class="attr">file:</span> <span class="string">./.ssh/ubuntu.key</span></span><br><span class="line">  <span class="attr">public_key:</span></span><br><span class="line">    <span class="attr">file:</span> <span class="string">./.ssh/ubuntu.key.pub</span></span><br></pre></td></tr></table></figure><h3><span id="entrypointsh">entrypoint.sh</span></h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SSHキー</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line">mkdir -p ~/.ssh</span><br><span class="line">chown -R root:root ~/.ssh</span><br><span class="line">chmod -R 0700 ~/.ssh</span><br><span class="line">cp -ip /run/secrets/secret_key ~/.ssh/id_rsa</span><br><span class="line">cp -ip /run/secrets/public_key ~/.ssh/id_rsa.pub</span><br><span class="line">chmod -R 0600 ~/.ssh</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Ansibleインストール</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line">apt-get install sshpass -y</span><br><span class="line">pip install ansible</span><br><span class="line"></span><br><span class="line"><span class="built_in">exec</span> <span class="string">&quot;<span class="variable">$@</span>&quot;</span></span><br></pre></td></tr></table></figure><h3><span id="ansiblecfg">ansible.cfg</span></h3><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[defaults]</span></span><br><span class="line"><span class="attr">host_key_checking</span> = <span class="literal">False</span></span><br></pre></td></tr></table></figure><h2><span id="発生したエラーと対策">発生したエラーと対策</span></h2><h3><span id="secretsをつかってssh用の公開鍵-秘密鍵を共有する">SecretsをつかってSSH用の公開鍵、秘密鍵を共有する</span></h3><p>Secretsは**/run/secrets/**から参照できる<br><strong>entrypoint.sh</strong>でrootアカウントのキーとしてコピーし、パーミッションを設定する。</p><h3><span id="エラーyou-must-install-the-sshpass-program">エラー「you must install the sshpass program」</span></h3><p>ログイン時にパスワードを使用したログインを行う場合は、<strong>sshpass</strong>をインストールする必要がある。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fatal: [target]: FAILED! =&gt; &#123;&quot;msg&quot;: &quot;to use the &#x27;ssh&#x27; connection type with passwords, you must install the sshpass program&quot;&#125;</span><br></pre></td></tr></table></figure><h3><span id="エラーplease-add-this-hosts-fingerprint-to-your-known_hosts-file-to-manage-this-host">エラー「Please add this host’s fingerprint to your known_hosts file to manage this host.」</span></h3><p>初回ログイン時などfingerprintの対話操作が含まれるのでエラーになってしまう。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fatal: [target]: FAILED! =&gt; &#123;&quot;msg&quot;: &quot;Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host&#x27;s fingerprint to your known_hosts file to manage this host.&quot;&#125;</span><br></pre></td></tr></table></figure><p>ansible.cfgをカレントディレクトリに作成し<code>host_key_checking = False</code>を設定する。</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[defaults]</span></span><br><span class="line"><span class="attr">host_key_checking</span> = <span class="literal">False</span></span><br></pre></td></tr></table></figure><h3><span id="ansiblecfgが読み込まれない">ansible.cfgが読み込まれない</span></h3><p>docker-composeを実行するのがWindowsの場合、パーミッションが777になり読み込まれない。<br><code>export ANSIBLE_CONFIG=.</code>のように環境変数を定義して明示的に<strong>ansible.cfg</strong>の場所を明示することで読み込ませる。</p><h3><span id="python3環境でaptでインストールしたansibleが動かない">Python3環境でaptでインストールしたAnsibleが動かない</span></h3><p>aptで以下のようにインストールでき、ansibleコマンドも実行可能だが、妙なエラーが出る。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">apt-get update</span><br><span class="line">apt-get install -y software-properties-common</span><br><span class="line">apt-add-repository --yes --update ppa:ansible/ansible</span><br><span class="line">apt-get install -y ansible</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fatal: [xxxx.xxxxxx.xxxx]: FAILED! =&gt; &#123;&quot;changed&quot;: false, &quot;module_stderr&quot;: &quot;Shared connection to xxxx.xxxxxx.xxxx closed.\r\n&quot;, &quot;module_stdout&quot;: &quot;\r\n/home/ansible/.ansible/tmp/ansible-tmp-1621777634.977247-71421390121516/AnsiballZ_user.py:17: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module&#x27;s documentation for alternative uses\r\n  import imp\r\nTraceback (most recent call last):\r\n  File \&quot;/tmp/ansible_user_payload_frbeg21u/ansible_user_payload.zip/ansible/module_utils/basic.py\&quot;, line 279, in get_distribution\r\nAttributeError: module &#x27;platform&#x27; has no attribute &#x27;_supported_dists&#x27;\r\n\r\nDuring handling of the above exception, another exception occurred:\r\n\r\nTraceback (most recent call last):\r\n  File \&quot;/home/ansible/.ansible/tmp/ansible-tmp-1621777634.977247-71421390121516/AnsiballZ_user.py\&quot;, line 113, in &lt;module&gt;\r\n    _ansiballz_main()\r\n  File \&quot;/home/ansible/.ansible/tmp/ansible-tmp-1621777634.977247-71421390121516/AnsiballZ_user.py\&quot;, line 105, in _ansiballz_main\r\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  File \&quot;/home/ansible/.ansible/tmp/ansible-tmp-1621777634.977247-71421390121516/AnsiballZ_user.py\&quot;, line 48, in invoke_module\r\n    imp.load_module(&#x27;__main__&#x27;, mod, module, MOD_DESC)\r\n  File \&quot;/usr/lib/python3.8/imp.py\&quot;, line 234, in load_module\r\n    return load_source(name, filename, file)\r\n  File \&quot;/usr/lib/python3.8/imp.py\&quot;, line 169, in load_source\r\n    module = _exec(spec, sys.modules[name])\r\n  File \&quot;&lt;frozen importlib._bootstrap&gt;\&quot;, line 604, in _exec\r\n  File \&quot;&lt;frozen importlib._bootstrap_external&gt;\&quot;, line 783, in exec_module\r\n  File \&quot;&lt;frozen importlib._bootstrap&gt;\&quot;, line 219, in _call_with_frames_removed\r\n  File \&quot;/tmp/ansible_user_payload_frbeg21u/__main__.py\&quot;, line 2611, in &lt;module&gt;\r\n  File \&quot;/tmp/ansible_user_payload_frbeg21u/__main__.py\&quot;, line 2516, in main\r\n  File \&quot;/tmp/ansible_user_payload_frbeg21u/__main__.py\&quot;, line 403, in __new__\r\n  File \&quot;/tmp/ansible_user_payload_frbeg21u/ansible_user_payload.zip/ansible/module_utils/basic.py\&quot;, line 337, in load_platform_subclass\r\n  File \&quot;/tmp/ansible_user_payload_frbeg21u/ansible_user_payload.zip/ansible/module_utils/basic.py\&quot;, line 289, in get_distribution\r\nAttributeError: module &#x27;platform&#x27; has no attribute &#x27;dist&#x27;\r\n&quot;, &quot;msg&quot;: &quot;MODULE FAILURE\nSee stdout/stderr for the exact error&quot;, &quot;rc&quot;: 1&#125;</span><br></pre></td></tr></table></figure><p>pipでインストールすればOK。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install ansible</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;dockerコンテナをansible実行ホストとして構成する&quot;&gt;dockerコンテナをansible実行ホストとして構成する&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;docker-composeで環境をカプセル化してGitでPlaybookとともに管理したい。&lt;/</summary>
      
    
    
    
    <category term="Ansible" scheme="https://www.nullpo.io/categories/Ansible/"/>
    
    <category term="Container" scheme="https://www.nullpo.io/categories/Container/"/>
    
    
    <category term="Ansible" scheme="https://www.nullpo.io/tags/Ansible/"/>
    
    <category term="Docker" scheme="https://www.nullpo.io/tags/Docker/"/>
    
    <category term="docker-compose" scheme="https://www.nullpo.io/tags/docker-compose/"/>
    
  </entry>
  
  <entry>
    <title>Fluent-BitとFluentdのコンセプトと特徴を把握する</title>
    <link href="https://www.nullpo.io/2021/05/21/logging-fluent-concept/"/>
    <id>https://www.nullpo.io/2021/05/21/logging-fluent-concept/</id>
    <published>2021-05-21T09:00:00.000Z</published>
    <updated>2021-06-04T01:59:10.129Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="fluentdとfluent-bit">FluentdとFluent-Bit</span></h2><ul><li><a href="https://docs.fluentbit.io/manual/about/fluentd-and-fluent-bit">Fluentd &amp; Fluent Bit</a></li></ul><table><thead><tr><th></th><th>Fluentd</th><th>Fluent Bit</th></tr></thead><tbody><tr><td>Scope</td><td>Containers / Servers</td><td>Embedded Linux / Containers / Servers</td></tr><tr><td>Language</td><td>C &amp; Ruby</td><td>C</td></tr><tr><td>Memory</td><td>~40MB</td><td>~650KB</td></tr><tr><td>Performance</td><td>High Performance</td><td>High Performance</td></tr><tr><td>Dependencies</td><td>Built as a Ruby Gem, it requires a certain number of gems.</td><td>Zero dependencies, unless some special plugin requires them.</td></tr><tr><td>Plugins</td><td>More than 1000 plugins available</td><td>Around 70 plugins available</td></tr><tr><td>License</td><td>Apache License v2.0</td><td>Apache License v2.0</td></tr></tbody></table><blockquote><p>Both Fluentd and Fluent Bit can work as Aggregators or Forwarders, they both can complement each other or use them as standalone solutions.</p></blockquote><p>どちらも単独でログアグリゲーター＆フォワーダーとして機能する。</p><h2><span id="コンセプト">コンセプト</span></h2><h3><span id="event-or-record">Event or Record</span></h3><ul><li><a href="https://docs.fluentbit.io/manual/concepts/key-concepts">Key Concepts</a></li></ul><blockquote><p>Internally, an Event always has two components (in an array form):</p><p>[TIMESTAMP, MESSAGE]</p></blockquote><p>ログ行は<strong>イベント</strong>として扱われ、イベントはタイムスタンプとメッセージのタプルで構成されている。</p><h3><span id="filtering">Filtering</span></h3><blockquote><p>In some cases it is required to perform modifications on the Events content, the process to alter, enrich or drop Events is called Filtering.</p><p>There are many use cases when Filtering is required like:</p><ul><li>Append specific information to the Event like an IP address or metadata.</li><li>Select a specific piece of the Event content.</li><li>Drop Events that matches certain pattern.</li></ul></blockquote><p>フィルタリングによってイベントに大して、追加、変更、削除を行うことができる。</p><h3><span id="tag">Tag</span></h3><blockquote><p>Most of the tags are assigned manually in the configuration. If a tag is not specified, Fluent Bit will assign the name of the Input plugin instance from where that Event was generated from.</p></blockquote><p>INPUTでタグ付けを行い、FILTERやOUTPUTで利用する。</p><h3><span id="timestamp">Timestamp</span></h3><blockquote><p>SECONDS.NANOSECONDS</p></blockquote><p>タイムスタンプはSECONDSで示すUnixエポックタイムとNANOSECONDSで示されるナノ秒の組で表現される。</p><h3><span id="match">Match</span></h3><blockquote><p>Fluent Bit allows to deliver your collected and processed Events to one or multiple destinations, this is done through a routing phase. A Match represent a simple rule to select Events where it Tags matches a defined rule.</p></blockquote><p>MATCHによって該当するタグを持つログを複数の宛先にルーティングするなどのルールを記述できる。</p><h3><span id="structured-messages">Structured Messages</span></h3><blockquote><p>{“project”: “Fluent Bit”, “created”: 1398289291}</p><p>Consider MessagePack as a binary version of JSON on steroids.</p></blockquote><p>メッセージは構造化されたJSONデータ（JSONのバイナリ版であるMessagePack）を使う。</p><ul><li><a href="https://msgpack.org/">MessagePack</a></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;fluentdとfluent-bit&quot;&gt;FluentdとFluent-Bit&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.fluentbit.io/manual/about/fluentd-and-fluent-</summary>
      
    
    
    
    <category term="Container" scheme="https://www.nullpo.io/categories/Container/"/>
    
    <category term="Logging" scheme="https://www.nullpo.io/categories/Logging/"/>
    
    
    <category term="Fluent-Bit" scheme="https://www.nullpo.io/tags/Fluent-Bit/"/>
    
    <category term="Fluentd" scheme="https://www.nullpo.io/tags/Fluentd/"/>
    
  </entry>
  
  <entry>
    <title>Fluent-Bitをdocker-composeでサイドカーとして使う</title>
    <link href="https://www.nullpo.io/2021/05/21/logging-docker-compose-fluent-bit/"/>
    <id>https://www.nullpo.io/2021/05/21/logging-docker-compose-fluent-bit/</id>
    <published>2021-05-21T09:00:00.000Z</published>
    <updated>2021-06-04T01:59:10.095Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="fluentbitの最小限の構成">FluentBitの最小限の構成</span></h2><h3><span id="input-forward">INPUT FORWARD</span></h3><p><a href="https://docs.fluentbit.io/manual/pipeline/inputs/forward">INPUT/FORWARD</a>にIPで待ち受けて、標準出力に出力する例がある。<br><a href="https://docs.fluentbit.io/manual/v/1.3/output/stdout">OUTPUT/STDOUT</a>で標準出力に出力できる。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">[INPUT]</span><br><span class="line">    Name              forward</span><br><span class="line">    Listen            0.0.0.0</span><br><span class="line">    Port              24224</span><br><span class="line">    Buffer_Chunk_Size 1M</span><br><span class="line">    Buffer_Max_Size   6M</span><br><span class="line"></span><br><span class="line">[OUTPUT]</span><br><span class="line">    Name   stdout</span><br><span class="line">    Match  *</span><br></pre></td></tr></table></figure><p>Portは<code>TCP port to listen for incoming connections.</code>だ。</p><h3><span id="filter-stdout">FILTER STDOUT</span></h3><p>標準出力への出力はFILTERでも可能。<br><a href="https://docs.fluentbit.io/manual/v/1.3/filter/stdout">FILTER/STDOUT</a>にFILTERを使った標準出力が示されている。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">[INPUT]</span><br><span class="line">    Name cpu</span><br><span class="line">    Tag  cpu.local</span><br><span class="line"></span><br><span class="line">[FILTER]</span><br><span class="line">    Name  stdout</span><br><span class="line">    Match *</span><br><span class="line"></span><br><span class="line">[OUTPUT]</span><br><span class="line">    Name  null</span><br><span class="line">    Match *</span><br></pre></td></tr></table></figure><p><a href="https://docs.fluentbit.io/manual/v/1.3/output/null">OUTPUT/NULL</a>は単純にイベントを破棄する。</p><h3><span id="logging-pipeline-locally">Logging pipeline locally</span></h3><p><a href="https://docs.fluentbit.io/manual/local-testing/logging-pipeline">Running a Logging Pipeline Locally</a>ではDocker Composeの設定例がある。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&quot;3.7&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">fluent-bit:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">fluent/fluent-bit</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf</span></span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">elasticsearch</span></span><br><span class="line">  <span class="attr">elasticsearch:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">elasticsearch:7.6.2</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;9200:9200&quot;</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">discovery.type=single-node</span></span><br></pre></td></tr></table></figure><h2><span id="dockerのログを集約するサイドカー構成">Dockerのログを集約するサイドカー構成</span></h2><h2><span id="docker-composeの設定例">docker-composeの設定例</span></h2><p>以下がfluent-bitサイドカーとして設定した内容。<br><strong>fluent-bit</strong>は24224ポートで待ち受け、web1、web2コンテナはLoggingDriverを使って待ち受けポートへログを送る。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&#x27;3.5&#x27;</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">web1:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">nginx:latest</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;8888:80&quot;</span> </span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluent-bit</span></span><br><span class="line">    <span class="attr">command:</span> [<span class="string">nginx-debug</span>, <span class="string">&#x27;-g&#x27;</span>, <span class="string">&#x27;daemon off;&#x27;</span>]</span><br><span class="line">    <span class="attr">logging:</span></span><br><span class="line">      <span class="attr">driver:</span> <span class="string">fluentd</span></span><br><span class="line">      <span class="attr">options:</span></span><br><span class="line">        <span class="attr">fluentd-address:</span> <span class="string">&quot;localhost:24224&quot;</span></span><br><span class="line">        <span class="attr">fluentd-async-connect:</span> <span class="string">&quot;false&quot;</span></span><br><span class="line">  <span class="attr">web2:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">nginx:latest</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;8889:80&quot;</span> </span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluent-bit</span></span><br><span class="line">    <span class="attr">command:</span> [<span class="string">nginx-debug</span>, <span class="string">&#x27;-g&#x27;</span>, <span class="string">&#x27;daemon off;&#x27;</span>]</span><br><span class="line">    <span class="attr">logging:</span></span><br><span class="line">      <span class="attr">driver:</span> <span class="string">fluentd</span></span><br><span class="line">      <span class="attr">options:</span></span><br><span class="line">        <span class="attr">fluentd-address:</span> <span class="string">&quot;localhost:24224&quot;</span></span><br><span class="line">        <span class="attr">fluentd-async-connect:</span> <span class="string">&quot;false&quot;</span></span><br><span class="line">  <span class="attr">fluent-bit:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">fluent/fluent-bit</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;24224:24224&quot;</span></span><br></pre></td></tr></table></figure><p><strong>fluent-bit.conf</strong>は以下の通り。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">[SERVICE]</span><br><span class="line">    Log_Level       info</span><br><span class="line"></span><br><span class="line">[INPUT]</span><br><span class="line">    Name    forward</span><br><span class="line">    Listen  0.0.0.0</span><br><span class="line">    Port    24224</span><br><span class="line"></span><br><span class="line">[FILTER]</span><br><span class="line">    Name stdout</span><br><span class="line">    Match *</span><br><span class="line"></span><br><span class="line">[OUTPUT]</span><br><span class="line">    Name null</span><br><span class="line">    Match *</span><br></pre></td></tr></table></figure><h3><span id="実行例">実行例</span></h3><p>ログを見ると、web1、web2で出力しているログはfluent-bitへ送られ、fluent-bitのログとして出力されている。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br></pre></td><td class="code"><pre><span class="line">PS &gt; docker-compose up</span><br><span class="line">Docker Compose is now in the Docker CLI, try `docker compose up`</span><br><span class="line"></span><br><span class="line">WARNING: Found orphan containers (stdout_web_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.</span><br><span class="line">Recreating stdout_fluent-bit_1 ... done</span><br><span class="line">Creating stdout_web2_1         ... done</span><br><span class="line">Creating stdout_web1_1         ... done</span><br><span class="line">Attaching to stdout_fluent-bit_1, stdout_web2_1, stdout_web1_1</span><br><span class="line">fluent-bit_1  | Fluent Bit v1.7.4</span><br><span class="line">fluent-bit_1  | * Copyright (C) 2019-2021 The Fluent Bit Authors</span><br><span class="line">fluent-bit_1  | * Copyright (C) 2015-2018 Treasure Data</span><br><span class="line">fluent-bit_1  | * Fluent Bit is a CNCF sub-project under the umbrella of Fluentd</span><br><span class="line">fluent-bit_1  | * https://fluentbit.io</span><br><span class="line">fluent-bit_1  |</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [Warning] [config] I cannot open /fluent-bit/etc/parser.conf file</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [ info] [engine] started (pid=1)</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [ info] [storage] version=1.1.1, initializing...</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [ info] [storage] in-memory</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [ info] [storage] normal synchronization mode, checksum disabled, max_chunks_up=128</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [ info] [input:forward:forward.0] listening on 0.0.0.0:24224</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [error] [sp] could not initialize stream processor</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [error] [engine] could not initialize stream processor</span><br><span class="line">fluent-bit_1  | [2021/05/21 06:22:11] [Warning] [config] I cannot open /fluent-bit/etc/stream_processor.conf file</span><br><span class="line">web1_1        | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration</span><br><span class="line">web1_1        | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/</span><br><span class="line">web1_1        | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh</span><br><span class="line">web1_1        | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf</span><br><span class="line">web2_1        | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration</span><br><span class="line">web2_1        | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/</span><br><span class="line">web2_1        | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh</span><br><span class="line">web2_1        | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf</span><br><span class="line">web2_1        | 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf</span><br><span class="line">web2_1        | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh</span><br><span class="line">web2_1        | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh</span><br><span class="line">web2_1        | /docker-entrypoint.sh: Configuration complete; ready for start up</span><br><span class="line">web1_1        | 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf</span><br><span class="line">web1_1        | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh</span><br><span class="line">web1_1        | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578134.000000000, &#123;&quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578134.000000000, &#123;&quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/&quot;, &quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578134.000000000, &#123;&quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh&quot;, &quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578134.000000000, &#123;&quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf&quot;, &quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578134.000000000, &#123;&quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf&quot;, &quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578134.000000000, &#123;&quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh&quot;, &quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578134.000000000, &#123;&quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578134.000000000, &#123;&quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Configuration complete; ready for start up&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578135.000000000, &#123;&quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578135.000000000, &#123;&quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/&quot;, &quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578135.000000000, &#123;&quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578135.000000000, &#123;&quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf&quot;, &quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578135.000000000, &#123;&quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf&quot;, &quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578135.000000000, &#123;&quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh&quot;&#125;]</span><br><span class="line">web1_1        | /docker-entrypoint.sh: Configuration complete; ready for start up</span><br><span class="line">web2_1        | 172.24.0.1 - - [21/May/2021:06:22:33 +0000] &quot;GET / HTTP/1.1&quot; 200 612 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web2_1        | 2021/05/21 06:22:33 [error] 31#31: *1 open() &quot;/usr/share/nginx/html/favicon.ico&quot; failed (2: No such file or directory), client: 172.24.0.1, server: localhost, request: &quot;GET /favicon.ico HTTP/1.1&quot;, host: &quot;localhost:8889&quot;, referrer: &quot;http://localhost:8889/&quot;</span><br><span class="line">web2_1        | 172.24.0.1 - - [21/May/2021:06:22:33 +0000] &quot;GET /favicon.ico HTTP/1.1&quot; 404 556 &quot;http://localhost:8889/&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.24.0.1 - - [21/May/2021:06:22:38 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web2_1        | 172.24.0.1 - - [21/May/2021:06:22:41 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.24.0.1 - - [21/May/2021:06:22:43 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web2_1        | 172.24.0.1 - - [21/May/2021:06:22:45 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.24.0.1 - - [21/May/2021:06:22:48 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web2_1        | 172.24.0.1 - - [21/May/2021:06:22:51 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.24.0.1 - - [21/May/2021:06:22:54 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578135.000000000, &#123;&quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh&quot;, &quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578135.000000000, &#123;&quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;/docker-entrypoint.sh: Configuration complete; ready for start up&quot;, &quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578153.000000000, &#123;&quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:33 +0000] &quot;GET / HTTP/1.1&quot; 200 612 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;, &quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578153.000000000, &#123;&quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:33 +0000] &quot;GET /favicon.ico HTTP/1.1&quot; 404 556 &quot;http://localhost:8889/&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;, &quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578153.000000000, &#123;&quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stderr&quot;, &quot;log&quot;=&gt;&quot;2021/05/21 06:22:33 [error] 31#31: *1 open() &quot;/usr/share/nginx/html/favicon.ico&quot; failed (2: No such file or directory), client: 172.24.0.1, server: localhost, request: &quot;GET /favicon.ico HTTP/1.1&quot;, host: &quot;localhost:8889&quot;, referrer: &quot;http://localhost:8889/&quot;&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578158.000000000, &#123;&quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:38 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;, &quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578161.000000000, &#123;&quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:41 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;, &quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578163.000000000, &#123;&quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:43 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;, &quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578165.000000000, &#123;&quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:45 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578168.000000000, &#123;&quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:48 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578171.000000000, &#123;&quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:51 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;&#125;]</span><br><span class="line">Gracefully stopping... (press Ctrl+C again to force)</span><br><span class="line">Stopping stdout_web1_1         ... done</span><br><span class="line">Stopping stdout_web2_1         ... done</span><br><span class="line">Stopping stdout_fluent-bit_1   ... done</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;fluentbitの最小限の構成&quot;&gt;FluentBitの最小限の構成&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span id=&quot;input-forward&quot;&gt;INPUT FORWARD&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://docs.f</summary>
      
    
    
    
    <category term="Container" scheme="https://www.nullpo.io/categories/Container/"/>
    
    <category term="Logging" scheme="https://www.nullpo.io/categories/Logging/"/>
    
    
    <category term="Docker" scheme="https://www.nullpo.io/tags/Docker/"/>
    
    <category term="docker-compose" scheme="https://www.nullpo.io/tags/docker-compose/"/>
    
    <category term="Fluent-Bit" scheme="https://www.nullpo.io/tags/Fluent-Bit/"/>
    
  </entry>
  
  <entry>
    <title>EFKスタックをdocker-composeで構成するEFK Compose</title>
    <link href="https://www.nullpo.io/2021/05/21/logging-efk-stack/"/>
    <id>https://www.nullpo.io/2021/05/21/logging-efk-stack/</id>
    <published>2021-05-21T08:11:00.000Z</published>
    <updated>2021-08-15T15:13:22.552Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="efk-compose">EFK Compose</span></h2><p><a href="https://docs.fluentd.org/v/0.12/articles/docker-logging-efk-compose">Docker Logging Efk Compose</a>で、docker-composeを使ったELKスタックの例がある。</p><h3><span id="docker-compsoeyml">docker-compsoe.yml</span></h3><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">&#x27;2&#x27;</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">web:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">httpd</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;8080:80&quot;</span></span><br><span class="line">    <span class="attr">links:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluentd</span></span><br><span class="line">    <span class="attr">logging:</span></span><br><span class="line">      <span class="attr">driver:</span> <span class="string">&quot;fluentd&quot;</span></span><br><span class="line">      <span class="attr">options:</span></span><br><span class="line">        <span class="attr">fluentd-address:</span> <span class="string">&quot;localhost:24224&quot;</span></span><br><span class="line">        <span class="attr">fluentd-async-connect:</span> <span class="string">&quot;false&quot;</span></span><br><span class="line">        <span class="attr">tag:</span> <span class="string">httpd.access</span></span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">fluentd</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">fluentd:</span></span><br><span class="line">    <span class="attr">build:</span> <span class="string">./fluentd</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./fluentd/conf:/fluentd/etc</span></span><br><span class="line">    <span class="attr">links:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;elasticsearch&quot;</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;24224:24224&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;24224:24224/udp&quot;</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">elasticsearch:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">elasticsearch:7.12.0</span></span><br><span class="line">    <span class="attr">expose:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">9200</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;9200:9200&quot;</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">kibana:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">kibana:7.12.0</span></span><br><span class="line">    <span class="attr">links:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;elasticsearch&quot;</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;5601:5601&quot;</span></span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">elasticsearch</span></span><br></pre></td></tr></table></figure><h3><span id="fluentdconffluentconf">fluentd/conf/fluent.conf</span></h3><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"># fluentd/conf/fluent.conf</span><br><span class="line"><span class="tag">&lt;<span class="name">source</span>&gt;</span></span><br><span class="line">  @type forward</span><br><span class="line">  port 24224</span><br><span class="line">  bind 0.0.0.0</span><br><span class="line"><span class="tag">&lt;/<span class="name">source</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">match</span> *<span class="attr">.</span>**&gt;</span></span><br><span class="line">  @type copy</span><br><span class="line">  <span class="tag">&lt;<span class="name">store</span>&gt;</span></span><br><span class="line">    @type elasticsearch</span><br><span class="line">    host elasticsearch</span><br><span class="line">    port 9200</span><br><span class="line">    logstash_format true</span><br><span class="line">    logstash_prefix fluentd</span><br><span class="line">    logstash_dateformat %Y%m%d</span><br><span class="line">    include_tag_key true</span><br><span class="line">    type_name access_log</span><br><span class="line">    tag_key @log_name</span><br><span class="line">    flush_interval 1s</span><br><span class="line">  <span class="tag">&lt;/<span class="name">store</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">store</span>&gt;</span></span><br><span class="line">    @type stdout</span><br><span class="line">  <span class="tag">&lt;/<span class="name">store</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">match</span>&gt;</span></span><br></pre></td></tr></table></figure><h3><span id="fluentddockerfile">fluentd/Dockerfile</span></h3><figure class="highlight dockerfile"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># fluentd/Dockerfile</span></span><br><span class="line"><span class="keyword">FROM</span> fluent/fluentd:latest</span><br><span class="line"><span class="keyword">RUN</span><span class="bash"> gem install fluent-plugin-elasticsearch --no-rdoc --no-ri</span></span><br></pre></td></tr></table></figure><h2><span id="elasticseearchがcode78でエラーになる">ElasticSeearchがcode78でエラーになる！？</span></h2><p>EKF Composeを起動すると、ElasticSearchが<code>code 78</code>エラーで停止してしまう。<br><code>least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured</code>というメッセージが出ている</p><h3><span id="discoveryの設定が必要">discoveryの設定が必要</span></h3><p>このパラメーターは<a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.x/modules-discovery.html">ElastickSearchクラスタ</a>に関する設定<br>ElasticSearch7.X系以降はこの設定が必須になっているようだ。</p><table><thead><tr><th>パラメーター</th><th>意味</th></tr></thead><tbody><tr><td>discovery.seed_hosts</td><td>設定ベースのseed_hosts</td></tr><tr><td>discovery.seed_providers</td><td>ファイルベースのseed_hosts</td></tr><tr><td>cluster.initial_master_nodes</td><td>クラスターのマスターノード</td></tr></tbody></table><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,290Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.n.Node&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;initialized&quot; &#125;</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,290Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.n.Node&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;starting ...&quot; &#125;</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,309Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.x.s.c.PersistentCache&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;persistent cache index loaded&quot; &#125;</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,406Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.t.TransportService&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;publish_address &#123;192.168.32.2:9300&#125;, bound_addresses &#123;0.0.0.0:9300&#125;&quot; &#125;</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,524Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.b.BootstrapChecks&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;bound or publishing to a non-loopback address, enforcing bootstrap checks&quot; &#125;</span><br><span class="line">elasticsearch_1  | ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.</span><br><span class="line">elasticsearch_1  | bootstrap check failure [1] of [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured</span><br><span class="line">elasticsearch_1  | ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,535Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.n.Node&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;stopping ...&quot; &#125;</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,556Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.n.Node&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;stopped&quot; &#125;</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,557Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.n.Node&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;closing ...&quot; &#125;</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,569Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.n.Node&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;closed&quot; &#125;</span><br><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:00:46,572Z&quot;, &quot;level&quot;: &quot;INFO&quot;, &quot;component&quot;: &quot;o.e.x.m.p.NativeController&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;93ed1cfad299&quot;, &quot;message&quot;: &quot;Native controller process has stopped - no new native processes can be started&quot; &#125;</span><br><span class="line">ekf-stack_elasticsearch_1 exited with code 78</span><br></pre></td></tr></table></figure><h3><span id="マスターノードのみ設定する">マスターノードのみ設定する</span></h3><p>複数台構成ではないので、マスターノードのみ設定する。</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">elasticsearch:</span></span><br><span class="line">  <span class="attr">image:</span> <span class="string">elasticsearch:7.12.0</span></span><br><span class="line">  <span class="attr">expose:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="number">9200</span></span><br><span class="line">  <span class="attr">ports:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;9200:9200&quot;</span></span><br><span class="line">  <span class="attr">environment:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">cluster.initial_master_nodes=elasticsearch</span></span><br></pre></td></tr></table></figure><p><code>code 78</code>はでなくなったが<code>master not discovered yet,</code>というメッセージが…</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">elasticsearch_1  | &#123;&quot;type&quot;: &quot;server&quot;, &quot;timestamp&quot;: &quot;2021-08-15T01:56:08,340Z&quot;, &quot;level&quot;: &quot;WARN&quot;, &quot;component&quot;: &quot;o.e.c.c.ClusterFormationFailureHelper&quot;, &quot;cluster.name&quot;: &quot;docker-cluster&quot;, &quot;node.name&quot;: &quot;64a558eac1e4&quot;, &quot;message&quot;: &quot;master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and this node must discover master-eligible nodes [elasticsearch] to bootstrap a cluster: have discovered [&#123;64a558eac1e4&#125;&#123;2UB6bFD4QUSAu9rXFwZFhw&#125;&#123;q72ZliAYQOq5r_Zq7-vFxw&#125;&#123;172.19.0.2&#125;&#123;172.19.0.2:9300&#125;&#123;cdfhilmrstw&#125;&#123;ml.machine_memory=8348790784, xpack.installed=true, transform.node=true, ml.max_open_jobs=20, ml.max_jvm_size=4177526784&#125;]; discovery will continue using [127.0.0.1:9300, 127.0.0.1:9301, 127.0.0.1:9302, 127.0.0.1:9303, 127.0.0.1:9304, 127.0.0.1:9305] from hosts providers and [&#123;64a558eac1e4&#125;&#123;2UB6bFD4QUSAu9rXFwZFhw&#125;&#123;q72ZliAYQOq5r_Zq7-vFxw&#125;&#123;172.19.0.2&#125;&#123;172.19.0.2:9300&#125;&#123;cdfhilmrstw&#125;&#123;ml.machine_memory=8348790784, xpack.installed=true, transform.node=true, ml.max_open_jobs=20, ml.max_jvm_size=4177526784&#125;] from last-known cluster state; node term 0, last-accepted version 0 in term 0&quot; &#125;</span><br></pre></td></tr></table></figure><p>ElasticSearch自体の応答はある。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack/2021-08-15-logging-efk-stack-elasticsearch-01.png" alt="ElasticSearch width=640"></p><p>標準のノード名がランダムな値となっているので、ノード名とクラスター名を明示的に設定する。</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">elasticsearch:</span></span><br><span class="line">  <span class="attr">image:</span> <span class="string">elasticsearch:7.12.0</span></span><br><span class="line">  <span class="attr">expose:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="number">9200</span></span><br><span class="line">  <span class="attr">ports:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;9200:9200&quot;</span></span><br><span class="line">  <span class="attr">environment:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">node.name=es-node</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">cluster.name=es-cluster</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">cluster.initial_master_nodes=es-node</span></span><br></pre></td></tr></table></figure><h2><span id="設定後に各ポートにアクセスすると">設定後に各ポートにアクセスすると</span></h2><h3><span id="elasticsearch">ElasticSearch</span></h3><p>ElasticSearch(localhost:9200)にアクセスすると、設定したノード名やクラスター名が表示されている。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack/2021-08-15-logging-efk-stack-elasticsearch-02.png" alt="ElasticSearch width=640"></p><h3><span id="kibana">Kibana</span></h3><p>Kibana(localhost:5601)へアクセスするとKibanaのUIが表示される。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack/2021-08-15-logging-efk-stack-kibana-01.png" alt="Kibana width=640"></p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack/2021-08-15-logging-efk-stack-kibana-02.png" alt="Kibana width=640"></p><h2><span id="fluent-bitからがelasticsearchにせつぞくできていないfaradayerrorconnectionfailed">Fluent-bitからがElasticSearchにせつぞくできていない・・・Faraday::Error::ConnectionFailed</span></h2><p>正常にログが転送されると、KibanaのIndexManagementに<code>fluentd-YYYYMMDD</code>の形式でインデックスが登録される。<br>しかし、インデックスが存在しない状態…ログを確認すると、以下のエラーが出ている。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">fluentd_1        | 2021-08-15 03:12:14 +0000 [warn]: #0 failed to flush the buffer. retry_time=13 next_retry_seconds=2021-08-15 04:17:15 +0000 chunk=&quot;5c98f797a0fdcfe5f8155507b4d141b4&quot; error_class=NameError error=&quot;uninitialized constant Faraday::Error::ConnectionFailed&quot;</span><br><span class="line">fluentd_1        |   2021-08-15 03:12:14 +0000 [warn]: #0 suppressed same stacktrace</span><br><span class="line">fluentd_1        | 2021-08-15 03:12:14.571214000 +0000 fluent.warn: &#123;&quot;retry_time&quot;:13,&quot;next_retry_seconds&quot;:&quot;2021-08-15 04:17:15 +0000&quot;,&quot;chunk&quot;:&quot;5c98f797a0fdcfe5f8155507b4d141b4&quot;,&quot;error&quot;:&quot;#&lt;NameError: uninitialized constant Faraday::Error::ConnectionFailed&gt;&quot;,&quot;message&quot;:&quot;failed to flush the buffer. retry_time=13 next_retry_seconds=2021-08-15 04:17:15 +0000 chunk=\&quot;5c98f797a0fdcfe5f8155507b4d141b4\&quot; error_class=NameError error=\&quot;uninitialized constant Faraday::Error::ConnectionFailed\&quot;&quot;&#125;</span><br></pre></td></tr></table></figure><h3><span id="fluentconfではコンテナ名を指定する">fluent.confではコンテナ名を指定する</span></h3><p>いろいろ思考錯誤した結果、<code>fluent.conf</code>のhostではコンテナ名を明示する必要がある。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"># fluentd/conf/fluent.conf</span><br><span class="line">&lt;source&gt;</span><br><span class="line">  @type forward</span><br><span class="line">  port 24224</span><br><span class="line">  bind 0.0.0.0</span><br><span class="line">&lt;/source&gt;</span><br><span class="line">&lt;match *.**&gt;</span><br><span class="line">  @type copy</span><br><span class="line">  &lt;store&gt;</span><br><span class="line">    @type elasticsearch</span><br><span class="line">    host es-node</span><br><span class="line">    port 9200</span><br><span class="line">    logstash_format true</span><br><span class="line">    logstash_prefix fluentd</span><br><span class="line">    logstash_dateformat %Y%m%d</span><br><span class="line">    include_tag_key true</span><br><span class="line">    type_name access_log</span><br><span class="line">    tag_key @log_name</span><br><span class="line">    flush_interval 1s</span><br><span class="line">  &lt;/store&gt;</span><br><span class="line">  &lt;store&gt;</span><br><span class="line">    @type stdout</span><br><span class="line">  &lt;/store&gt;</span><br><span class="line">&lt;/match&gt;</span><br></pre></td></tr></table></figure><h3><span id="kibanaでインデックスるが作成されている">Kibanaでインデックスるが作成されている</span></h3><p>ログインすると前とは異なりいきなりログイン後画面に。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack/2021-08-15-logging-efk-stack-kibana-03.png" alt="Kibana width=640"></p><p>左上のメニューから<strong>Stack Managemet</strong>を選択。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack/2021-08-15-logging-efk-stack-kibana-04.png" alt="Kibana width=640"></p><p><strong>Index Management</strong>を選択。<code>fluentd-YYYYMMDD</code>の形式でインデックスが登録されている。</p><p><img src="https://res.cloudinary.com/dixu1vjpk/image/upload/c_scale,f_auto,q_auto:good,w_640/v1/logging-efk-stack/2021-08-15-logging-efk-stack-kibana-05.png" alt="Kibana width=640"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;efk-compose&quot;&gt;EFK Compose&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://docs.fluentd.org/v/0.12/articles/docker-logging-efk-compose&quot;&gt;Docker Lo</summary>
      
    
    
    
    <category term="Container" scheme="https://www.nullpo.io/categories/Container/"/>
    
    <category term="Logging" scheme="https://www.nullpo.io/categories/Logging/"/>
    
    
    <category term="Docker" scheme="https://www.nullpo.io/tags/Docker/"/>
    
    <category term="docker-compose" scheme="https://www.nullpo.io/tags/docker-compose/"/>
    
    <category term="Fluent-Bit" scheme="https://www.nullpo.io/tags/Fluent-Bit/"/>
    
    <category term="ElasticSearch" scheme="https://www.nullpo.io/tags/ElasticSearch/"/>
    
    <category term="Kibana" scheme="https://www.nullpo.io/tags/Kibana/"/>
    
  </entry>
  
  <entry>
    <title>Fluent-BitのParserでログフォーマットを識別して適切なログ出力に整形する</title>
    <link href="https://www.nullpo.io/2021/05/21/logging-fluent-bit-parser/"/>
    <id>https://www.nullpo.io/2021/05/21/logging-fluent-bit-parser/</id>
    <published>2021-05-21T08:11:00.000Z</published>
    <updated>2021-06-04T01:59:10.110Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="parserを使用していない場合">Parserを使用していない場合</span></h2><p>出力されたログは適切にParseされていない。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578165.000000000, &#123;&quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:45 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 71d75b79d476: [1621578168.000000000, &#123;&quot;container_id&quot;=&gt;&quot;71d75b79d476723bb0cece0516e50ed36ddb99b36db21573eaa11baabeb67c06&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:48 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 4fb66927922a: [1621578171.000000000, &#123;&quot;container_id&quot;=&gt;&quot;4fb66927922a06fd696ed9ee5cc2c5c287592ab13786b9fc9e5704ac3b8077ea&quot;, &quot;container_name&quot;=&gt;&quot;/stdout_web2_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:51 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;&#125;]</span><br></pre></td></tr></table></figure><h2><span id="既定のnginxのparserを使う">既定のnginxのParserを使う</span></h2><p><a href="https://docs.fluentbit.io/manual/pipeline/filters/parser">Parser</a>でFILTERでParserを指定する方法が記載されている。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">[SERVICE]</span><br><span class="line">    Parsers_File /path/to/parsers.conf</span><br><span class="line"></span><br><span class="line">[INPUT]</span><br><span class="line">    Name dummy</span><br><span class="line">    Tag  dummy.data</span><br><span class="line">    Dummy &#123;&quot;data&quot;:&quot;100 0.5 true This is example&quot;&#125;</span><br><span class="line"></span><br><span class="line">[FILTER]</span><br><span class="line">    Name parser</span><br><span class="line">    Match dummy.*</span><br><span class="line">    Key_Name data</span><br><span class="line">    Parser dummy_test</span><br><span class="line"></span><br><span class="line">[OUTPUT]</span><br><span class="line">    Name stdout</span><br><span class="line">    Match *</span><br></pre></td></tr></table></figure><p>これを参考にFILTERを利用する設定を定義する。<br><strong>parsers.conf</strong>では様々なParserが定義されており、今回はnginxを使用する。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">[PARSER]</span><br><span class="line">    Name   nginx</span><br><span class="line">    Format regex</span><br><span class="line">    Regex ^(?&lt;remote&gt;[^ ]*) (?&lt;host&gt;[^ ]*) (?&lt;user&gt;[^ ]*) \[(?&lt;time&gt;[^\]]*)\] &quot;(?&lt;method&gt;\S+)(?: +(?&lt;path&gt;[^\&quot;]*?)(?: +\S*)?)?&quot; (?&lt;code&gt;[^ ]*) (?&lt;size&gt;[^ ]*)(?: &quot;(?&lt;referer&gt;[^\&quot;]*)&quot; &quot;(?&lt;agent&gt;[^\&quot;]*)&quot;)</span><br><span class="line">    Time_Key time</span><br><span class="line">    Time_Format %d/%b/%Y:%H:%M:%S %z</span><br></pre></td></tr></table></figure><p><code>Parsers_File    parsers.conf</code>を設定することで、この既定のParserが利用可能になる。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">[SERVICE]</span><br><span class="line">    Log_Level       info</span><br><span class="line">    Parsers_File    parsers.conf</span><br><span class="line"></span><br><span class="line">[INPUT]</span><br><span class="line">    Name    forward</span><br><span class="line">    Listen  0.0.0.0</span><br><span class="line">    Port    24224</span><br><span class="line"></span><br><span class="line">[FILTER]</span><br><span class="line">    Name parser</span><br><span class="line">    Match *</span><br><span class="line">    Key_Name log</span><br><span class="line">    Parser nginx</span><br><span class="line"></span><br><span class="line">[OUTPUT]</span><br><span class="line">    Name stdout</span><br><span class="line">    Match *</span><br></pre></td></tr></table></figure><p><strong>Name parser</strong>のFILTER定義を作成する。<br>対象となるのは現在<strong>log</strong>で出力されている部分だ。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&quot;log&quot;=&gt;&quot;172.24.0.1 - - [21/May/2021:06:22:48 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;&quot;</span><br></pre></td></tr></table></figure><h2><span id="parseされたenginxアクセスログ">Parseされたenginxアクセスログ</span></h2><p>nginxのログ部分はParseされて出力された。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">web1_1        | 172.23.0.1 - - [21/May/2021:07:35:34 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.23.0.1 - - [21/May/2021:07:35:34 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.23.0.1 - - [21/May/2021:07:35:35 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web2_1        | 172.23.0.1 - - [21/May/2021:07:35:36 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web2_1        | 172.23.0.1 - - [21/May/2021:07:35:37 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web2_1        | 172.23.0.1 - - [21/May/2021:07:35:37 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">fluent-bit_1  | [0] 9dfdc1a8b440: [1621582534.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [1] 9dfdc1a8b440: [1621582534.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [2] 9dfdc1a8b440: [1621582535.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [0] 5b4d36337166: [1621582536.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [1] 5b4d36337166: [1621582537.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [2] 5b4d36337166: [1621582537.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;&#125;]</span><br></pre></td></tr></table></figure><h2><span id="parse対象以外の項目を残す">Parse対象以外の項目を残す</span></h2><p>しかし,元々出力されえていた<strong>container_id</strong>などが消えてしまっている。<br>そこで<code>Reserve_Data On</code>を使用して元の項目を残す。ただし、Prase対象の<strong>log</strong>は必要ないので、<code>Preserve_Key Off</code>で残さないようにする。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">[SERVICE]</span><br><span class="line">    Log_Level       info</span><br><span class="line">    Parsers_File    parsers.conf</span><br><span class="line"></span><br><span class="line">[INPUT]</span><br><span class="line">    Name    forward</span><br><span class="line">    Listen  0.0.0.0</span><br><span class="line">    Port    24224</span><br><span class="line"></span><br><span class="line">[FILTER]</span><br><span class="line">    Name parser</span><br><span class="line">    Match *</span><br><span class="line">    Key_Name log</span><br><span class="line">    Parser nginx</span><br><span class="line">    Preserve_Key Off</span><br><span class="line">    Reserve_Data On</span><br><span class="line"></span><br><span class="line">[OUTPUT]</span><br><span class="line">    Name stdout</span><br><span class="line">    Match *</span><br></pre></td></tr></table></figure><p>結果は以下。期待通りの項目が出力されている。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">web1_1        | 172.23.0.1 - - [21/May/2021:07:47:03 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.23.0.1 - - [21/May/2021:07:47:04 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.23.0.1 - - [21/May/2021:07:47:04 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">web1_1        | 172.23.0.1 - - [21/May/2021:07:47:05 +0000] &quot;GET / HTTP/1.1&quot; 304 0 &quot;-&quot; &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot; &quot;-&quot;</span><br><span class="line">fluent-bit_1  | [0] 9dfdc1a8b440: [1621583223.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;, &quot;container_id&quot;=&gt;&quot;9dfdc1a8b440382b3185db05516656af156ce2f220a293857cf6039a32af102c&quot;, &quot;container_name&quot;=&gt;&quot;/parser_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [1] 9dfdc1a8b440: [1621583224.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;, &quot;container_id&quot;=&gt;&quot;9dfdc1a8b440382b3185db05516656af156ce2f220a293857cf6039a32af102c&quot;, &quot;container_name&quot;=&gt;&quot;/parser_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [2] 9dfdc1a8b440: [1621583224.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;, &quot;container_id&quot;=&gt;&quot;9dfdc1a8b440382b3185db05516656af156ce2f220a293857cf6039a32af102c&quot;, &quot;container_name&quot;=&gt;&quot;/parser_web1_1&quot;&#125;]</span><br><span class="line">fluent-bit_1  | [3] 9dfdc1a8b440: [1621583225.000000000, &#123;&quot;remote&quot;=&gt;&quot;172.23.0.1&quot;, &quot;host&quot;=&gt;&quot;-&quot;, &quot;user&quot;=&gt;&quot;-&quot;, &quot;method&quot;=&gt;&quot;GET&quot;, &quot;path&quot;=&gt;&quot;/&quot;, &quot;code&quot;=&gt;&quot;304&quot;, &quot;size&quot;=&gt;&quot;0&quot;, &quot;referer&quot;=&gt;&quot;-&quot;, &quot;agent&quot;=&gt;&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36&quot;, &quot;container_id&quot;=&gt;&quot;9dfdc1a8b440382b3185db05516656af156ce2f220a293857cf6039a32af102c&quot;, &quot;container_name&quot;=&gt;&quot;/parser_web1_1&quot;, &quot;source&quot;=&gt;&quot;stdout&quot;&#125;]</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;parserを使用していない場合&quot;&gt;Parserを使用していない場合&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;出力されたログは適切にParseされていない。&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;t</summary>
      
    
    
    
    <category term="Container" scheme="https://www.nullpo.io/categories/Container/"/>
    
    <category term="Logging" scheme="https://www.nullpo.io/categories/Logging/"/>
    
    
    <category term="Docker" scheme="https://www.nullpo.io/tags/Docker/"/>
    
    <category term="docker-compose" scheme="https://www.nullpo.io/tags/docker-compose/"/>
    
    <category term="Fluent-Bit" scheme="https://www.nullpo.io/tags/Fluent-Bit/"/>
    
  </entry>
  
  <entry>
    <title>バッチファイルでファイルリストのforル―プ</title>
    <link href="https://www.nullpo.io/2021/05/21/shellscript-bat-filelist/"/>
    <id>https://www.nullpo.io/2021/05/21/shellscript-bat-filelist/</id>
    <published>2021-05-21T01:07:00.000Z</published>
    <updated>2021-05-21T01:24:13.181Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="ファイルリストをforループで出力する">ファイルリストをforループで出力する</span></h2><figure class="highlight bat"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">@<span class="built_in">echo</span> off</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> <span class="variable">%%f</span>　<span class="keyword">in</span> (.\*) <span class="keyword">do</span> (</span><br><span class="line">    <span class="built_in">echo</span> <span class="variable">%%~</span>nxf</span><br><span class="line">)</span><br></pre></td></tr></table></figure><h2><span id="~nx変数でファイルパスを加工する">%~nx変数でファイルパスを加工する</span></h2><p>指定されたファイルパスをファイル名に加工する。<br>実はfor文の変数は加工する機能がある。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">%* バッチ スクリプト内では、すべての引数 (%1、%2、%3、%4、</span><br><span class="line">    %5 など) を参照します。</span><br><span class="line"></span><br><span class="line">バッチ パラメーター (%n) の置換は拡張されました。次のオプション構文</span><br><span class="line">を使うことができます:</span><br><span class="line"></span><br><span class="line">    %~1         - すべての引用句 (&quot;) を削除して、%1 を展開します。</span><br><span class="line">    %~f1        - %1 を完全修飾パス名に展開します。</span><br><span class="line">    %~d1        - %1 をドライブ文字だけに展開します。</span><br><span class="line">    %~p1        - %1 をパスだけに展開します。</span><br><span class="line">    %~n1        - %1 をファイル名だけに展開します。</span><br><span class="line">    %~x1        - %1 をファイル拡張子だけに展開します。</span><br><span class="line">    %~s1        - 展開されたパスは、短い名前だけを含みます。</span><br><span class="line">    %~a1        - %1 をファイル属性に展開します。</span><br><span class="line">    %~t1        - %1 をファイルの日付/時刻に展開します。</span><br><span class="line">    %~z1        - %1 をファイルのサイズに展開します。</span><br><span class="line">    %~$PATH:1   - PATH 環境変数に指定されているディレクトリを検索し、</span><br><span class="line">                   最初に見つかった完全修飾名に %1 を展開します。</span><br><span class="line">                   環境変数名が定義されていない場合、または</span><br><span class="line">                   検索してもファイルが見つからなかった場合は、</span><br><span class="line">                   この修飾子を指定すると空の文字列に展開されます。</span><br><span class="line"></span><br><span class="line">修飾子を組み合わせて、複合結果を得ることもできます:</span><br><span class="line"></span><br><span class="line">    %~dp1       - %1 をドライブ文字とパスだけに展開します。</span><br><span class="line">    %~nx1       - %1 をファイル名と拡張子だけに展開します。</span><br><span class="line">    %~dp$PATH:1 - PATH 環境変数に指定されているディレクトリを</span><br><span class="line">                   検索して %1 を探し、最初に見つかったファイル</span><br><span class="line">                   のドライブ文字とパスだけに展開します。</span><br><span class="line">    %~ftza1     - %1 を DIR の出力行のように展開します。</span><br><span class="line"></span><br><span class="line">上の例の %1 と PATH は、他の有効な値で置き換えることができ</span><br><span class="line">ます。%~ 構文は有効な引数の数によって区切られます。%~ 修飾子</span><br><span class="line">は %* と同時には使用できません。</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;ファイルリストをforループで出力する&quot;&gt;ファイルリストをforループで出力する&lt;/span&gt;&lt;/h2&gt;&lt;figure class=&quot;highlight bat&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span cla</summary>
      
    
    
    
    <category term="ShellScript" scheme="https://www.nullpo.io/categories/ShellScript/"/>
    
    
    <category term="Batch" scheme="https://www.nullpo.io/tags/Batch/"/>
    
  </entry>
  
  <entry>
    <title>Visual Studio Codeでまとめてタブインデント戻ししたい</title>
    <link href="https://www.nullpo.io/2021/05/06/vscode-editor-decrement-tab-indent/"/>
    <id>https://www.nullpo.io/2021/05/06/vscode-editor-decrement-tab-indent/</id>
    <published>2021-05-06T02:38:00.000Z</published>
    <updated>2021-05-21T01:24:13.216Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="タブインデントを増やすとき">タブインデントを増やすとき</span></h2><p>対象のコードブロックを選択して、<code>TAB</code>。</p><p>例えば、以下のコードで<code>&lt;meta&gt;</code>と<code>&lt;title&gt;</code>の２行を選択し、</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;utf-8&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">title</span>&gt;</span>TEST PAGE<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br></pre></td></tr></table></figure><p><code>TAB</code>をおすと</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;utf-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>TEST PAGE<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br></pre></td></tr></table></figure><h2><span id="タブインデントを戻すときは">タブインデントを戻すときは</span></h2><p>対象コードブロックを選択して、<code>Shift + TAB</code>！</p><p>同様に、<code>&lt;meta&gt;</code>と<code>&lt;title&gt;</code>の２行を選択し、</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;utf-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>TEST PAGE<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br></pre></td></tr></table></figure><p><code>Shift + TAB</code>をおすと</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;utf-8&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">title</span>&gt;</span>TEST PAGE<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;タブインデントを増やすとき&quot;&gt;タブインデントを増やすとき&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;対象のコードブロックを選択して、&lt;code&gt;TAB&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;例えば、以下のコードで&lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt;と&lt;code</summary>
      
    
    
    
    <category term="Visual Studio Code" scheme="https://www.nullpo.io/categories/Visual-Studio-Code/"/>
    
    
    <category term="VSCode TextEditor" scheme="https://www.nullpo.io/tags/VSCode-TextEditor/"/>
    
  </entry>
  
  <entry>
    <title>Git for Windowsの文字コード変換</title>
    <link href="https://www.nullpo.io/2021/05/04/git-config-autocrlf/"/>
    <id>https://www.nullpo.io/2021/05/04/git-config-autocrlf/</id>
    <published>2021-05-04T14:20:00.000Z</published>
    <updated>2021-05-21T01:17:06.074Z</updated>
    
    <content type="html"><![CDATA[<h2><span id="bashスクリプトの文字コードがおかしくなる">Bashスクリプトの文字コードがおかしくなる</span></h2><p>開発はWindows上で行っているが、実行はDockerを使用している。<br>この環境で<code>git pull</code>するとBashスクリプトの改行コードがCRLFにかわり、実行エラーになってしまう事象が発生。</p><h2><span id="改行コードをかえているもの">改行コードをかえているもの</span></h2><p>gitの<code>core.autocrlf=true</code>が変換している。</p><h2><span id="coreautocrlfの挙動">core.autocrlfの挙動</span></h2><p>ローカルリポジトリからのcheckout時とcommit時に変換している</p><table><thead><tr><th>Value</th><th>checkout(IN)</th><th>commit(OUT)</th></tr></thead><tbody><tr><td>true</td><td>LFからCRLF</td><td>CRLFからLF</td></tr><tr><td>input</td><td>―</td><td>CRLFからLF</td></tr><tr><td>false</td><td>―</td><td>―</td></tr></tbody></table><h2><span id="どうするか">どうするか？</span></h2><p>リポジトリはLF統一にしたいので、<code>input</code>を選択。</p><h2><span id="設定">設定</span></h2><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> &gt; git config <span class="literal">-l</span></span><br><span class="line">...略...</span><br><span class="line">core.autocrlf=true</span><br><span class="line">...略...</span><br><span class="line"><span class="built_in">PS</span> &gt; git config -<span class="literal">-global</span> core.autocrlf input</span><br><span class="line"><span class="built_in">PS</span> &gt; git config <span class="literal">-l</span></span><br><span class="line">...略...</span><br><span class="line">core.autocrlf=input</span><br><span class="line">...略...</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2&gt;&lt;span id=&quot;bashスクリプトの文字コードがおかしくなる&quot;&gt;Bashスクリプトの文字コードがおかしくなる&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;開発はWindows上で行っているが、実行はDockerを使用している。&lt;br&gt;この環境で&lt;code&gt;git pull&lt;/code</summary>
      
    
    
    
    <category term="Git" scheme="https://www.nullpo.io/categories/Git/"/>
    
    
    <category term="Git" scheme="https://www.nullpo.io/tags/Git/"/>
    
    <category term="Git for Windows" scheme="https://www.nullpo.io/tags/Git-for-Windows/"/>
    
  </entry>
  
</feed>
