色つけツール colr に、逆に受け取った標準入力から色を消す --erase オプションを追加した

地味に普段から重宝している colr に --erase オプションを追加しました。 colr についての紹介エントリは以下をご覧ください。 k1low.hatenablog.com 色をつけたいことがある。そして色を消したい時がある colrによってカジュアルに色をつけた標準出力を得…

filtに tail -Fなストリームだけでなくcat /path/to/access.log のような標準出力に対しても何度でもコマンドを試行錯誤できる機能を追加した

"トライアルアンドエラーパイプ"ことfiltに、tail -F /path/to/access.log なストリームだけでなく cat /path/to/access.log な標準出力に対しても何度でもコマンドをパイプで繋げて試行錯誤できる機能を追加しました。 k1low.hatenablog.com 今回新たに追加…

PostgreSQLの運用練習の成果をコードで残していっている

RDBMSのレプリケーションなど、なんとか調べてギリギリ理解して組んで、その後新規レプリケーションを組むか障害が発生したとき、また一から調べている気がするので、動く環境として記録していくことにしました。 github.com これはなに 今のところ、Postgre…

第5回Web System Architecture研究会に参加した #wsa研

第5回がまた福岡で開催されるということで、第2回参加から久しぶりでしたが、参加・発表してきました。 発表内容 予稿 github.com 発表資料 発表内容は、「関係する(コンポーネント間で通信をしている)コンポーネントのログの流量の間には相関があるはずで…

filtのコマンド履歴を保存できるようにした

"トライアルアンドエラーパイプ"ことfiltで、パイプに繋いだコマンドの実行履歴を保存して次回filt実行時に補完候補として利用できるようにしました k1low.hatenablog.com コマンド履歴保存の有効化方法 以下のコマンドを実行することで有効化できます。 $ f…

"2 hours" のような文字列をパースして time.Duration を取得する duration パッケージを作った

Harvest のログ取得期間指定をより柔軟にできるように --duration オプションを追加したかったのですが、 標準の time.ParseDuration() ではあまり柔軟ではない 既存パッケージを探したけれども time.Duration を返すものを見つけられなかった ので作りまし…

debパッケージをダウンロードURLを指定して直接インストールしたい

「yumコマンドならできるのに」 そんなことを思ったことが何度もありました。皆さんはどうしているんでしょうか? シェルスクリプトで書くならどんな感じかなと思って書いてみました。 そして、そのシェルスクリプトを毎回コピペするくらいならスクリプト自…

サーバ/プロセスのメトリクスを使ったNagios/Mackerel/Consulのチェックコマンドを作るときに便利な metr を作った

Go

Consulでちょっとしたヘルスチェックを追加したいと思ったのですが、例えば iowaitが高いかつuserは低いとき という条件を書こうとしたときに、「うっ。。!どう書けばいいんだ。。」となってしまったので、作りました。 github.com これはなに metr は次の…

標準入力の指定の文字列に色をつけるツール colr

Go

Go Conference ‘19 Summer in Fukuokaでも少し紹介したcolrです。 github.com これはなに まずは以下のスクリーンキャストをご覧ください colr は tail -F /path/to/access.log のようなログにカジュアルに色をつけるツールです。 $ tail -F /var/log/nginx/…

Goなどでクロスコンパイルしたワンバイナリなソフトウェアを最小工数でdeb/RPMパッケージにしてくれるNFPMが便利

Go

みなさんはdeb/RPMパッケージを作ったことはありますか? 私はtcpdpのパッケージ作成ではじめて作りました。具体的にはここらへんです。 tcpdpはlibpcapに依存していることもあり、DockerでUbuntu/CentOSの環境を作ってその上でコンパイルして、合わせてdeb/…

tblsがデータソースとしてCloud Spannerに対応した

tbls now supports Cloud Spanner !!! https://t.co/TeTg4ulPb6— k1LoW (@k1LoW) 2019年8月12日 約1,000円の資金を投じて作りました。 1000円超えてた。。。 pic.twitter.com/b60FVMw5V6— k1LoW (@k1LoW) 2019年8月13日 Cloud Spannerのスキーマをtblsで出力…

google/gopacket + libpcap で作るツールのパケットバッファ戦略

Go

tcpdpの中のお話です パケットを一時的に保持するバッファ google/gopacket/pcap パッケージでパケットを取得するようなツールを作る場合、2つのバッファを持つことになります。 libpcapが持つバッファ google/gopacketが持つバッファ(バッファ付きチャネル…

tail -F /path/to/access.log のようなストリームに対して何度でもgrepを試行錯誤できるツール filt を作った

Go

filtというツールを作りました github.com これはなに まずは以下のスクリーンキャストをご覧ください tail -F /path/to/access.log のようなログの流れを止めてはgrepをして、止めてはgrepのコマンドを変更してしています。 その間、実は裏では実際のストリ…

Songmu/timeoutからコマンドの停止処理部分を理解しつつ切り出してk1LoW/execを作っている #gocon

Go

Go Conference'19 Summer in Fukuoka、私の中でもう少し続いています。 exec.CommandContext は "孫プロセスがあった場合にそれが止まらない" #gocon でのsongmuさんの発表を聞いて、孫プロセスを雑に放置してきたなーと思いまして、気持ちを改めようとして…

技芸のコードによるボトムアップ #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に備わっているログ機構を利用することです。 一方で、全てのクエリログを出力す…