技芸のコードによるボトムアップ #phpgenba #phpconfuk #gocon

最近やっていることの記録です。 技芸のコードによるボトムアップ 「技芸のコードによるボトムアップ」「技芸のコード化」というのは、端的にいうと自分の「サーバオペレーション」の能力を、自分の得意な分野である「コード化」の側面からボトムアップして…

tblsがデータソースとしてBigQuery / Amazon Redshiftに、出力フォーマットとしてxlsx / PlantUMLに対応した etc.

前回のエントリからtblsにいくつか機能追加をしたので、v.1.15.2時点での現状報告です。 BigQueryを bq:// でサポート 家庭内の要望によりtblsのBigQuery対応を進めています— k1LoW (@k1LoW) 2019年5月11日 データセット単位でドキュメント化できるようにな…

内閣府が提供するsyukujitsu.csvが1955年からの祝日情報を提供するようになっていた

syukujitsu.csv !また!!中身が変わったよ!!!なんだよこれ!!!!https://t.co/boFWZS75Us— k1LoW (@k1LoW) 2019年4月27日 またしても syukujitsu.csv の中身が変更になりました。 変更点は私調べによると以下の2つです。 1955年からの祝日情報を提供…

プロセスやホストのメトリクスをトリガーに任意のコマンドを実行できるデバッグ用ツール Sheer Heart Attack を作った

Go

サーバの運用をしていると、 なぜかホストのCPU使用率やメモリ使用率が上昇するタイミングがあるが、なぜ(何が)そのタイミングで上昇しているのかわからない CPU使用率やメモリ使用率を通常時以上に使用しているプロセスにはあたりがついているが、なぜそ…

undockerでdocker imageの中身を確認する

最近、同僚の @r_takaishi からの非常にありがたいPull Requestもあって、sshcの整備を行なっています。 github.com そのときにDockerを利用してSSH接続のインテグレーションテスト環境を(ほぼ @r_takaishi が)作りました。 そして紆余曲折あって、https:/…

WazuhでRule ID 204 "Agent event queue is flooded" が発生した際にどんなイベントが多いのかを確認する方法、あるいは視野の話

Wazuhでは各サーバにあるWazuh agent(実体はossec-agentd)(以下、エージェント)からイベントを受け取ってそのイベントを解析して様々な検知をしてくれます。 なぜ唐突にWazuhなのかについて、詳しくはこことかここをご覧ください。 ところがエージェント…

tcpdpをPROXY protocolに対応させた

Go

なるほど!面白そうです!— k1LoW (@k1LoW) 2019年1月30日 というわけで、勉強も兼ねてtcpdpをPROXY protocolに対応させてみました。 今回想定したユースケース 私自身がPROXY protocolのユースケースを持っているわけではなかったので、まずは「TCPパケット…

ディレクトリを遡ってMakefileを探してそのディレクトリでmakeを実行するmkを作った

Go

makeコマンド、rakeみたいにディレクトリを遡ってMakefileを探してくれないので面倒— k1LoW (@k1LoW) 2019年2月2日 Goを書くようになってからなのか、GMOペパボに入ってからなのか、make を実行することが多くなったのですが、make はMakefileがあるディレク…

evryの実装をシンプルにした

Go

evry を公開してからオンラインオフライン問わず様々な場でフィードバックをいただいて、それをもとに修正したv0.2.0をリリースしました。 github.com 指定コマンドを実行するための実装をシンプルにした Use `sh -c` instead of go-shellwords by k1LoW · P…

tail -Fなどの標準出力を一定時間ごとに指定のコマンドに渡し、その実行結果をシーケンシャルに出力するコマンド evry を作った

Go

ログの流量やサマリを、カジュアルに、そしてリアルタイムに確認したかったので作ってみました。 github.com これはなに 標準入力の内容を、一定時間ごと(もしくは一定行ごと)にまとめて指定のコマンドに渡し、その実行結果をシーケンシャルに出力するコマ…

2018年の振り返りと2019年の抱負

明けてました 2018年の振り返り 2018年は個人的にいろいろ環境が変わったので2017年と同じようにはいきませんでした。いい意味でも悪い意味でも。 2018年の目標は「努力を積み重ねる」でした。 これは、転職をして新たなチームにJOINしたことで半強制的に努…

~/.ssh/configを使って *ssh.Client を作成する

Go

GMOペパボ Advent Calendar 2018 の4日目の記事です。 運用しているサーバに何か問題が発生したら、SSH接続をして原因の特定をします。特定するためにいろいろ確認をします。 しかし、自分はチームメンバーの中では上記があまり速いほうではありません。勘所…

auditdのログをlogrotateでローテートする運用にしたかったがうまくいかなかったのでcronで直接ローテートするようにした

紆余曲折の記録です。 Auditとは何か Linux AuditはLinuxのシステムで発生しているイベントを記録するための仕組みです。詳しくは以下のページ 第5章 システム監査 - Red Hat Customer Portal 具体的には、(デフォルトで) /var/log/audit/audit.log にシス…

Fukuoka.go#12 で GoでTCPパケットを読むための最初の一歩の話 をした #fukuokago

Go

Fukuoka.go に参加してきました! fukuokago.connpass.com 主催者、発表者のみなさん、ありがとうございました! ちょっとトラブルがあって楽しみにしていた「Road to your goroutines」をまともに聞けなかったので残念がっていたら、素晴らしいまとめエント…

pprofでCPU100%になる原因を特定する

Go

tcpdpのprobeモードで、CPUが100%に張り付くという問題(結果、原因としてはしょうもないミス)がありました。 機能としては正しく動いているので、単純にテストケースを増やしてもどうにもならず、pprofを使って原因となっている箇所を絞り込んでみました。…

