<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Mackerel on notes</title><link>https://unionsep.dev/tags/mackerel/</link><description>Recent content in Mackerel on notes</description><generator>Hugo -- 0.161.1</generator><language>en</language><lastBuildDate>Fri, 08 Apr 2016 01:36:08 +0900</lastBuildDate><atom:link href="https://unionsep.dev/tags/mackerel/index.xml" rel="self" type="application/rss+xml"/><item><title>Mackerelで遊んでみた</title><link>https://unionsep.dev/posts/2016/04/08/013608/</link><pubDate>Fri, 08 Apr 2016 01:36:08 +0900</pubDate><author>unionsep</author><guid>https://unionsep.dev/posts/2016/04/08/013608/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>はてなさんが展開してるMackerelを使う機会に恵まれたので、ついでに監視してみたかったものを利用してMackerelを一通り触ってみました。<br>
meetupで出会った方に仲良くしていただいたので、導入してみたよっ！ってお伝えしたら、ブログも勧められたので、書いたことないブログも書いてみました。
Markdown記法に慣れてないので、GitのWiki書くのもやっぱり苦手で、克服できたらええなぁ&hellip;</p>
<ol>
<li><a href="/posts/2016/04/08/013608/#no1">Mackerelにサインアップ、agentをインストールしてみる</a></li>
<li><a href="/posts/2016/04/08/013608/#no2">Hubotがちょいちょい落ちてたので、独自監視項目を追加してみる</a></li>
<li><a href="/posts/2016/04/08/013608/#no3">監視ルールを設定してみる</a></li>
<li><a href="/posts/2016/04/08/013608/#no4">Slackに投稿できるようにしてみる</a></li>
<li><a href="/posts/2016/04/08/013608/#no5">Slackから再起動スクリプトを叩けるようにできたらええな&hellip;</a></li>
<li><a href="/posts/2016/04/08/013608/#no6">まとめなど</a></li>
</ol>
<h4 id="no1">サインアップとインストール<a href="#no1" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>なんのこっちゃないです。<a href="https://mackerel.io/ja/">ここ</a> からメールアドレスで登録しました。<br>
サインインするとオーガニゼーション、サービス、ホストを作るスタートアップガイドがあったので、その通り作りました。適当にネーミングしたの、、やっぱ失敗だったかな。</p>
<p>エージェントのインストールはrpmが選べるみたいだったので、その通り、叩いてみた。<br>
特にひっかかりなく、agentもインストールできたんですが、sedでapikeyを書き換えるんですね。起動時にuser/passの入力を想像してたんで、ちょっと以外でした。</p>
<p>で、mackerelのページに戻ったら、もう既にcpuやらmemoryやらの6個ぐらいのグラフが出来上がってた。こいつぁ、早い！って感心しました。</p>
<h4 id="no2">Hubotを監視してみる<a href="#no2" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>Slackである形式で投稿したら、メールも送信してくれるみたいなHubotのscriptを作ってたんですが、v3のHubotで運用していたせいか、3,4日ほど利用されないとSocketが切れるのか、Hubot自体もKILLされてるみたいな現象が起きてました。<br>
休み明けに会社来て、bot無反応だったよって聞くたびに悲しくなったので、モニタリングしてみたかったのでカスタムメトリックなるものを作ってみました。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:31:13 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> ERROR Last pong is too old: 14.844
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:31:13 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Reconnecting in 1000ms
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:31:14 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Attempting reconnect
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:31:14 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Connecting...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:31:43 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Slack client closed, waiting <span style="color:#66d9ef">for</span> reconnect
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:32:18 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> ERROR undefined
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:32:18 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Reconnecting in 2000ms
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:32:20 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Attempting reconnect
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:32:20 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Connecting...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:32:21 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Logged in as &lt;むふふ&gt;, but not yet connected
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>Tue Dec <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">2015</span> 01:32:22 GMT+0900 <span style="color:#f92672">(</span>JST<span style="color:#f92672">)]</span> INFO Slack client now connected
</span></span><span style="display:flex;"><span>error: Forever detected script was killed by signal: SIGKILL
</span></span></code></pre></div><p>落ちてた時のログがこれ。<br>
どうもKILLシグナルが出てるみたいだから、プロセス監視できたら良いかなーって思ってたら、こちらの方と全く同じ要件でした。。確かに私もよくわからなかったです。(´・ω・｀)</p>
<aside class="cite-card">
    <img
      class="cite-card__image"
      src="https://cdn.image.st-hatena.com/image/scale/551911ae67467a33c05e6f4459000e9b05b5ccb7/backend=imagemagick;version=1;width=1300/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fa%2Farata3da4%2F20150623%2F20150623003900.png"
      alt=""
      loading="lazy"
    >

  <a href="https://arata.hatenadiary.com/entry/2015/06/23/005339" target="_blank" rel="noopener noreferrer">
    <div class="cite-card__title">mackerelを利用してhubotが死んだ時に気がつくようにした</div>
      <div class="cite-card__description">
        趣味でhubotいじったりしてるんですが、たまに死んでる時があります。 Slackでコマンド打って何も返ってこないと切なくなるので、 死んだ時に死んでしまうとは情けないと言えるよう…
      </div>

    <div class="cite-card__site">日頃の行い</div>
  </a>
