koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

Mackerelエージェントから他のサービスに投稿したい Vol.0

GoでHelloWorldからはじめて、AWS IoTのMQTTトピック(別にAzure IoT HubのAMQPでもいいのだけれど)にMackerelエージェント(を弄ったエージェント)から投稿したい。と思ったのでとりあえず記事にした。是非は微妙な気がするが。。。

f:id:koudenpa:20180424013604p:plain

初心だけ表明して(正しい誤字だと思う)やらないことは多々あるので、この段階ではそういうことを考えている人もいるのだ。程度の記事である。

Mackerelエージェントとその周辺のプラグイン群は1分粒度の情報収集に関しては相当に優秀なエコシステムだ。 これらの情報は完全にエージェントからサービスへのPushで収集されている。 つまり、理屈の上ではPush先さえ変えれば任意のサービスで同様の情報を収集することができる。

ここからは個人の事情だが、そろそろバズワードとしての効力が落ち着いてきているIoTのデバイスにはLinuxOSが動作しているようなリッチなものも多い。

これらのデバイスの動作状況は非常に欲しい情報だが、いい感じに収集できるシステムは寡聞にして知らない。 (各デバイスのベンダーにロックインされている印象)

かといって、素直にMackerelを使用して監視するほどのコスト感のホストでもない。

そうした状況に対してOSSとしてのMackerelエージェントのエコシステムを使ってみたら面白いのではないかなぁ。 と思った次第。

とりあえずGoをインストーラでインストールして、Mackerelエージェントのリポジトリをクローンして、build.bat を叩いたらエラーしたので寝ようかと思う。Vol.1があれば自分の手元でビルドしたエージェントを動作させたいところである。

PS C:\Users\koudenpa\Source\Repos\github\mackerel-agent> .\build.bat
C:\Users\koudenpa\Source\Repos\github\mackerel-agent>echo on
C:\Users\koudenpa\Source\Repos\github\mackerel-agent>FOR /F "usebackq" %w IN (`git rev-parse --short HEAD`) DO SET COMMIT=%w
C:\Users\koudenpa\Source\Repos\github\mackerel-agent>SET COMMIT=13a938e
C:\Users\koudenpa\Source\Repos\github\mackerel-agent>go build -o build/mackerel-agent.exe -ldflags="-X main.gitcommit=13a938e " github.com/mackerelio/mackerel-agent
can't load package: package github.com/mackerelio/mackerel-agent: cannot find package "github.com/mackerelio/mackerel-agent" in any of:
        C:\Go\src\github.com\mackerelio\mackerel-agent (from $GOROOT)
        C:\Users\koudenpa\go\src\github.com\mackerelio\mackerel-agent (from $GOPATH)
PS C:\Users\koudenpa\Source\Repos\github\mackerel-agent>

ローカルマシンのユーザー名とフォルダ構造が暴露されたところで失うものはない。


余談だが、コスト感に関してはMackerel界隈ではたびたび話題に出ている。

クラウドインテグレーションやIoTデバイスなど多彩なホストに対して、納得感のあるコスト提示があるとより活用しやすくなり、利用側提供側で相互にメリットがあると考えている。

いや、ぶっちゃけフルのLinuxが動作しているインスタンスのホストと、Lambda関数やSQSのQueueのホストが同一価格とか納得できないっしょ!

なんか完全に脱線しているけれど、そんな4月下旬でした。


寝る前の追記。

>go get -u github.com/mackerelio/mackerel-agent
# github.com/mackerelio/mackerel-agent/util/windows
exec: "gcc": executable file not found in %PATH%

WindowsIDEのない開発環境に弱いなぁ。

mysql へのSelectクエリの結果をMackerelに投稿したい

と思ったので、雑にプラグインとして実行できそうなスクリプトを書いた。

[plugin.metrics.querytest]
command = "/path/to/script/metric.sh"

↓のようなスクリプトを↑のようにmackerel-agentに指定してやれた最低限やりたいことはできそうだった。

#!/bin/sh

# クエリは1行を返して value 'key1.key2.value' のように列名が . 二つで区切られるようにする
 mysql -u ${username} -p${password} ${dbname}  -B \
 -e "${query}" \
 > /tmp/metric.tsv

