タグ

ブックマーク / k1low.hatenablog.com (29)

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

    紆余曲折の記録です。 Auditとは何か Linux AuditLinuxのシステムで発生しているイベントを記録するための仕組みです。詳しくは以下のページ 第5章 システム監査 - Red Hat Customer Portal 具体的には、(デフォルトで) /var/log/audit/audit.log にシステムコールやユーザが実行したコマンドなどの様々なシステムイベントを記録するサービス auditd が起動することになります。 auditdのログ (audit.log) を長期保存したい audit.logはそのまま監査ログとして利用できるため、一定期間保存しようと考えます。 しかし、前述のようにauditdは様々なシステムイベントを記録するために単純にログの保存を続けるとかなりのディスク容量を消費していきます。 そのためログローテーションの設定を組むのが一般的であり、それ以前

    auditdのログをlogrotateでローテートする運用にしたかったがうまくいかなかったのでcronで直接ローテートするようにした - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/11/13
  • TCPパケットを解析して構造化ログでダンプするツール tcpdp を作った - Copy/Cut/Paste/Hatena

    やっと形になってきました。 github.com 「データベースのクエリログを取得したい」 例えば、データベース(RDBMS)のクエリログを取得したいとき一番確実な方法は、そのRDBMSに備わっているログ機構を利用することです。 一方で、全てのクエリログを出力するとなるとそれなりにIO負荷がかかることが予想されるので、負荷状況によってはクエリログ出力(のIO負荷)を別サーバに分離したくなります。 では、どうすればよいかというと、例えば アプリケーションサーバとデータベースサーバの間にプロキシサーバを挟んでそこで記録することでIO負荷を分離する アプリケーションサーバ側で(notアプリケーションで)記録することで(大抵、サーバ台数の多い)アプリケーション側にIO負荷を分散する というような方法を思いつきます。 そこで、「もし、TCPコネクション上に流れている(例えば)クエリログを解析してログ

    TCPパケットを解析して構造化ログでダンプするツール tcpdp を作った - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/09/25
  • go.uber.org/zapでコンソールとファイルのそれぞれに別々のフォーマットでログを出力する - Copy/Cut/Paste/Hatena

    夏休みの自由課題です。 今作っているサーバにログ出力の機能をつけたいと思っていて、ログライブラリを検討していました。 必要な要件は以下です。 ファイルには、構造化ログを出力したい(JSONでもLTSVでもなんでもいい) コンソール(STDOUT)には、人間にある程度見やすいログを出力したい(色がつく必要はない) ファイルログとコンソールログの情報は一緒で良い。見え方を変えたいだけ 複数の io.Writer に同時に出力するというところでは io.MultiWriter が思いつくのですが、 io.MultiWriter では io.Stdout とファイルに同時に出力することはできても、別のフォーマットにはできません。 実は、最初に採用しようと考えていたログライブラリでもいろいろ試行錯誤したのですが、そのライブラリでの解決方法は見つけられませんでした。 で、結局、zap というLogge

    go.uber.org/zapでコンソールとファイルのそれぞれに別々のフォーマットでログを出力する - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/08/20
  • データベースドキュメント生成コマンド tbls 更新情報 ( MySQLに対応/ER図自動生成/リレーション・コメント追加機能 etc) - Copy/Cut/Paste/Hatena

    tbls更新情報です。 やっとできた— k1LoW (@k1LoW) 2018年6月5日 やっと、もともと実装したいと思っていた機能をすべて実装できましたので紹介します。 なお、tblsコマンドについては以下のエントリに書いています。 k1low.hatenablog.com 追加機能 ( ~ v0.8.2 ) MySQL対応 まずはPostgreSQLを対応しましたが、MySQLの要望もあったので対応しました(もともと対応予定でしたが要望をいただいたので急ぎました)。 tbls doc mysql://user:pass@hostname:3306/dbname ./dbdoc というような形でPostgreSQLと同じようにデータベースドキュメントを生成できるようになっています。 ER図作成機能 tbls コマンドを実行する環境で、Graphvizの dot コマンドが実行できる場合は

    データベースドキュメント生成コマンド tbls 更新情報 ( MySQLに対応/ER図自動生成/リレーション・コメント追加機能 etc) - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/06/11
  • CIフレンドリなデータベースドキュメント生成コマンド tbls を作った - Copy/Cut/Paste/Hatena

    進捗報告です。 https://t.co/sVmTUw6klC とりあえずPostgreSQLの実装はできたので、明日からテーブル設計のドキュメント化とそのドキュメントのCIは回せそう— k1LoW (@k1LoW) 2018年5月20日 ドキュメントの更新が追いつかない問題を解決したい 活発なプロジェクトでは、システムのソースコードだけにとどまらず、データベース設計やアーキテクチャもどんどん変化していきます。 そういった時、一度作ったドキュメントを追従させていくのは至難の技です。主に優先順位とかモチベーションとかの理由で。 そういった課題を解決すべく、今回はデータベーススキーマのドキュメントを生成するツール tbls を作ってみました。 github.com これは何? tbls は対象のデータベースに接続してGitHub FriendlyなMarkdownでスキーマのドキュメントを生成

    CIフレンドリなデータベースドキュメント生成コマンド tbls を作った - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/05/23
  • 第2回Web System Architecture研究会@福岡 に参加した #wsa研 - Copy/Cut/Paste/Hatena

    まさに「Webシステムのアーキテクチャ」で悩んでいることがあって、どうしても「これだ!」という情報を探すことができなかったところ、Web System Architecture研究会が福岡で開催されるということで渡りに船とばかりに参加してきました。 発表内容 予稿 github.com 発表資料 発表した内容を端的に説明すると「Webシステム前提において、トラブルシュートのために生ログにアクセスするためのログ保存の方法として、パス構造にリクエスト-レスポンスの伝搬情報を埋め込んだらどうだろう?」という提案でした。 参加して発表してみて 感想は、以下のツイートに集約されています。 #wsa研 お疲れ様でした!発表することで知見を得たいという目論見は、想像以上の結果を得ることになりました。 いろいろ収穫はありましたが、その中でもhayabusaというログ基盤とそのアイデアの根幹をまさかのその作

    第2回Web System Architecture研究会@福岡 に参加した #wsa研 - Copy/Cut/Paste/Hatena
  • MISSION WORKSHOP The Rhakeを使い始めている - Copy/Cut/Paste/Hatena

    2ヶ月ほどになりますがバックパックをMISSION WORKSHOPのThe Rhakeに変えて使い始めています。 左がThe Rambler、右がThe Rhake Tha Rambler もともとは同じMISSION WORKSHOPのThe Ramblerを愛用していました。つまり前もMISSION WORKSHOPです。 missionworkshop.com これは自分が「モノを丁寧に扱えない人」という自覚があって、シンプルで使いやすく「かつ丈夫な」バックパックを探していて知りました(ちなみにこのTogetterがキッカケだった気がします)。 見た目のカッコよさも耐久性もバッチリです。 メインのラインナップは多少大きいですが、大きいくらいが好きなのでむしろ好印象なブランドです。 Rambler Roll Top Backpack // Pikey Science vimeo.co

    MISSION WORKSHOP The Rhakeを使い始めている - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/05/08
  • asciinema / asciicast2gifでターミナルのアニメーションGIFをつくる - Copy/Cut/Paste/Hatena

    ターミナルでのコマンド実行のアニメーションGIFを作るとき、自分はasciinemaとasciicast2gifを使っています。 github.com github.com ターミナルのアニメーションGIFを作るツールはいろいろありますし自分でも試したのですが、今のところ使い勝手が良いのと出力されるGIFが良い感じなのでこれらに落ち着いています。 使い方 asciinemaをインストール MacであればHomebrewでインストール可能です $ brew install asciinema それ以外だと pip でインストールすることになります $ sudo pip3 install asciinema asciinemaはDockerも用意されていてそちらも利用可能なのですが、自分は手元のコマンド環境を録画することが多いのと、自分でカスタマイズしたターミナルのままで録画したいので直接イン

    asciinema / asciicast2gifでターミナルのアニメーションGIFをつくる - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/05/01
  • mod_mrubyとngx_mrubyのRPMリポジトリをpackagecloudに作った - Copy/Cut/Paste/Hatena

    ビルドとかコンパイルとか苦手なのでビルドとかコンパイルをできるだけしなくて済む世界を作るためにビルドとかコンパイルをしている— k1LoW (@k1LoW) 2018年3月22日 マネージドクラウドのチームにJOINして、1ヶ月たちました。 ツイートから周りからは「楽しそうですね」と勘違いされているようですが、アーキテクチャや技術スタックのキャッチアップに大変な毎日を送っています。楽しいです。 Webサーバに機能を追加するということ ところで、広く知られていることですが、マネージドクラウドではngx_mrubyがかなり活用されています。 何をもって活用されていると言えるのかは要出典ですが、NGINXが単なるWebサーバではなく「別の機能を持った何か」に見えるくらいには使われています。 「Webサーバに機能を追加する」という感覚は一般的なWebアプリケーションの上で生きてきた自分としては新鮮

    mod_mrubyとngx_mrubyのRPMリポジトリをpackagecloudに作った - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/04/03
  • Serverless Frameworkで静的サイトをBASIC認証付きでホスティングするためのボイラープレートを作った - Copy/Cut/Paste/Hatena

    ※注意 2018/1/18時点ではCloudFrontに紐付けたLambda@Edgeを削除することができなくなります(結果Serverless Framework内で動いているCFnスタックの削除などにも失敗します)。 https://forums.aws.amazon.com/thread.jspa?threadID=260242&tstart=0#jive-message-824818 ときどきページデザインなどの確認のためにモックサイトを作成することがあったりします。 動くモックが必要なのであれば(PHPRubyを動かすために)サーバの用意が必要ですが、静的サイトなのであればS3の静的ウェブサイトホスティングの機能を使いたいところです。 ただ、確認用ページをパブリックに公開するのもアレなので、BASIC認証くらいは欲しいです。 というわけで S3静的ウェブサイトホスティング環境

    Serverless Frameworkで静的サイトをBASIC認証付きでホスティングするためのボイラープレートを作った - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/02/02
  • utsusemiという静的サイト生成用クローラを作った(作っていた) - Copy/Cut/Paste/Hatena

    github.com 昨年からサーバーレスな勉強会で何回か紹介していましたが、ちゃんとエントリを書いていなかったので書いておきます。 これは何? 1つのオリジナルサイトをクロールしてS3上に(S3の静的ウェブサイトホスティング機能で)静的サイトを構築してしまうServerlessなツールです。 さらに、構築したS3上の静的ページを任意のタイミングで更新できるようになります。 どんな時に使えるの? 以下の2つの要件を実現したいときに使えると思っています。 コンテンツはCMSなど便利なWebアプリケーションで更新をし続けたい。 実際にアクセスされる公開側は(可用性、信頼性やセキュリティを理由に)S3の静的ウェブサイトホスティングで実現したい。 utsusemiのアーキテクチャ utsusemiはAWS上で実現される、いわばサーバーレスアプリケーションです。 utsusemiをデプロイすると、オ

    utsusemiという静的サイト生成用クローラを作った(作っていた) - Copy/Cut/Paste/Hatena
    oppara
    oppara 2018/01/25
  • 福岡Ruby会議02でawspecの成長と感謝について話してきました。そしてv1.0.0リリース #fukuokarb #fukuokark02 - Copy/Cut/Paste/Hatena

    福岡Ruby会議02 「もう一度、Rubyと出会う」をテーマに福岡Ruby会議02が開催されました。 regional.rubykaigi.org 私はスタッフとスピーカーとして参加しました。 udzura さんの思いが見事に反映されたカンファレンスでした 開催を決めるとき、テーマは実行委員長である udzura さんが決めていました。これについては udzura さんのエントリを見てもらうとよいでしょう。 udzura.hatenablog.jp 「ただ地域Ruby会議を開催する」のではなく、強い思いがあって開催するという気持ちが感じられました。 その結果、(スタッフだったのでいくつかしか聞けていませんが)島田さんのエピソードや 松田さんのKeynoteなど、すごくRubyを書きたくなる発表を聞くことができました。 awspecの発表を福岡のRuby会議でしたかった 自分はスタッフとして

    福岡Ruby会議02でawspecの成長と感謝について話してきました。そしてv1.0.0リリース #fukuokarb #fukuokark02 - Copy/Cut/Paste/Hatena
  • MarkdownからWordやPDF生成ができるようにする (またはPandoc環境の構築方法) (2017/12版) - Copy/Cut/Paste/Hatena

    かつて、Pandoc環境の構築方法についてエントリを書いたこともありました。 qiita.com 2017年も終わる今では brew install pandoc で簡単にPandoc環境のインストールもできます。 しかし!我々が欲しいのは「Pandoc環境」ではなくて「Markdownから日語なPDFを生成できる環境」なのですよ! 2017年最新のPandoc環境構築手順はコレだ! $ docker pull k1low/alpine-pandoc-ja これで終わり! これでMarkdownから日語なPDFを生成できます! https://hub.docker.com/r/k1low/alpine-pandoc-ja/hub.docker.com ちなみにDocker Hubデビュー作です。 使い方 使い方は、例えば以下のとおり $ docker run -it --rm -v `

    MarkdownからWordやPDF生成ができるようにする (またはPandoc環境の構築方法) (2017/12版) - Copy/Cut/Paste/Hatena
    oppara
    oppara 2017/12/25
  • Serverlessconf Tokyo 2017で"Open source application and Ecosystem on Serverless Framework"というタイトルで発表してきました #serverlessconf - Copy/Cut/Paste/Hatena

    Serverlessconf Tokyo 2017に2日に渡って参加してきました!ワークショップも参加しました!発表もしてきました!以下レポートです! Day1: Workshop 朝9時から夜9時までというハードコアなワークショップでした。 Serverless Tech Challenge with AWS Serverless Services 「日のお題は AWS以外のIaaS、PaaS利用禁止 認証機構があること 画像アップロード機能があること CI/CDを回すこと モニタリング機構があること という条件のもと 掲示板 SNS マッチングアプリ チャット のどれかを作ってみよう。では、Go!」 という硬派な投げっぱなしジャーマンのようなチャレンジでした。 自分は、 comuttun さんと2人の急造チームでの参戦に。 まずは、お互いの自己紹介とAWSスキルを共有しあって、今回は

    Serverlessconf Tokyo 2017で"Open source application and Ecosystem on Serverless Framework"というタイトルで発表してきました #serverlessconf - Copy/Cut/Paste/Hatena
  • octoreleaseのJavaScript版 "octopublish"と、PHP版 "octopackage" を作った - Copy/Cut/Paste/Hatena

    自分はawspecやkomaなど、gemのリリースにずっとoctoreleaseを使っていて、いつも便利さを感じています(mizzyさんありがとうございます)。 k1low.hatenablog.com 特に便利な機能は、関連PRへのコメントとリリースノートのPullRequestへのリンクです。 これは、PullRequestしてくれた人へのお知らせだけでなく自分用のメモとしてもとても重宝しています。 ところが、最近個人的に課題がありました。 octoreleaseは他の言語では使えない octorelease の Node版とPHP版が欲しい— k1LoW (@k1LoW) 2017年5月1日 OSS活動をしていて、Rubyでは簡単にできるのにJavaScriptPHPでできないことにストレスを感じていました。 それがoctreleaseを利用したリリースでした。 というわけで、やっ

    octoreleaseのJavaScript版 "octopublish"と、PHP版 "octopackage" を作った - Copy/Cut/Paste/Hatena
    oppara
    oppara 2017/10/13
  • WIPなPull RequestによるOSS開発とoctoreleaseの相性がいいことに気づいた - Copy/Cut/Paste/Hatena

    awspecはWIPなPull Requestをつかった開発をしています。 理由は 開発者の開発スピードが遅いので、とりあえず今何を作ろうとしているのかがわかったほうが良い気がしている 業務上の慣れ(いつもWIP PR) という、結構ゆるい理由だったのですが、今日「これはいいな」という理由ができました。それは「octoreleaseと相性がいい」ということです。 awspecはServerspecを参考に作られているいうのは前エントリーで述べたとおりなのですが、Serverspecはリリース時にoctoreleaseというgemを利用しています。 mizzy.org 簡単にいうと rake release と同様のことをしてくれる リリースノートにPull Requestから引っ張ってリンク付きで記載してくれる Pull Requestに対してどのバージョンでリリースされたかをコメントして

    WIPなPull RequestによるOSS開発とoctoreleaseの相性がいいことに気づいた - Copy/Cut/Paste/Hatena
    oppara
    oppara 2017/10/13
  • PHPカンファレンス2017でServerless Frameworkの話とoctopackageの紹介をしてきました #phpcon2017 - Copy/Cut/Paste/Hatena

    今年もPHPカンファレンス2017で登壇させてもらいました。また、懇親会LTでもoctopackageの紹介(?)をしてきました。 サーバーレスアーキテクチャとPHPなアーキテクチャとの違いの話 この「Serverless FrameworkでAWSフルマネージドなツールをいくつか作って得たアーキテクチャ設計の知見」という発表タイトルは、実はNulabさんが主催するGeeks Who Drinkで発表させていただいたものと同じです。 思えば、YAPC::Fukuoka 2017 Hakataに応募してリジェクトされて「まあそうだよね」とツイートしていたのをagataさんが拾ってくれて(!!!)実現したのが、Geeks Who Drinkでの発表でした。 nulab.connpass.com そして、発表後にagataさんに「他でも発表したほうがいい」と言ってもらったので、PHPカンファレン

    PHPカンファレンス2017でServerless Frameworkの話とoctopackageの紹介をしてきました #phpcon2017 - Copy/Cut/Paste/Hatena
  • Serverless Meetup Fukuoka #1で発表してきました #serverlessfukuoka - Copy/Cut/Paste/Hatena

    とうとう福岡にもServerless Meetupがやってきました! serverless.connpass.com 縁あって発表させてもらう機会をいただきましたので、技術というよりも事例的な感じで発表しました。 サーバーレスアーキテクチャはシステム間の糊的な役割としても使えるがシンプルなサービスを作るだけのポテンシャルはある 今回言いたかったのはこれだけで、実際にFusicでカジュアルに"SaaSライク"に運用している状況を具体的な数字で実感してもらおうと資料を作ってみました。 うまく伝わっているといいなと思います。 感想 @yoshidashingo さんの「サーバーレスについてのオーバービュー」を福岡で聴けたのは非常に大きいと思います。 Future will be Serverless!! - Serverless Meetup Fukuoka #1 Opening from 真吾

    Serverless Meetup Fukuoka #1で発表してきました #serverlessfukuoka - Copy/Cut/Paste/Hatena
  • RoadworkerのテストAWS環境を構築するroadworker.tfを作成した - Copy/Cut/Paste/Hatena

    やっと重い腰をあげて、まずはテスト環境を構築できるようにしました。 RoadworkerのテストにはAWS環境が必要 RoadworkerはRoute53を管理できる構成管理ツールで、Codenize.toolsの1つです。 多くの企業で導入実績があり、また、十分なテストが書かれているので安心して利用ができます。当然のようにTravisCIによるCIも回っています。 では、そのテストはどのように実行されているかというと、作者である id:winebarrel さんのAWS環境で実行されています。 .travis.yml をみてわかるとおり、最低限必要なAWSリソースとして まっさらな Route53 ( RoadworkerがRoute53のHostedZoneから管理するツールのため ) VPC ELB CloudFront があります。特にELBの月額費用は月額18USDと馬鹿にならな

    RoadworkerのテストAWS環境を構築するroadworker.tfを作成した - Copy/Cut/Paste/Hatena
    oppara
    oppara 2017/08/25
  • いかに危険なコマンド実行間違いを防ぐか。そのためにExeCopを書いてみた - Copy/Cut/Paste/Hatena

    追記: Bashにも対応しました 皆さんもpeco/percol/fzf/anyfinderなどのフィルタリングツールを便利に使っていると思います。 ちなみに私はpeco派です。 コマンド実行間違い ところで、*sh_historyを使ったコマンド補完をpecoにまかせていて ( こういうの )、「コマンド実行間違い」をしてしまうことありませんか? 例えば、 bundle exec cap staging deploy のつもりが bundle exec cap production deploy を選択して番環境へデプロイしまったり docker container start xxx のつもりが docker container stop $(docker container ls -aq) を選択して全てのコンテナをストップさせてしまったり pecoを経由した「フィルタリングして実

    いかに危険なコマンド実行間違いを防ぐか。そのためにExeCopを書いてみた - Copy/Cut/Paste/Hatena
    oppara
    oppara 2017/08/25