mackerel meetup #2 に参加しました
mackerel meetup #2に参加しています
Mackerel Current Status @stanaka
- Overview & Update
- 正式化と今後の予定
Overview & Update
監視
- ホスト/ロール単位:来月そうそう
- サービスメトリクス:来月早々
アラート通知(チャンネル)
- メール
- Webhook
- sladk 来週くらい
正式化と今後の予定
- ベータリリース(5/8)
正式リリース(9/19)
2000円/ホスト/月(台数20+でディスカウントあり)
無料トライアルあり
- 5台, ログ24h, サービスメトリクス・監視数に制限
個人・小規模ユーザ向けプラン
- GitHubログイン
- Monitor対象の詳細化(ロール単位)
- サービスメトリクス監視
- カスタムメトリックプラグイン拡充
- Slack連携など通知先拡充
イベント機能
- アラート・デプロイなど
- グラフ改善
- アラート改善
- ダッシュボードカスタマイズ
ヌーラボがMackerelに移行した3つの理由 @tksmd
まとめ
id:stanaka さん, id:songmu さん、はじめhatenaの皆様、会場のフリークアウトの皆様ありがとうございました!
Travis CI Meetup Tokyoに参加しました
Hiro Asari さんの Travis CI の demo
Travis-CI のライフサイクル
Setup -> Services | v before_install | v install | v before_script | v script | v after_success after_failure | | v | before_deploy | | | v | after_deploy | | | v v after_script
.travis.yml
# build地にsudoを利用しない設定 sudo: false # アカウントに依存して、通常は動かない設定 language: ruby
bash の wait というオプションで標準出力がない場合に殺されないで済む
110+ vms 68+ servers heroku
openvz and docker
82000 jobs 125,435 jobs per day 7,000 repositories
|node.js | 2800| | python |1900| | ruby |1600| |php| 1500| |default (=ruby)|1000| ...
in COM, ruby is top usage.
team
- team teal: ui ux
- team blue: infrastructure
- BIWOMM but it works on my machine
points
- Case sensitive
- inode deference
- Package difference dev and travis CI
- Services which are slow to start or configured differently
- 'apt get update' system packages change and are removed overtime
- test ordering and isolation
- time zone dependent test and timing differences
- capabilities turned off in container based virtualization systems
tachikoma.io
- 依存関係とかのチェックを実現する
travis の selenium
YAPC::ASIA 2014に参加しました
YAPC::ASIA 2014に参加しました。
当然個人スポンサーチケットです! パーカーが欲しかったので。。。
また、29日のみでしたが、昨年に引き続き「YAPC::Asia 2014 スペシャルレポート」のレポーターとしても参加しました。
ですので内容のレポートは上記を見ていただければ。。。 個人的には
@toritori0318 さんのTV連携の運用改善の話と、 @deeeet さんのツールを作る話、 @aoneko さんの自動デプロイが本質的なところで面白かったです。 両者ともに共通していたのが、「いま現状の課題に全力で取り組む一方、(自分の身を守るという意味での)エゴからくる利他精神」だと思いました。 共通化する、ドキュメント化する、自動化する、頻繁に利用するものだからこそ準備をする(プロセスにする、README/USAGE/MANPAGEを書く)、これはまさに「楽をするために苦労を厭わない」というエンジニアスピリッツにあふれたものだなぁと思いました。
あ、あと、レポーターはどんなに混んでいても一番いい席に座れるので皆様本当にお勧めです。 また、毎年参加の id:hiratara さんやその他素晴らしい人と事前にお会いしてYAPCのワクワク感を高められることも嬉しい事です。 ぜひ、来年のYAPCやその他のイベントでもレポーター枠があれば参加することをおすすめします
切り戻しの話
懇親会で @koemu さんと @risou さん、あと id:papix さんと話していたのですが、アプリケーションレイヤのデプロイ/切り戻しは楽になっている(自動化やスクリプト化で)とは思うのですが、DBの切り戻しがどうにも楽になっていない気がします。
どうしてもここだけはデプロイプロセスに人手を介入させ、ターミナルのフォントサイズを上げ、「いいですか?」「ダイジョブです」みたいなやりとりを経て実施しているので、とても辛いです。
例えば、onreadyみたいなコマンドで、新しいDBホストが立ち上がってマスターへの書き込み時にクエリを新しいアプリ向けに書き換えて流し込んでいき、launchで旧DBから新DBへの切り替えがされ、そのタイミングで今度は新DBへの書き込みのクエリを旧DBのクエリに書き換えて流しこみを続けてくれて、いつでも切り戻しができるようになってて、ここぞというタイミングで切り離す、などができる様になってくれると嬉しいなと思っています。
YAPCの優しさ
某社CTOの惨状です #yapcasia pic.twitter.com/czfvvS76mh
— Muddy Dixon (@muddydixon) 2014, 8月 29
こうなって
今日のhokacchaハイライト
1. 懇親会では元気
2. Hubではもう会ったら焦点定まってなかった
3. イミュータブルの話の時点で寝る
4. 駅でmuddydixonに担がれる
5. 南北線に乗ってるけど帰れる?って聞いたら南北線はダメだよーしか言わなくなる
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 8月 29
6. 電車で寝そうなので近くにいるYAPC参加者に声をかけて目黒になったら起こしてあげてくれと頼む
7. YAPC参加者の心意気で目黒まで送ってもらう
8. 嫁にPromiseの話する
帰宅してて良かった。
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 8月 29
YAPC最高や!
LLDiverの見どころ
久しぶりに書くのですが今年で14回目のLLイベント LL Diver をお手伝いしております。
スタッフを申し込んだ時点ではこんなに忙しくなるとは思っておらず、あまりお手伝いできなかったのですが「ご紹介」という形で3つのセッションにご協力することができました。
1.
あんちぽくんさんはGMOペパボの技術責任者として「みんなと仲良くする」「ファンを増やすこと」「アウトプットすること」という3つの軸に準じた評価をされ「GMOペパボ株式会社の技術責任者に就任いたしました」「ペパボの2014年上半期エンジニア評価について」などのエントリをあげてらっしゃる方です。 この方が「新人研修」をどのように設計しているかはとても興味深いところです。
2.
hiroki_daichi さんは
#lldiver おめーだれだよって感じのトークショーですが、タイトル考えたの俺じゃないんで許してください。
— ひろきのだいち (@hiroki_daichi) 2014, 8月 8
とおっしゃっていますが、Qiitaにたくさん投稿しているかたです。
- エヴァンゲリオンでわかってしまうJavaScript - Qiita
- 何かのときにすっと出したい、プログラミングに関する法則・原則一覧 - Qiita
- ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 - Qiita
これらのQiitaの投稿は目にしたかも多いのではないでしょうか。
多岐にわたってQiitaを上げているhirokiさんに様々な質問をぜひぶつけたいところです。
3.
一時期ドワンゴの技術者退職エントリが続いた時の状況を立て直したかについてmeso さんが質問を受け付けてくださいます。 現在は、下記の記事にあるようにドワンゴでエンジニアが働く環境の整備や採用、教育、技術広報を担当されています。
- 他者から観測可能な自分の価値を高める 株式会社ドワンゴ 清水俊博 氏 |IT・Web業界の転職ならDODAエンジニア IT
- 「技術的負債」の返済ルールを作る 株式会社ドワンゴ 清水俊博 氏 |IT・Web業界の転職ならDODAエンジニア IT
どしどし質問を投げつけましょう!
前日だぞ!!
と @hourin さんの叱られそうですが、上記の他にも禁断とも言われている「誰得なエディタセッション」や夜の部は酒を入れなければ聞けないようなセッションまで魅力あるセッションが盛り沢山です。 まだまだチケットは余っていますので(汗)、ぜひ足をお運びください!
Hadoop Conference Japan 2014に参加しました
Hadoop Conference Japan 2014に参加しました。
最近あまり触ってなかったのですが、また案件で利用するニーズが出てきたので最新情報の収集目的です。
今日の収穫としてはこんな感じ
- Apache Spark
- 一週間の活動量がすごい
- 500 patch updates / w
- 200 updates / w
- 140 thread / w
- 80 merged patches / w
- 一週間の活動量がすごい
- Facebook Presto
- BigQuery
- HBaseは死火山←これはあんまり信じてない
- YARN使いたかったらHadoop 2.4系使わないとスケジューラで困る(CDH5はHadoop2.3 + patchだから大丈夫)
- YARNの初期設定はCDHかHDPのVMから設定ファイルも初期ディレクトリ構成もパクればいい。Ambariでもいいけど、直接設定見て書き換えられる方がrecipeにも書きやすい
- hivemallアルゴリズムすごく多くてすごいAROWとかCSWとか
- Apache Incubatorになるかもとか
- DATABRICKS CLOUDのダッシュボード便利そう
その他
- Sparkはオンメモリで高速にぶん回すこと考えるといろいろジョブ作成前に考えたりするから大変そう(溢れたらSpillしてくれるとはいえ)
- Prestoはジョブが落ちるけど、そっちの方が潔い気もするし、各種のDBとマージして処理できるのは助かる感じある
- Hive回して中間データを保持しておいてそいつをSpark/Prestoで処理する+直近データのみESとkibanaとかそういう構成が良さそう
今日のハイライト
- 一番大きい部屋の最前列で会場中に響き渡る音で黄色い象を殴打した @naoya_itoさん
ハドゥープさん撫でようとしてまちがって殴ってしまった URL
- 質疑応答で質問がないときの @hamaken さんの投げかけた言葉がひどい
パブリックに流すのに司会に人間性を問われてる登壇者 @ryu_kobayashi #HCJ2014
mackerel meetupに参加しました
mackerel meetupに参加しました
状況
現在は、とあるプロダクトで導入してモニタリングやアプリケーションメトリクスも関係ないけどサーバに紐づけて見たりしています。 実験的には、プロセス監視も1 or 0を定期的に返すことでできていますが、プロセスをスタックグラフで見るのはつらいす。
Mackerel meetup
フリークアウトかっこいいよ!!
ちょっと早くついたのですが、id:moznion さんとか @netmarkjp さんとか @koemu さんとかと雑談してたら始まってた
Introduction to Mackerel via @motemen
構成
- scala play
- postgreSQL
- Graphite
- AngularJS
- Go
term
- Org: 課金単位になるらしい
- Service
Role
Metricを収集して時系列で可視化
status
- standby
- working
- maintenance
- retired
監視 (experimental)
- アラート(Webで確認するだけ)
- Coming next: メール通知
カスタムメトリクス
API (v0)
- ホスト情報の一覧
- ステータス更新
- 退役
@stanaka
- 監視・通知
- 6月: 基本的な監視・通知
- メール
- 7月: 応用的な監視・通知
- 通知手段
- 6月: 基本的な監視・通知
- アプリケーションメトリクス
- レスポンスタイム・エラーレート
- fluentd使う
- ラベル・形状のカスタマイズ(7月)
グラフ拡充
- グラフの外部貼り付け(iframe) 7~8月
8月か9月に正式化
ユーザ権限管理強化
- クラウドとの連携強化
- LB, インスタンス
Docker周りと連携
カスタムメトリックプラグイン
- MySQL, nginx
チャット連携
- hubot-mackerel
Q&A
- 何代まで耐えられますか?
- 1000台は耐えてる、1万まで行けるんじゃないか
- AutoScale環境でもっと使いやすく
- ドッグフーディング
- デフォルト表示を切り替えられると嬉しい→検討します
- メトリクスをCloudWatchに流したい→REST API経由でできるようにします
- OSSプロジェクトへの無償提供はありますか?→前向きに検討したい、個別相談させて
- 価格体系は?→基本、従量で応相談で月額課金
要望・質問
- スケジュール・タイムラインの追加
- 表示メトリクスの記憶をして欲しい
- チャートタイプの種類が欲しい
- プロセス監視はするの?
- 課金は?
所感
- 自前で持ってもいいんだけど正直、手間ではあるのでコスト次第では全然使いたいツール。
- agent一発でOKで、送信プラグインも今後は増えそうだし、データ取得のAPIも出そうなので色々できそう
- server -> fluentd -> mackerel や server -> mackerel -> 何か という組み合わせで適材適所で組み合わせてみたいところ
@muddydixon @yosuke_furukawa metrixの値を取得するAPIですかね?予定しておりますので、しばしお待ちを!
node-mackerel
とここまでだったら、 @koume さんのブログを見ればいいので node-mackerelを作りました。
postMetric
もちゃんと動きます。
タイトルの横の[]
はtravisに入れようとしたのですがなんかtravis-githubの具合が悪いっぽくて登録できなかった。後でやる。
最近、deferredを使い続けているのでその復習も兼ねて。
Docker/Droneを試してみる
:D な会社の友達たちが「いみゅーたぶるいんふらなんちゃらの合宿やるわー」って話してたので、そんな面白いことはぜひ外部からの参加も可能にするべきだ!って憤慨しながら突っ込んだら「くればおk」って言ってくれたので合宿参加しました。
概要はこんな感じ
Immutable Infrastructure 的ななにかをやる キーワード ・Vagrant ・Docker ・Mesos ・Serf ・Sensu ? ・Jenkins ・とかとか やること ・上のキーワードをてきとうに組み合わせるとなにかおもしろいの出てくるかも ・Jenkins × Docker とか ・Mesos × Vagrant とか ・ただ触ってみるだけでも良いとおも
主催者の @sonots さんは上記のような概要書いたくせに全然関係ないfocuslight(の主にドキュメントページ)をやってた
僕は、とりあえずdockerだけ予習してから参加した。 (ちなみに実家から母が来てたんだけど、いろいろあってリスケとかしてもらったのもあって妻にまるなげして参加した。なので、帰りにヒカリエでケーキ買って帰った)
やろうと思ってたこと
- focuslightのRRDToolのAPIからデータを抜いてD3化→brew installできなかったのでやめた
- droneを試す→まあ、動いた。gitlabとか追加できるようにコードを読み漁ってたところで終わり
focuslight
Warning: No developer tools installed. You should install the Command Line Tools. Run `xcode-select --install` to install them. ==> Downloading http://ftp.gnome.org/pub/GNOME/sources/gobject-introspection/1.38/gobject-introspection-1.38.0.tar.xz Already downloaded: /Library/Caches/Homebrew/gobject-introspection-1.38.0.tar.xz ==> ./configure --prefix=/usr/local/Cellar/gobject-introspection/1.38.0 ==> make ./g-ir-scanner: line 29: ` def on_exception(exctype, value, tb):' make[2]: *** [GLib-2.0.gir] Error 2 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 READ THIS: https://github.com/mxcl/homebrew/wiki/troubleshooting /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:277:in `open_http': 404 Not Found (OpenURI::HTTPError) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:616:in `buffer_open' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:162:in `catch' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:132:in `open_uri' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:518:in `open' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:26:in `open' from /usr/local/Library/Homebrew/utils.rb:264:in `open' from /usr/local/Library/Homebrew/utils.rb:281:in `each_issue_matching' from /usr/local/Library/Homebrew/utils.rb:293:in `issues_for_formula' from /usr/local/Library/Homebrew/exceptions.rb:178:in `issues' from /usr/local/Library/Homebrew/exceptions.rb:209:in `dump' from /usr/local/Library/brew.rb:118
このあと、mac os xのboot2docker使って ubuntuにrrdtool入れようとしたけど、それでもこけてたので、時間もったいないし辞めた
drone
- awsでEC2借りる ubuntu
- http://yosssi.hatenablog.com/entry/2014/02/08/161500 の通りにやって問題ない
- secure-groupの変更で80と4243をあける 参考
- エラーが出る(4243)
docker daemonが必要らしい
- 参考
sudo sudo docker -H 0.0.0.0:4243 -d
sudo DOCKER_HOST="tcp://localhost:4243" start drone
わーい
ログ
/var/log/upstart/drone.log
droneのsqlite3
/var/lib/drone/drone.sqlite
ubuntu@~$ sqlite3 /var/lib/drone/drone.sqlite SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables builds members repos teams commits migration settings users sqlite>
table
table | 備考 |
---|---|
builds | ビルドのログが入っている。stdoutの中に全文保持 |
members | 所属チームと役割を保持 |
repos | リポジトリ設定 |
teams | チーム設定 |
commits | リポジトリのコミットログを保持 |
migration | よくわからない |
settings | drone自体の設定 |
users | ユーザ |
- users
table|users|users|2|CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT ,email VARCHAR(255) UNIQUE ,password VARCHAR(255) ,token VARCHAR(255) UNIQUE ,name VARCHAR(255) ,gravatar VARCHAR(255) ,created TIMESTAMP ,updated TIMESTAMP ,admin BOOLEAN ,github_login VARCHAR(255) ,github_token VARCHAR(255) ,bitbucket_login VARCHAR(255) ,bitbucket_token VARCHAR(255) ,bitbucket_secret VARCHAR(255) )
- teams
table|teams|teams|6|CREATE TABLE teams ( id INTEGER PRIMARY KEY AUTOINCREMENT ,slug VARCHAR(255) UNIQUE ,name VARCHAR(255) ,email VARCHAR(255) ,gravatar VARCHAR(255) ,created TIMESTAMP ,updated TIMESTAMP )
- members
table|members|members|9|CREATE TABLE members ( id INTEGER PRIMARY KEY AUTOINCREMENT ,team_id INTEGER ,user_id INTEGER ,role INTEGER )
- commits
table|commits|commits|13|CREATE TABLE commits ( id INTEGER PRIMARY KEY AUTOINCREMENT ,repo_id INTEGER ,status VARCHAR(255) ,started TIMESTAMP ,finished TIMESTAMP ,duration INTEGER ,attempts INTEGER ,hash VARCHAR(255) ,branch VARCHAR(255) ,pull_request VARCHAR(255) ,author VARCHAR(255) ,gravatar VARCHAR(255) ,timestamp VARCHAR(255) ,message VARCHAR(255) ,created TIMESTAMP ,updated TIMESTAMP )
- builds
table|builds|builds|15|CREATE TABLE builds ( id INTEGER PRIMARY KEY AUTOINCREMENT ,commit_id INTEGER ,slug VARCHAR(255) ,status VARCHAR(255) ,started TIMESTAMP ,finished TIMESTAMP ,duration INTEGER ,created TIMESTAMP ,updated TIMESTAMP ,stdout BLOB )
- migration
table|migration|migration|28|CREATE TABLE migration ( revision NUMBER PRIMARY KEY )
- repos
table|repos|repos|30|CREATE TABLE repos ( id INTEGER PRIMARY KEY AUTOINCREMENT , slug VARCHAR(1024) UNIQUE , host VARCHAR(255) , owner VARCHAR(255) , name VARCHAR(255) , private BOOLEAN , disabled BOOLEAN , disabled_pr BOOLEAN , privileged BOOLEAN , timeout INTEGER , scm VARCHAR(25) , url VARCHAR(1024) , username VARCHAR(255) , password VARCHAR(255) , public_key VARCHAR(1024) , private_key VARCHAR(1024) , params VARCHAR(2000) , created TIMESTAMP , updated TIMESTAMP , user_id INTEGER , team_id INTEGER )
droneとJenkinsの違いとかを考えながら触ってたんだけど、Jenkinsは「いまある環境+α」を検証するのには良いと思う。Docker / Vagrantでごにょごにょやってテストする、とかもいいと思うけど、droneは「(そもそも必要な依存関係とかを解決した)コンテナを用意して、その上でテストが必要なやつだけを検証する」のは非常に簡単だし、環境とアプリ・ライブラリのテストを完全に分離できるという意味で俺的エポックメイキングな感じでした。
会社でも使ってみたいと思います。
プロビジョニングとオーケストレーション
@sonotsさんからいろいろ聞きながらの自分の中の理解
- プロビジョニング:マシン単体における(アプリのインストールも含めた)設定の変更(初期化含む)
- オーケストレーション:機能を実現する、複数のマシン群の「台数」の変更(構成の変化は今後。例えばDBの水平分割に伴うディスパッチャー層の追加とか)
@sonotsさんまじニフティ
雑感
- @sonotsさん「Jenkinsみたいにslave/workerは使えるの?」→しらね
- @tohae さん「ぱーるかけちゃうからよくないわー」
とはえミサワ「perl 書けちゃうからよくないわー」
- @yosuke_furukawa さん → @takus さん 「なに勝手にご飯食べてるんすか?」
よーちゃそ「なに勝手にご飯食べてるんですかー?」#rogai
:Dの会社、怖い会社