Datadog MySQL サービスチェック mysql.can_connect に関するモニターではno_data_timeframeを1minにすると24hとして扱われる

環境

  • Datadog Agent v6.15.0
  • CentOS 7.3.1611

問題

DatadogのMySQLインテグレーションのサービスチェック mysql.can_connect に関するservice checkモニターを作成し、 ホストダウン時も通知がされて欲しかったため、notify_no_dataを有効かつno_data_timeframeを1minに設定した。

ホストが稼働している場合にmysqldがダウンしたときは即時に通知がされたが、ホストダウンの場合の通知は24h経過した後にあった。 ホストダウンした場合にもno_dataとして通知が即時にされるのを期待していたが、そうはならなかった。

解決策

公式ドキュメント docs.datadoghq.com によると、サービスチェックにおいてno_data_timeframeは2min以上を指定することが推奨されている。 今回の場合だと、1minにしてしまったので24hとして扱われてしまったようである。 2minに設定したところ期待通りにホストダウン時に即時に通知がされるようになった。 設定自体は1minにできてしまい気がつきにくいので、注意が必要である。

Datadog Agentユーザにread権限を与えずに特定ディレクトリの使用量のメトリクスを送る

環境

  • Datadog Agent v6.15.0
  • CentOS 7.3.1611

背景

Datadogに特定のディレクトリの使用量のメトリクスを送るには、 公式で提供されている以下のインテグレーションを用いることで実現できる。 docs.datadoghq.com

しかし、このインテグレーションだと対象のディレクトリについてDatadog Agentのユーザに対してread権限を与える必要がある。 状況によってはDatadog Agentユーザにそのディレクトリのread権限を与えたくない場合がある。 対象のディレクトリにDatadog Agentユーザのread権限を与えずに使用量をDatadogに送りたい。

方法

Datadog Agentユーザに対して、sudoersの設定でディレクトリ容量取得コマンドの実行を許可する。 具体的には,sudo /usr/bin/du -sb ${対象のディレクトリのパス} を許可する。 /etc/sudoers に対して、${Datadog Agentのユーザ名} ALL= NOPASSWD: /usr/bin/du -sb ${対象ディレクトリパス} を追加する。

次に、DatadogのカスタムAgentチェックを作成する。 docs.datadoghq.com 公式ドキュメントを参考にして、以下のファイルをconf.d/custom_directory.yamlとして配置する。

init_config:
instances:
  - directory: ${directory_path}

さらに、以下のファイルをchecks.d/custom_directory.pyに配置する。

# -*- coding: utf-8 -*-
try:
    from checks import AgentCheck
except ImportError:
    from datadog_checks.checks import AgentCheck
from datadog_checks.base.utils.subprocess_output import get_subprocess_output

__version__ = "1.0.0"

class DirectoryCheck(AgentCheck):
    def check(self, instance):
        directory = instance['directory']
        size_bytes = self.__collect_directory_size_bytes(directory)
        self.gauge('ここにメトリクス名', size_bytes, tags=[ここにタグ])

    def __collect_directory_size_bytes(self, directory):
        # Datadog Agent ユーザで
        # sudo du -sb <directoryパス>
        # が実行できる必要があります
        out, err, retcode = get_subprocess_output(
            ["sudo", "/usr/bin/du", "-sb", directory],
            self.log,
            raise_on_empty_output=True,
        )
        if retcode != 0:
            raise RuntimeError(err)
        return int(out.split()[0])

対象環境でDatadog Agentを再起動すれば、custom_directoryカスタムチェックが動作し、 対象ディレクトリの容量がメトリクスとして送信される。

LocalStackのS3をbackendとresourceとしてTerraformを動かしてみた

Terraformを触ってみたい & LocakStackを触ってみたいという欲求を満たすためにやってみた。 TerraformのStateの格納先をLocakStackのS3にしている。 また、LocalStackのS3にリソースの定義している。

検証としては、S3互換APIに対するbackendとresourceの書き方を確認できたのでよかった。

Terraform触ってみたいけどパブリッククラウドのリソース使うのもなあ、という感じだったのだけど、 LocalStack使えば手元だけで済むのでいいね。 今後も、手軽にお手元でTerraformを試す環境として、使っていけるといいな。

github.com

SlackのエゴサをするSlack botをつくった

SlackのエゴサをするSlack botを作った。

Slackで指定したキーワードで検索して、引っかかった内容をSlackの指定したチャンネルに投稿する。

お仕事で社内サービスを提供しているのだが、すると、ユーザは社内の人で、ユーザの声をみたかったので作成した。 たまに手動で自分が関わっている社内サービスについてSlackの検索していたのだが、面倒なので。

思ったより役立っていて、ユーザの要望とか、不満とかの摘み取り、自動化により属人性排除できてチームの仕組みとして導入。

ちょっとしたことでも面倒なら自動化とかして楽していく気持ちを持っていきたいね。

github.com

買ってよかったもの(2021年前半1~6月)