# メトリックな形式に行列を転置してタイムスタンプを付与して出力する
awk '
{ for (i=1; i<=NF; i++)  { a[NR,i] = $i } } NF>p { p = NF }
END {
for(j=1; j<=p; j++) { 
print(a[1,j], "\t", a[2,j], "\t", systime())
}
}' /tmp/metric.tsv

f:id:koudenpa:20180417012830p:plain

Success!!

なお、僕にはシェル力(ちから)は備わっていないので以下の記事を参考におパクりしています。

orebibou.com


↓経緯。

ランス10-のんびりプレイ

テーマ:高難易度モードでのんびりカード集め

前回プレイでは兵力が足らずにクリアAの大侵攻条件は満たせなかった。 実績での人類被害軽減はかなり効きそうなので、先にその辺りの実績を開放していくことにした。

というわけで、初高難易度モード。通常モードでは2~3枚のうち1枚選択のところ、2枚選択できてカード集めがはかどる。

魔人2人退治とかようできないので、むしろ進行はのんびりになる。

ハイライト

生きているのに駆けつけてくれないアレックス君。

しかし、割かし細かいところまでメッセージ分岐が仕込んであるから侮れない。それだけにアップデートで既読スキップが壊れてしまったのは辛い。

f:id:koudenpa:20180402025719j:plain

なお、この後自由都市が落ちてしまった。

f:id:koudenpa:20180402231616j:plain

支援を忘れていたことに気づいた瞬間変な声が出た。

のんびり15ターンまでカード集めしようと思っていたところ、これは痛い。

慣れてきた頃が一番危ないのだ。

だが、これも運命。

1週目は人類についたペルエレがケッセルリンクにつくための前振りだったのだ。

f:id:koudenpa:20180402232057j:plain

(ゲームオーバーなのでやりなおしたけれど)


旦那教育とは……? 男は容赦されなかった。

f:id:koudenpa:20180406001953p:plain

f:id:koudenpa:20180406002035p:plain

憶測だけれど、ダウン無効スキルはダウン対象の選択優先度が下がるだけ(犠牲者は上がる)で、他にダウン対象がいなかったら対象になってしまう、とかかな。

f:id:koudenpa:20180406002727p:plain


JAPANルートなのでギリギリだったけれど、ヘルマンとゼスの40枚は達成できたので上々。次は亜人とJAPANの40枚を目指そうと思う。

Bitbucket Pipelines で Ansible を Play する

Docker Hub に Ansible 実行用のコンテナが公開されているので bitbucket-pipelines.yml で image にそれを指定して、後はプレイすればよい様子。

image: ansible/centos7-ansible

pipelines:
  default:
    - step:
        caches:
          - pip
        script:
          - pip install ansible
          - ansible-playbook playbook.yml -i hosts --check

pip install ansible これ要らないんじゃないの?

気が向いたらプレーンな状態から試そう。

SSHキーの設定は必要。

f:id:koudenpa:20180404211014p:plain

場合によっては known_hosts の管理も必要。

この手の自動処理で大変なのは認証とセキュリティの処理だなぁ。

Bitbucket Pipelines の場合、CI環境とリポジトリの接続は何も考えなくてよいので、その点1か所楽かもしれない。

余談だけれど、Pipelinesのビルド結果画面で、SSH接続でエラーしていると、右下にその辺の設定のヘルプページへの案内がスライドインしてくる。 親切でありがたいのだけれど、その辺に問題があることは分かっていてエラーしてる場合が多いので、エラーしてイライラしているときに見ると更に軽くイラッとする。

今この記事に追記している時には『良い機能だなぁ。すげぇなぁ』と思うが、その案内を見たタイミングでは『んなこと分かってるよ! うぜぇ!』という感じだった。


pip install ansible これ要らないんじゃないの?

当然ながら要らなかった。

f:id:koudenpa:20180405081217p:plain

↑は↓だけ。

image: ansible/centos7-ansible

pipelines:
  default:
    - step:
        script:
          - ansible --version

bitbucket.org

ランス10のカードステータスを一覧する(WIP)

ランスシリーズは独特のキャラクターの強さ設定があり、いわゆるRPGのレベルは才能レベルというものになる。これに加えて、各キャラクターには体力や攻撃力の基礎値があり、シリーズ作品は概ね基礎値*才能レベル値で強さが表現されてきた。

その設定に対して、ランス10のキャラクターカードはカード自体にその才能レベルが割り当てられており、ゲーム中ではカードのランクを上げたり枚数を重ねたりしてカードを強くしていく形をとっており、才能レベル設定はかなり隠蔽されている。

