fluent-plugin-zabbix-agentを作った

fluent-plugin-zabbix-agentというfluentdのプラグインを作りました。 github.com zabbixのpassive checkを使って、zabbix-agentから、各種メトリクスをfluentdに流すInputプラグインです。 使い方 以下のような設定ファイルを書くと、指定したitemをzabbix-…

続Libratoコード化: Space・Alertでテンプレートを使う

先日の記事で紹介したLibrato管理ツール「lbrt」にテンプレート機能を付けました。 winebarrel/lbrtgithub.com 基本的な使い方は以下の通り。 template "dstat" do chart "load_avg" do type "line" stream do metric "dstat.#{context.space_name}.load_avg…

Libratoをコード化しました

最近、業務案件でLibratoを使っています。 Libratoはメトリクス収集のSaaSで、メトリクスの収集とアラートの設定・通知ができます。 たぶんDatadogとかが競合になるんじゃないでしょうか。 Datadogほど多機能ではないですが、「グラフを書く」「グラフを並べ…

GitHub+Amazon SNS+Lambda+CloudFormationで簡易CI

先ほどの記事に引き続き。 GitHubからAmazon SNSでLambdaにイベント飛ばせば簡易CIができそうだだったので作ってみた。 処理の概要 GitHubにpush→Amazon SNS→Lambdaにイベント Lambdaがイベントをフック→cfnスタックを作成 cfnスタックがEC2インスタンスを起…

S3+Lambda+CloudFormationでサーバレスyumリポジトリ

先日の記事で、大きめの処理をLambda+CloudFormationで実行するめどがついたので、S3+Lambda+CloudFormationでサーバレスyumリポジトリを作ってみた。 処理の概要 S3にrpmを追加・更新・削除 Lambdaがイベントをフック→cfnスタックを作成 cfnスタックがEC2イ…

Lambdaと自殺するCloudFormation

rpmがS3に追加されたらLambdaでインデックス更新するやつを作ろうと思ったんですが、awscli-bundle.zipをダウンロードして /tmpに解凍して いろいろオプション付けてインストールして … 時間的に無理!という結論になりました。 でまあ、いろいろ考えてみて…

lambchopとGuard

lambchopでLambdaの開発をちまちまとやっているんですが、「js更新」→「lambdaアップロード」→「イベント投げる」の流れがめんどくさいので、Guard使ってみました。 https://github.com/winebarrel/my-lambda index.jsはこんな感じ。 #!/usr/bin/env lambcho…

Lambchop v0.1.0

世間様はLamb段階になったらしいので、AWS Lambda便利実行ツール Lambchop のv0.1.0をリリースしました。 https://github.com/winebarrel/lambchop lambchop (0.1.0): It is a tool that invoke AWS Lambda function from the local machine as a normally s…

AR/MySQLでの"default"の変更について

MySQLで以下のようなカラムがあったとして t.integer "foo", limit: 4, default: 0, null: false #`foo` int(11) NOT NULL DEFAULT '0', 以下のようなマイグレーションを実行したとすると change_column("articles", "foo", :integer, null: false) 実行され…

階乗

#!/usr/bin/env elixir defmodule Foo do def fact(n) do fact(n, 1) end defp fact(0, acc) do acc end defp fact(n, acc) do fact(n - 1, acc * n) end end IO.puts Foo.fact(65535) real 0m13.120s user 0m12.577s sys 0m0.201s

階乗

#!/usr/bin/env escript fact(0) -> 1; fact(N) -> N * fact(N - 1). main(_) -> N = fact(65535), io:format("~p~n", [N]). real 0m11.969s user 0m11.742s sys 0m0.175s #!/usr/bin/env escript fact(N) -> fact(N, 1). fact(0, Acc) -> Acc; fact(N, Acc)…

クイックソート

#!/usr/bin/env elixir defmodule QuickSort do def quick_sort([]) do [] end def quick_sort([pivot|rest]) do {smaller, larger} = partition(pivot, rest, [], []) quick_sort(smaller) ++ [pivot] ++ quick_sort(larger) end defp partition(_, [], sma…

クイックソート、リバース

#!/usr/bin/env escript print_list(List) -> io:format("len: ~p~n", [length(List)]), lists:foreach(fun(X) -> io:format("~p, ",[X]) end, List), io:format("~n"). quick_sort([]) -> []; quick_sort([Pivot|Rest]) -> {Smaller, Larger} = partition(P…

fluent-plugin-elb-access-logを作った

ELBのアクセスログのfluentdプラグイン、fluent-plugin-elb-access-logを作りました。 https://github.com/winebarrel/fluent-plugin-elb-access-log 既存の同様のプラグイン、fluent-plugin-elb-logとの違いは aws sdk v2を使っている タグを変更できる プ…

Raven+fluentd+Elasticsearch/KibanaでRailsの例外を集約する

SentryというPythonやRubyなど様々な言語の例外を集約して閲覧するWebサービス/OSSがあります。個々のログを検知・閲覧するにはいいんですが、全体を俯瞰して分析するならKibanaの方が良さそうだったので、Sentryに集めているログをKibanaに流してみました。…

