かまたま日記3

プログラミングメイン、たまに日常

ECSで利用しているfluent-bitのコンテナのヘルスチェックを簡易的に行う

ECS FargateのtaskからDatadogなどにログを送る場合fluent-bitのサイドカーコンテナを立てて、awsfirelensのlogDriverでログを送る事が多いと思います。

その場合、タスクの依存関係を指定しないとログが一部取りこぼしてしまう場合があるため、fluent-bitコンテナのヘルスチェックをする必要があります。 その時にfluent-bitのconfigを変更する必要があり

  • S3などに設定ファイルを置き、起動時に読み込む (参考)
  • カスタムfluent-bitコンテナをビルドし、それを利用する

などの方法が取られる事が多いですが、少し構成的にtoo muchに感じたのでそれらの設定無しで素のfluent-bitに対して簡易的にヘルスチェックをしたい場合のコマンドをご紹介します。

ss -tlnH | grep -c ':24224\>

fluent-bitがログを受け取るポートは 24224 のため、そのポートがリッスンをしているかどうかを確認できればOK、という考えです。 タスク定義ではこのような感じで指定します。

"healthCheck": {
  "command": [
    "CMD-SHELL",
    "ss -tlnH | grep -c ':24224\\>'"
  ]
}

退職しました 5

8月末で約5年半勤めた SEQSENSE を退職しました。 何気に社会人生活の中で一番長く勤めた会社でした。

これまで

警備ロボット SQ-2 や川崎重工さんとの共同開発の配送ロボット FORRO の開発を行っていました。主にクラウドサービスの開発担当で以下のようなことを行っていました

  • ロボットを遠隔で管理するためのWebアプリケーション開発
  • ロボット/クラウド 間のデータのやり取り
    • MQTT, AWS IoT, gRPC など
  • ロボットと動画、音声をやり取りするためのサーバ開発
  • 外部システムとの連携
    • 主にロボットをエレベータに乗せるための各種エレベータ連動サービスとのやりとり
  • 運用/監視周り
    • GitHub Actions, Datadog, Terraform など

単なるWebサービスの開発ではなかなか経験できないIoT関連、なおかつロボットと言う大きなモノを扱う他社ではなかなかできない経験ができたのは非常に大きかったです。

また、在職中に2度AWS関連の発表ができたのも良い経験になりました。

kamatama41.hatenablog.com

kamatama41.hatenablog.com

退職/転職の理由とか

  • 5年半在籍したことによる自身のマンネリ感の打破
  • 会社と自分の方向性がマッチしなくなってしまった

あたりが大きな理由です。詳細は直接聞いてくれればお話します。

これから

「ピープルサクセス」をミッションに主にHR領域での各種サービスを展開する PeopleX に9月から参画します。

4月に公に活動を開始したばかりの新しい会社ですが、CEOの橘 (@d_ta2bana)を筆頭に6月にはシードラウンドで16億調達するなど、異常速度で社会を変えようとしている会社に創業期から参加できる機会はそうないだろうと思いチャレンジを決意した次第です。

また、CTOの橘 (@t_tiger55 CEOの実弟) と以前一緒に働いていたこともありある程度信頼感を持って参画できるという点も大きかったです。

コンパウンドSaaSとして今後20-30個のアプリケーションを異常速度で立ち上げる計画ですのでそれらを支えるエンジニアを絶賛募集中です。よかったら採用情報を見ていただくか、Xなどで声かけいただければと! 🙏

AWS Summit Tokyo 2023に参加してきた

一ヶ月前の出来事なんですが(汗)、幕張メッセで行われたAWS Summit Tokyoに会社として参加してきました。実際に動くロボットという目を引く展示物の効果もあって、かなりの数の人がブースに来てくれて色々な話をしました *1

また、1日目にはミニステージで登壇もし

「SEQSENSEにおけるAWSを活用した 自律移動ロボットの管理手法」

というタイトルで15分の発表もさせてもらいました。

朝一番のAWSの中の人に次いでの発表だったこともあり、結構人が居て正直緊張しましたが、無難にこなせたのではないかと思います。AWS Summit自体コロナ禍を経て4年ぶりの開催とのことで、こういう大規模イベントも久しぶりに参加するのは良いなと感じました。

発表資料

*1:めちゃくちゃ疲れましたが..

t.Runでネストしたテストを実行するときの注意点

TL; DR

t.Run でネストしたテストを実行する時、Runに渡す関数はトップレベルのテストが実行されているのと別のgoroutineで実行されているのでParameterized Testなんかをやってる場合、変数のスコープに注意しましょう。

続きを読む

runtime.MemStatsを使ってリアルタイムにメモリ使用量を確認する

runtime.MemStats を使うと現時点でのメモリの使用状況などを確認できます。

とりあえず、以下のようなコードを埋めるとAlloc (割り当てられたヒープオブジェクトのバイト数) とNumGC (GCの回数) を確認できます。ついでに期間中の最大のAllocも確認しています。

その他必要なデータはMemStatsのドキュメントを読みながら適宜追加すること。

package main

import (
    "log"
    "runtime"
    "time"
)

func main() {
    tick := time.NewTicker(2 * time.Second)
    defer tick.Stop()
    go func() {
        var maxAlloc uint64
        for range tick.C {
            var s runtime.MemStats
            runtime.ReadMemStats(&s)
            toMB := func(v uint64) uint64 {
                return v / (1024 * 1024)
            }
            alloc := s.Alloc
            if maxAlloc < alloc {
                maxAlloc = alloc
            }
            log.Println("===============================")
            log.Printf("Alloc: %d\n", toMB(alloc))
            log.Printf("MaxAlloc: %d\n", toMB(maxAlloc))
            log.Printf("NumGC: %d\n", s.NumGC)
            log.Println("===============================")
        }
    }()

    someMemoryBoundFunction()
}

住宅購入記録 (2)

今回は住宅ローンに関して。

  • 住宅ローン探し
    • 変動 or 固定
    • 銀行選び
    • 団信落ちた
    • 審査通過
    • 余談 (職歴書)
  • 記事一覧
続きを読む

住宅購入記録 (1)

昨年末に家 (建売新築) を買ったのでその記録です。今回は購入する所まで。

  • 家を買うに至った経緯
    • 定期借家契約の終了
    • 賃貸 or 持ち家
  • 家探し
    • マンション or 戸建て
      • マンションの特徴
      • 戸建ての特徴
    • 戸建て探し
      • 決めたポイント
      • 妥協した点
      • 余談
  • 記事一覧
続きを読む