が、カード毎にこの才能レベルが記載されているので、あるキャラクターがある才能レベルの時にどのくらいの強さの設定なのか? はそのカードの強さを見れば分かるようになっている。

設定上アホのように強い闘神はカードとしての数値もやはり異様に高い。

カード枚のそういう設定面での強さを比較する楽しみを得ることができるのだ。

というわけで、一覧を始めたのだが、ランスとリックとロレックスを入れた辺り(どれも人間の戦士の強者)で速攻で飽きた。そもそもカード揃ってないねん。

f:id:koudenpa:20180327233739p:plain

ランスはともかく、サボらずに才能限界まで鍛えたロレックスが非常に強い事が分かる。 (ランス、リックの攻撃力が才能レベルと同じなのに対して、どうも+5である様子)

追記:攻撃力に関しては才能レベルを基本にして適宜補正、という感じである様子。まじまじ見てやっとこ気づいた。補正が入っていそうなカバッハーンに補正がなかったり色々面白い。

docs.google.com

こんなシートを作っている。 (編集権限もド開放しているので暇な人は適当に編集くださると楽です嬉しいです)

気が向いた時にちまちまと気になるキャラクターの数字を入力して見てニヤニヤしたいと思う。

ランス10-多分3週目位気ままプレイ

通しでのプレイは一応3回目になるのかな? CP12位だと思う。一応目標としてはクリアAの『強行突破』と、できるだけ一気に魔人を倒す、をもってプレイした。

結果、割と頑張った気もするけれど、その最低限の目標以外は半端になってあまり実績解放には至らなかった。

ヘルマン、ゼス、亜人、JAPANが40枚未達成なので達成したいなぁ、などと思っていたのだが、魔人2討伐をしていると全然カードがたまらない。亜人も微妙に足らなかった。

八方美人はダメなのだ。

残りのクリア実績は『魔物界大侵攻』と『魔王を倒したが』なのだが、この辺も八方美人では達成できそうにない。食券イベントを少しずつ見つつ地道に達成していこうと思う。

以下メモ。


  • Turn2
    • 忘れた
    • ヘルマン魔人→2討伐成功
    • 忘れた
  • Turn3
    • ききかいかい
    • 自由都市魔人→2討伐成功
    • 忘れた
  • Turn4
    • 忘れた
    • 魔王探索
    • 忘れた
  • Turn5
    • 全域で活躍
    • シャングリラ
    • 忘れた
  • Turn6
    • クルックー護衛
    • ゼス魔人→大食い勝負に完膚なきまでに負ける→2討伐成功
    • 魔王美樹
  • Turn7
    • 支援をさぼっているとこんなもん f:id:koudenpa:20180316003535p:plain
    • 徴兵→リーザス
    • リーザス魔人→2討伐は無理かなぁ→サイゼルハウゼル含めで全く敵わなかった
    • お正月
  • Turn8
    • ホーネット奪回
      • ハウゼルはカードとしては無くてもよいようだ
    • 魔人ホーネット
  • Turn9
    • 男の子モンスター迷宮
    • ワーグ、、、にボコられた。これは無理だ。
    • なのでリーザス魔人討伐、と思ったけれど、難易度上げたくなかったので教団の遺産集めに
    • だったらなぜ魔人2討伐なんてしていたのか? 試したかった、どこまでやれるのか、無理だった、ワーグが強すぎた
  • Turn10
    • 女の子モンスター迷宮
    • 強行進軍
      • 難易度は14、最後のケイブリスのHPは2500万だった。
      • 魔人2討伐しているとあまりカードも集まらないので結構辛かった。鬼畜アタックもない。安定したアタッカー不在なんだな。大まかな戦術としては、序盤パステルの呪いでHPを削って、半分を切ったあたりから地道に削っていった。ハンティの火炎流石弾がとても頼りになった。
      • f:id:koudenpa:20180318164151j:plain

その後リロードしてワーグ(またも火炎流石弾頼り、さすが魔法Lv3魔法だ)を倒して人類圏全開放→大侵攻を成功させるには戦力不足、などしていた。

が、全然実績集まらん! なんぼか食券イベントを見た程度。

しかし、この食券イベントの作り込みはやばい。全部見られる気がしない。シナリオ集とか出してくれないかなぁ。