</aside>

<p>で、いろいろ調べてると、公式プラグイン集なるものがGitHubに集められていて、またまたrpmでインストールできる事が分かりました。で早速入れてみました。</p>
<p><a href="https://github.com/mackerelio/mackerel-agent-plugins">mackerelio/mackerel-agent-plugins</a></p>
<ul>
<li>mackerel-plugin-apache2</li>
<li>mackerel-plugin-php-apc</li>
<li>mackerel-plugin-memcached</li>
</ul>
<p>また特になんのひっかかりもなくインストールできて、<code>/usr/local/bin</code>に監視スクリプトが配置されていました。<a href="https://mackerel.io/ja/docs/entry/howto/mackerel-agent-plugins">ヘルプ</a>にある通り、<code>/etc/mackerel-agent/mackerel-agent.conf</code>のコメントアウトを解除してあげたら即反映されてました。<br>
Apacheだったらserver-statusを見れるようにしとくとか、段取りがあるプラグインもありますが、とってもお手軽でした。Sensuは触ったことないけど、munin触ったことあったらつまづく箇所ないんじゃないかっていうぐらいでした。</p>
<p>ということで、どうやら<code>/usr/local/bin</code>にmackerel-pluginから始まるスクリプトを用意して食わせるって感じだったので、シェルスクリプトだけど作ってみました。</p>
<p><em>at /usr/local/bin/mackerel-plugin-hubot</em></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/sh
</span></span></span><span style="display:flex;"><span>echo -e <span style="color:#e6db74">&#34;&lt;むふふ&gt;-hubot\t`ps aux|grep hubot|grep adapter|wc -l`\t`date -u +%s`&#34;</span>
</span></span></code></pre></div><p><em>at /etc/mackerel-agent/mackerel-agent.conf</em></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#f92672">[</span>plugin.metrics.&lt;むふふ&gt;-hubot<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>command <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/usr/local/bin/mackerel-plugin-hubot&#34;</span>
</span></span></code></pre></div><p>文字列 Tab 数字 Tab <code>date -u +%s</code>な感じで標準出力したら、うまいこと読んでくれました。こんなんでも食ってくれるんだったら、perlでもphpでもなんでも作れそうです。公式プラグイン集はGo言語が多かったようです。agentがGo言語製だからかな？</p>
<h4 id="no3">監視ルールを設定してみる<a href="#no3" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>Monitorsの監視ルールを追加から、作ったメトリックのルールを追加してみました。監視対象のメトリックから、絞り込んで設定。プロセスが1未満だったらWarningにもCriticalにもする的な設定にしてみました。<br>
どうでもええけど、不等号がどっちやったっけ？ってちょっとだけ迷いました。</p>
<h4 id="no4">Slackに投稿<a href="#no4" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>Monitorsのチャンネル設定から設定しました。アラートはEmailもSlackもチャンネルって呼ぶそうです。<br>
SlackはIncoming WebhooksのURLを設定すればいいみたいですね。<br>
で、おもむろにHubotをstopしてみたら、グラフ付きでちゃんと通知来ました！メールボムみたいにギャンギャン通知くるのかなー？どうなのかなー？って10分ほどおいてみましたけど、そうでもなかったです。これは嬉しいですね。<br>
待ってるの飽きてきたので、startしたら、グラフ付きでちゃんとokきました。</p>
<h4 id="no5">SlackからHubotを再起動<a href="#no5" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>Slash CommandsからJenkinsAPIを叩いて行けそうだったんですが、認証通すのがしんどかったので、それ用のWebAPIを用意した方が速そうって気付きました。<br>
でも、もはやMackerel関係ないし、時間切れだしで、また今度作ろうと心に誓って作業終了にしました。</p>
<h4 id="no6">まとめ<a href="#no6" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>一通りmackerelを触ってみた感想は、既存のツールを意識した作りにしてるのかなーって思いました。今使ってるツールのこうならんかなー的な欲求を汲んでくれてるかなと。<br>
Zabbixのグラフ探すのが未だに苦手、muninの通知設定苦手〜とか。。あれ、俺だけか・・・</p>
<p>ブログは、、あれですね。書くのに超時間かかりました。。世のブロガーさんはすげーなって感心です。もっと画像とか入れたら華があったんだろうなぁ〜。</p>
]]></content></item></channel></rss>