Arproxy 0.2.0でプラグインが使えるようになった

以下のプルリクがマージされてArproxy 0.2.0がリリースされ、Arproxyでプラグインが使えるようになった。 https://github.com/cookpad/arproxy/pull/6 arproxy-plugin-stdout とりあえずサンプルプラグインを作ってみた。 https://github.com/winebarrel/arp…

miam 0.2.1.beta2 / piculet 0.2.8.beta2: JSONサポートなど

miam v0.2.1.beta2とpiculet v0.2.8.beta2をリリースしました。 miam v0.2.1.beta2 Managed Policyのattach/detachのサポート Managed Policyそのものの編集はまだサポートしていませんが、attach/detachをできるようにしました。 user "bob", :path => "/de…

MySQLCasualLog.pmがうらやましかったのでポート(?)した

2015/05/16 23:06 I/F修正 以前、MySQL Casual Talks vol.6に参加したとき、kamipoさんというすごいかた作のMySQLCasualLog.pmというPerlライブラリの発表がありまして、「いーなーいーなー、うらやましーなー。Railsでも使いたいなー」と思っていたのですが…

OS XでRFuseFSを動かす

RFuseFSはFUSEをRubyで使うためのライブラリで、内部で使っているRFuseは基本的にOS Xをサポートしていないんですが、OS Xで動かすためのプルリクエストが投げられていて、手直ししたら一応動いたのでメモしておきます。 https://github.com/winebarrel/rfus…

ridgepole v0.6.0: support AR 4.2.1

プロダクションで使ってみて一応問題なさそうなので、ridgepole v0.6.0をリリースしました。 https://github.com/winebarrel/ridgepole betaにフィードバックいただいた方々、ありがとうございましたm(_ _)m 大きな変更点としてはRails 4.2に対応しました。 …

arel-mysql-index-hintとpt-online-schema-changeでのオプティマイズについて

arel-mysql-index-hintというgemをリリースしました。 MySQL on Rails/ArelでIndex Hintを付けまくるためのgemです。 Article.hint(force: :idx_article) # => "SELECT `articles`.* FROM `articles` force INDEX (idx_article)" Article.joins(:comments).h…

Rails 4.1/Arel 5.0でコネクション切断時にスキーマキャッシュが使われない件について

Rails 4.1/Arel 5.0でactiverecord-refresh_connectionなどを使ってコネクションを切断したとき、切断後にスキーマのキャッシュが使用されない問題があったので、メモしておきます。 再現方法 以下のような簡単なRackアプリで再現できます # Gemfile: # sour…

AWS as Code!: WEB+DB PRESS Vol.85に記事を書きました

WEB+DB PRESS Vol.85に『AWS自動化』という記事を書きました。@sawanobolyさん、@muramasa64さん、@y015i(y13i)さんとの共著です。 サービスやツールを使ってAWSの運用を自動化しようぜ!という内容です。 内容 具体的な内容は以下の三本です。 CloudForma…

Cronicleというツールを作ってみた

Cronicleというツールを作りました。 http://cronicle.codenize.tools/ これは何? なんでしょうね…ジョブオンデマンド実行・定期実行管理ツール? 名前から分かるとおりcronの管理ツールなんですが、オンデマンド実行も普通にできます。 目指したのは簡易版…

fluentdとKinesisで雑にログを集める

aws-fluent-plugin-kinesis v0.3.0リリースされました。待望のPutRecords対応。 ただし、入力プラグインはまだマージされてません。風の噂によると近いリリースでマージされるとか、されないとか… https://github.com/awslabs/aws-fluent-plugin-kinesis/pul…

ridgepole v0.5.2.beta2: Support activerecord-mysql-awesome (support collate)

ridgepole v0.5.2.beta2をリリースしました。 https://github.com/winebarrel/ridgepole/tree/v0.5.2 https://rubygems.org/gems/ridgepole/versions/0.5.2.beta2 ベータバージョンなので--preオプションを付けてのインストールになります。 近日中に正式版…

Codenize.tools

DSL関連のツールをまとめて、Codenize.toolsという名前をつけました。 http://codenize.tools/ 以後お見知りおきを。

Poor man's website monitoring service

Webサイト監視サービスは山のようにあるんですが、Uptime RobotとStatusCakeがいい感じです。 どちらもFree planで監視数が多い Free planで基本的な機能が提供されている HTTP/HTTPS/Ping/Port… 「HTTPSは有料」というのが国内だと多いように思います ペー…

2014年の振り返り

(自称)クラウド型言語 Clalaを発表してきた

Lambdaによるクラウド型言語の実装 from Sugawara Genki AWS Lambda Meetup #0というイベントで、(自称)クラウド型言語 Clalaを発表してきました。 winebarrel/clala winebarrel/clala · GitHub 全然ネタがなくて休日を2日ほどつぶして作ったんですが、全然…