TCPパケットを解析して構造化ログでダンプするツール tcpdp を作った

Go

やっと形になってきました。 github.com 「データベースのクエリログを取得したい」 例えば、データベース(RDBMS)のクエリログを取得したいとき一番確実な方法は、そのRDBMSに備わっているログ機構を利用することです。 一方で、全てのクエリログを出力す…

ISUCON8に参加してほとんど何もできなかった

ISUCON8 予選に参加してきました。 自分個人としては、「ほとんど何もできなかった」という感想でした。 どうせ普段できないことは出来ない どうせ普段できないことは出来ないと思って ( ISUCON8に参加した | | pyama.fun ) これは、本当にそのとおりでした…

net/http/pprof のheapの値は何を表しているのか

Go

pprofのWeb UIの "heap" の数って何を表すんだろう? pic.twitter.com/JWlAgIL5Ka— k1LoW (@k1LoW) 2018年9月7日 tcprxyというTCPプロキシを作っています。 github.com 8月中旬くらいから「よし、プロダクションレディになるくらいまで開発してやろう」と、…

go.uber.org/zapでコンソールとファイルのそれぞれに別々のフォーマットでログを出力する

Go

夏休みの自由課題です。 今作っているサーバにログ出力の機能をつけたいと思っていて、ログライブラリを検討していました。 必要な要件は以下です。 ファイルには、構造化ログを出力したい(JSONでもLTSVでもなんでもいい) コンソール(STDOUT)には、人間…

tbls v1 をリリース / SQLiteに対応した etc.

Go

データベースドキュメント生成ツールのtblsですが、ひと通り機能が落ち着いた(と思った)のでメジャーバージョンのv1をリリースしました(現在は v1.2.1)。 github.com 前回 v0.8.2 からの追加機能や修正などを紹介したいと思います。 Amazon Redshiftのサ…

TCP Proxyを書いてMySQLの通信を覗いてみる

Go

お、MySQLの通信も見えそうだぞ? pic.twitter.com/GVxBXqHEgA— k1LoW (@k1LoW) 2018年7月25日 "TCP Proxyを書いてPostgreSQLの通信を覗いてみる - Copy/Cut/Paste/Hatena" の続編です。 MySQLの通信を覗いてみる また簡単なクエリだけを対象にします(プリ…

TCP Proxyを書いてPostgreSQLの通信を覗いてみる

Go

なんとなく興味がでてきたのでインターネット情報を参考にTCP Proxyを書いてPostgreSQLの通信覗いてみた。クエリの取得まではできた。HTTP/1.1の世界で生きていたので、プログラムでバイナリ?を触ったの久しぶり過ぎるし(TokyoTyrantのPHPクライアント書い…

Fukuoka.go#11 に参加してspf13/cobraの紹介をした #fukuokago

Go

先週、Fukuoka.go#11 に参加しました。 fukuokago.connpass.com どの発表も興味深く聞くことができました。主催の皆さん。発表者の皆さんありがとうございました!! 感想を1つだけあげるとしたら どの発表も本当に面白かったのですが、個人的には @deeeet …

データベースドキュメント生成コマンド tbls 更新情報 ( MySQLに対応/ER図自動生成/リレーション・コメント追加機能 etc)

Go

tbls更新情報です。 やっとできた— k1LoW (@k1LoW) 2018年6月5日 やっと、もともと実装したいと思っていた機能をすべて実装できましたので紹介します。 なお、tblsコマンドについては以下のエントリに書いています。 k1low.hatenablog.com 追加機能 ( ~ v0.8…

CIフレンドリなデータベースドキュメント生成コマンド tbls を作った

Go

進捗報告です。 https://t.co/sVmTUw6klC とりあえずPostgreSQLの実装はできたので、明日からテーブル設計のドキュメント化とそのドキュメントのCIは回せそう— k1LoW (@k1LoW) 2018年5月20日 ドキュメントの更新が追いつかない問題を解決したい 活発なプロジ…

第2回Web System Architecture研究会@福岡 に参加した #wsa研

まさに「Webシステムのアーキテクチャ」で悩んでいることがあって、どうしても「これだ!」という情報を探すことができなかったところ、Web System Architecture研究会が福岡で開催されるということで渡りに船とばかりに参加してきました。 発表内容 予稿 gi…

cgrpsの実践を考える

cgrps ps いらなそうだから削除しよう— k1LoW (@k1LoW) 2018年4月30日 (主に自分に)来たる大量コンテナ時代に向けて作ったcgrpsですが、試験運用をしていて気づきがありました。 github.com 今回は新たに作成したサブコマンド cgrps pids について紹介しま…

MISSION WORKSHOP The Rhakeを使い始めている

2ヶ月ほどになりますがバックパックをMISSION WORKSHOPのThe Rhakeに変えて使い始めています。 左がThe Rambler、右がThe Rhake Tha Rambler もともとは同じMISSION WORKSHOPのThe Ramblerを愛用していました。つまり前もMISSION WORKSHOPです。 missionwork…

faultlineのGitHub連携機能をGH:Eに対応した / faultline-go をリリースした

faultline更新情報です。 faultlineのGitHub連携機能をGH:Eに対応しました faultlineのGitHub連携機能をGitHub Enterpriseに対応させました。faultline v1.2.0 から利用可能です(ただ、バージョンアップされる方は最新にすることをおすすめします) 具体的…

asciinema / asciicast2gifでターミナルのアニメーションGIFをつくる

ターミナルでのコマンド実行のアニメーションGIFを作るとき、自分はasciinemaとasciicast2gifを使っています。 github.com github.com ターミナルのアニメーションGIFを作るツールはいろいろありますし自分でも試したのですが、今のところ使い勝手が良いのと…