はじめに

2021年1~6月で買ってよかったものを紹介します。

誰?

  • 26歳男性
  • フルリモートワーク
  • 今年初めに都心から郊外に引っ越した
  • Web系のインフラエンジニア

デスク系

1Kの狭い部屋に,仕事用とプライベート用のふたつのデスクをおいて生活しています。

もともと一つのデスクで仕事/プライベート用の兼用で使っていたのですが, 常時リモートワーク環境になり,仕事とプライベートの切り替えが全然できない問題があり,これをふたつのデスクを用意して場所を変えることで解決しました。

(人によると思いますが私の場合,仕事とプライベートを切り替えずにずっと過ごしていたら,半年くらい経ってから,いきなりパフォーマンスが落ちるなど影響があった感じです。)

昇降デスク(マーフィー2 120 DBR)

www.nitori-net.jp

仕事用で使用しているデスクです。 昇降式なので座ったまま/立ったままの使用ができるのですが, 座ったままのデスクはプライベート用のデスクがあるので,基本,こちらはずっと立ったままで使っています。購入してから数回しか高さを調整していないです。 最初,ずっと立ったままの仕事はきつかったのですが,きつくなったらちょうど良い休憩のタイミングだと思って,一息つくようにしています。

昇降式デスクは,インターネッツで検索すると他にもいくつか見当り, 昇降を自動/手動タイプがありますが,こちらは手動タイプです。 私のように滅多に高さを変えない場合は手動で良いと思いますが, 頻繁に高さ調整して座ったまま/立ったままを変えたい場合は,自動の方が良いと思います。 手動で変えるのは,わりと面倒です。

Dell 4Kモニター 27インチ U2720QM

仕事用デスクで使っているモニターです。 モニタ自体がUSBのハブとなり,PCとの接続をUSB Type C一本にまとめられるのが良いです。

エルゴトロン LX デスクマウント モニターアーム マットブラック

Dell 4Kモニター 27インチ U2720QM のモニタアームとして使ってます。 特に不満点なし。

BenQ ScreenBar Plus モニター掛け式ライトスクリーンバー プラス

デスクライトです。モニターの上に取り付けて使います。 部屋の構造上,部屋のライトを背に向けてデスクに向かうことになり,手元が自分の影で暗かったので,購入しました。あと,MTGで顔が暗くなってしまうのもありました。

場所を取らないのが良いです。 これに変えてから,romさん,明るくなったねと言われました。

Apple HomePod mini

www.apple.com

スマートスピーカー使ってみたいという興味本位で買いました。

買ってからしばらくはタイマーとしてしか使っていなかったのですが, 勉強の習慣がなかなかつかなくてやる時はやるけどやらない時はやらない問題に対して, こちらを使って時間になるとBGMを自動で流れるようにしたら,勉強が継続してできるようになりました。雰囲気って意外と効果あるのですね。

あと,「ラジオ体操」といえばラジオ体操が流れるようにしています。仕事を始める前にラジオ体操をやるようにしています。

飲食系

ごろっとグラノーラ まるごと大豆

朝飯として学生の頃からこれを食べ続けています。朝何も考えずに楽に食べれるのが良いです。

nosh

nosh.jp

宅配弁当のサブスクです。

昼飯と夕飯はこれを食べています。夕飯はこれだけだと少ないので,プロテインを追加で飲んでいます。

アサヒ飲料 おいしい水 天然水 ラベルレスボトル

日常で飲んでいます。定期便で自動で送るようにしています。災害時の常備水にもなっています。

柔らかいので潰すとコンパクトになることと,ペットボトルにラベルがないのでゴミ出しするときにラベルを剥がす必要がないのが良いです。

生活系

平日は楽して回るようにしたいと思っています。 ロボット掃除機や食洗器などの家電はよく時短になると言われていますが,私の場合はそれよりも面倒なことはしたくない気持ちがあって導入している感じです。

Anker Eufy RoboVac G10 Hybrid(ロボット掃除機)

仕事が終わったら動かす習慣にしています。

今まで休日にまとめて掃除していて,金曜日は部屋が汚い状態になってしまいがちだったのですが, これによって毎日習慣で掃除するようにできたので,部屋が綺麗な状態を保てるようになりました。

アイリスオーヤマ 食洗機 食器洗い乾燥機 ISHT-5000-W

自炊は休日しかやらないので,洗い物はほとんどでないので,手で洗うことなしに食洗機だけで平日は回しています。かなり楽になりました。

無印良品 麻パイルスリッパ

下の階の人に足音が伝わらないように買いました。 夏でも暑くなくて良いです。

Trek FX 2 Disc 2021

www.trekbikes.com

大学生のころから自転車なしで移動は徒歩か電車だったのですが,自転車を導入したことにより行動範囲が広くなりました。 幼いころに自転車が乗れるようになって一気に行動範囲が広くなるような感覚です。

移動の足としてだけでなく,趣味として週末に少し遠くにサイクリングに出かけたりもしています。