20210429のGoに関する記事は3件です。

cli(ターミナル)でもメトリック監視したくないっすか?

まえせつ 人生の1/4位エンジニアやってきたけどメッセージ監視がここまで生き残るとは思ってもみなかった! 深夜とかに Zabbix「エラー!」 ワイ「なんやろな・・調査始めるか・・ディスク枯渇か。削ってくしかないなー」 (調査して5分後・・) ザビ家「OK」 ワイ「自然復旧かよ・・寝るか」 (30分後) ザビ「エラー!(ニチャア)」 というのを解消してくれるのが、このツール! 作ったわ! 詳しくはリポジトリで。バイナリをダウンロードして即使いたいならこっち つかいかたは? 要するにSSHでコマンド投げて、世代数で評価して閾値を越えたら任意のコマンドを実行するツールです。 なので最近、閾値付近でうろうろしているサーバーに絞って監視を仕込めるのがウリです。 あと突発的に跳ね上がる値もキャッチしてくれます! SREの朝会、みんなでダッシュボード眺めるとしても台数が千台越えしてたらターゲット絞るしかないし、それを定量的にやるってのもなぁって思って。 各自でバッチで気になるとこチェックかけて、問題あった結果だけアクションすれば良くね?ってのが このツールの着想です。安全な警告と危険な警告の総合評価ってまだ人間しか出来ないと思うしさ。 あとがき こういうのcronでブン回したら監視SaaSをクラウドに適用する意味も薄れるかもしれないと思う。 クラウド補完計画がkubernetesで実現するとしても、それはまた先の未来で今は人のインサイト頼りで当面それは変わらないだろな。。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Goの1.16で missing go.sum entry for module ... to add: ...と出るときの対処法

起きた事 とあるアプリケーションを起動しようと、コンテナをbuildしていたらこんなエラーに遭遇しました。 go build ...のタイミングで落ちているようで。 どうやらgo.sumにモジュールが載っていないことが原因の模様です。 原因 https://golang.org/doc/go1.16#go-command ここにこんな一文が。 Build commands like go build and go test no longer modify go.mod and go.sum by default. 要するに、コード中でimportしていたら今まではgo.sumとかを変更してくれていたのが、デフォではしてくれなくなったみたいです。 全部ちゃんと書いてね☆ 対応 go mod tidy をビルド前に挟めば、今まで通り勝手に更新してくれるようになります。 自戒 ちゃんとリリースノートは読もう!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Goで作った共有ライブラリはどのへんでGCとかランタイム初期化しているか

こんにちは駆け出しエンジニアです!!!Go初心者なんでここが気になり調べました!!!!!!!!! $ go version go version go1.14 linux/amd64 $ go build -buildmode=c-shared -ldflags=-w -o hello.so hello.go $ LANG=C readelf -Wx .init_array hello.so Hex dump of section '.init_array': 0x00317068 f0930600 00000000 80680c00 00000000 .........h...... $ nm hello.so| grep 000c6880 00000000000c6880 t _rt0_amd64_linux_lib ソースもみる。手元のバージョンがちょっと古いけど全体的なロジックは変わらないだろう。たぶん。おそらく。 src/runtime/rt0_linux_amd64.s をみると TEXT _rt0_amd64_linux_lib(SB),NOSPLIT,$0 JMP _rt0_amd64_lib(SB) で src/runtime/asm_amd64.s を読むとこのへんから初期化がはじまっていることがわかる。 // _rt0_amd64_lib is common startup code for most amd64 systems when // using -buildmode=c-archive or -buildmode=c-shared. The linker will // arrange to invoke this function as a global constructor (for // c-archive) or when the shared library is loaded (for c-shared). // We expect argc and argv to be passed in the usual C ABI registers // DI and SI. TEXT _rt0_amd64_lib(SB),NOSPLIT,$0 // Transition from C ABI to Go ABI. PUSH_REGS_HOST_TO_ABI0() MOVQ DI, _rt0_amd64_lib_argc<>(SB) MOVQ SI, _rt0_amd64_lib_argv<>(SB) // Synchronous initialization. CALL runtime·libpreinit(SB) // Create a new thread to finish Go runtime initialization. MOVQ _cgo_sys_thread_create(SB), AX TESTQ AX, AX JZ nocgo // We're calling back to C. // Align stack per ELF ABI requirements. MOVQ SP, BX // Callee-save in C ABI ANDQ $~15, SP MOVQ $_rt0_amd64_lib_go(SB), DI MOVQ $0, SI CALL AX MOVQ BX, SP JMP restore いかがでしたか?
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む