タグ

ブックマーク / hiroakis.com (21)

  • go-check-pluginsを勝手に解説 – Mackerelアドベントカレンダー12日目 | Ore no homepage

    Mackerel Advent Calendar 2015の12日目です。比較的ゆるい内容にしました。昨日はすてにゃんさんでした。 この記事について 件の通り、mackerelのチェックプラグインについて。僕自身も業務では監視システムの中核としてMackerelを採用していて、主題のgo-check-pluginsやmackerel-agent-pluginsにいくつかのコントリビュートをさせていただいております。今回はgo-check-pluginsのプラグイン仕様やらお作法やらを簡単に解説します。golangでチェックプラグインを書いてみたいという人の一助になれば幸いです。 go-check-plugins チェックプラグインの開発にはいくつかのルールとお作法があります。ざっくり言うと次のポイントを押さえるべきだと思っています。 exit code 公式HPにも解説がありますが、これが

  • Octopusを使っているとUnicornのホットデプロイができなくなる件に関する対応 | Ore no homepage

    前回、最近割と暇とか書いたらなんかエラーが増えてきて対応しなきゃって事案が発生した。Rubyなアプリケーションの運用は今の会社で初めてなんだが、こういうトラブルに直面すると知見が増える。 いうてもやることは結構あるっちゃあるんだけどね。直近だとうるう秒対応とか…。俺んとこはntpd止めることにした。で、うるう秒経過後に起動する、と。ワケあって番のOSがgentooだし、何が起きるかわからんので。AWS上にいるAmazon Linuxや、GCE上にいるUbuntuはslewモードで乗り切る。しかしまあマルチクラウドも考えものだな…。運用しづらい。個人的には今のGentooなインフラをAWSに移したいんだが、会社としてまだその判断はしないようだ。まあインフラ周り見てるの俺一人しかいねーしな…。 環境 Ruby 2.0.0 Rails 4.0.1 Unicorn 4.6.3 Octopus 0

    Octopusを使っているとUnicornのホットデプロイができなくなる件に関する対応 | Ore no homepage
  • MySQL Casual Talks vol.8で喋ってきた | Ore no homepage

    先日行われたMySQL Casual Talks #8で登壇してきた。会場を貸してくださったテコラスさん、主催者ならびに参加者の皆様ありがとうございました。 発表のネタ ネタは「トレタのMySQL」と「はじめてのRails+MySQLの運用でOctopusでハマったこと」の二つを用意したんだが、後者は内容がRailsに寄りすぎていたというのと、時間的にもアレだったので自粛した。 小規模限定回ということだったんだが、そもそもウチは小規模なんだろうか?という疑問があった。なので「これできるの小規模だからだよなぁ…」と思えることを捻出して喋ってみた。 トレタのMySQL 内容的には、 小規模だと、Likeで全文検索とかアンチパターンみたいなことやっててもでも割と動くよ。 小規模だと大規模に比べて運用は楽。でもこれは台数が少ないからということではなく、アーキテクチャがシンプルだから。 大規模であっ

  • ウチの監視システムの変遷について書く | Ore no homepage

    今、リアルタイムでは休暇中でフランクフルト経由ベルリン行きの飛行機の中にいる。暇すぎる。うちの会社、ってかトレタの監視系の変遷について書く。でも絵を描く気力はないので文字のみ。 今の状況です ルフトハンザは日線は軽の時間に ONIGIRI が出てくるので結構好きな航空会社です。休暇中なのにラップトップ持ってくのはプロ社畜の証。まあ今会社で裏側見てるのが俺しかいないので、エエ…。しかし世の中ホント便利に便利になってる。空の上でもインターネットができる。言い方を変えると空の上でもアラートが届くっていう…。飛行機の中は暇すぎるけどさすがに仕事はしたくないね。というかこの旅行中は仕事を忘れたい。 2014/10以前 俺が入社する前。 コア機能:Engineyard(OS: gentoo)。 プロセス異常監視、閾値監視など:monit エラートラッキング、レスポンスタイム、SQL:NewReli

    ウチの監視システムの変遷について書く | Ore no homepage
  • nginxのproxy_passにIPではなくホスト名を使うときの注意点 | Ore no homepage

    nginxの背後にELBがいて、proxy_pass https://xxx.yyy.comみたいに指定していたんだが、突然クライアントにHTTP 499が返却されてしまうという事案が発生した。なおこの記事の対象はnginx1.8系とnginx1.6系。調べたところによると割とみんなよくハマる定期ネタのようだ。 どういうことか nginxの仕様としてproxy_passに名前を使っている場合、その名前解決はnginx起動時に行われる。そしてそのときに取得したIPはnginxにキャッシュされてnginxの再起動もしくはHUPを受け取るまで解放されない。 なのでELBのようにIPが変化するものをnginxの後段に置くときは注意する。 proxy_pass https://xxx.yyy.com; だけでなく、resolverでDNSとそのキャッシュのexpireを指定、さらにset $xxxで

  • 増員中のベンチャー企業での社内インフラ構築 | Ore no homepage

    エンジニアなんだから社内インフラとか余裕でしょ?」とか言われたわけではないんだけど、社内ネットワーク構築とかやったことないんだわ。なのでそのメモ。 企業規模 創業2年弱とかそんくらいのBtoBベンチャー。 社員数30人くらい。うちエンジニアは6人。 要件 社員用NWとゲスト用NWは分けたい 社員用NWから外に出て行くIPは固定IPにしたい ゲスト用NWから外に出て行くIPは↑とは別にしたい VPNほしい 構成 モデムからの線をHUBで二に分岐する。分岐先にはそれぞれ別のルータがいて、それぞれが別のプロバイダとPPPoEを喋る。1つのルータから2つのプロバイダに接続させて、うまくルーティングさせてもよかったんだが、機器の予備という意味でももう一個ルータがあってもいいんじゃないかと思ったので買わせてもらってこの構成にした。 各機器の設定は至極単純で、ルータは上述したようにPPPoE接続設定

    増員中のベンチャー企業での社内インフラ構築 | Ore no homepage
  • chefを捨ててシェルスクリプトにした | Ore no homepage

    一部のサブシステムの構築で、プロビジョニングツールを捨ててみた。じゃあどうするのかというとシェルスクリプトでやる。今回はこのやりかたが一番楽できるような気がしたので試している。 具体的にはPackerからシェルスクリプトとServerspecを実行してAMIを煮込む。おいしくできあがったらそいつから構築。もしミドルウェアより下の層のコンフィグ類に変更があったらまた煮込む。構築する。新しい方に切り替える。つまり”捨てるインフラ”にする。 プラットフォームはAWS。 (追記)ちなみにchefなどのプロビジョニングツールがめんどくさいからシェルスクリプトにしたというよりは、捨てる前提のサーバだからシェルスクリプトでの構築も選択肢として出てきたということです。ただ自分個人の嗜好としてchefはもう飽きたというのも事実です。なお、オンプレだと同じサーバで継続してプロビジョニングすることになるのでch

    clavier
    clavier 2015/04/24
  • Sensu Casual Talks #1 at KAIZEN platformで喋ってきた | Ore no homepage

    Sensu Casual Talks #1で喋ってきました。会場の提供および招待していただいたKAIZEN platformのglidenoteさんありがとうございました。他の参加者の皆様もありがとうございました。Sensu運用者として、いちエンジニアとしてとても面白い話を聞く事ができて大満足の勉強会でございました。 資料 俺の発表はSensuのUIである、sensu dashboard, sensu admin, uchiwa, sensu-cliおよびHubotから操作するときの雑感について話してきた。

    Sensu Casual Talks #1 at KAIZEN platformで喋ってきた | Ore no homepage
  • MySQL InnoDBの圧縮に関する雑感 | Ore no homepage

    7月は一回も記事書かなかった。3年くらい前からInnoDBの圧縮をしてみたり止めてみたりって行為を度々しているので、所感についてまとめとく。 2011年頃(MySQL5.1) 容量削減目的で圧縮を試す。 環境 CPU: Intel(R) Xeon(R) CPU  E5620  @ 2.40GHz(仮想8コア)×1 memory: 24GB storage: ioDrive Duo(2面合わせて600GBくらい。SW RAID0で組む。) OS: CentOS 5.4(kernel: 2.6.18-164.el5) filesystem: xfs(noatime, nobarrier) MySQL: 5.1 innodb plugin Query: ピーク時に更新系が5kqpsくらいだったかなあ…忘れた。 圧縮した結果 容量は半分に削減できた。 パフォーマンスはあまり変わらなかった。 CPU

  • Mac OSX開発環境構築メモ、便利なツールとか | Ore no homepage

    サッカー観戦が好きなハズなんだけど、今回のワールドカップまだ一試合も見てない。試合の状況はTwitterや外の叫び声で把握してるんだけど…。 えーと、以前、似たような記事(https://hiroakis.com/blog/2012/07/31/mac-osxiterm2tmuxzsh/)を書いてから2年も経ってしまった。ちょいちょい使うツールが増えたりもしたのでそのまとめ。基的には自分用メモだけど、紹介したものが人様の役に立てば幸い。同業者の人達の環境とかどうなってるのか気になるね。 0. シノギ 自己紹介ってわけじゃないけど、普段こんな仕事↓やってる奴の環境ですよ、っと。 Web屋でSNSやソーシャルゲームの運用。 会社の職種的にはインフラエンジニアというくくり。 しかしながらデータセンター行くのは月一くらい。 普段はサーバの管理とか運用改善とかをしてる。 ターミナルカタカタしてたり

  • Sensu serverのdockerイメージ作った | Ore no homepage

    最近モチベがあがらん。まあ酒飲めばどうでもよくなってしまうんだけど。温泉入りたい。 sensu-server、sensu-api、sensu-dashboard、redis、rabbitmqのプロセスが入ってるdockerイメージ作ったのでそれについて。これでsensuサーバの構築がdocker pull, docker runの2コマンドだけでできる。 作った githubdocker indexに置いた。 github https://github.com/hiroakis/docker-sensu-server docker index https://index.docker.io/u/hiroakis/docker-sensu-server/ docker入れてるマシンから↓みたいな感じで、docker indexからdocker pullで持ってきてdocker runでバー

  • 監視システムをSensuに刷新した | Ore no homepage

    データベースが落ち着いているので、その間に別のことに着手。 チームの監視システムがmonっつー超レガシーシステム。知っている人もいるかもしれないが、monはperl製のシンプルな監視システム。古くからあるものなんだけど「mon perl」で検索すると「もしかして: man perl」とgoogle様にも何だっけソレ?と言われてしまうかわいそうな奴(「mon monitoring tool」だとちゃんと出てくる)。なのでまあこの際だから俺が葬り去ってやる。導入したSensuのバージョンは0.12.6。GW前くらいから運用しているが今んとこ問題ない。まだ運用期間短いね。 割と長文になっちまったので、目次をば。 0. sensu概要 1. なぜsensu? 2. インストール 3. コンフィグの配置 4. プラグインについて 5. API 6. デバッグ 7. 今後の展望 0. sensu概要

    監視システムをSensuに刷新した | Ore no homepage
  • Python SQLAlchemyでちょっとハマったこと | Ore no homepage

    沼津で深海魚えるって聞いて先週ってきた。うときに店の人に魚の名前聞いたけど、ゲホウとかアブラボウズとデン(だったかな?)以外は忘れた。いろいろったけど全部覚えられん。深海魚は普通にえることがわかった。美味いよ。でもまあ目の前にマグロとサーモンと深海魚があったら、たぶんマグロとサーモンをうと思うw 記念としてうには良いかなw デンとゲホウは俺は好き。 ちょっとSQLAlchemyの練習がてら、遊びサイトやら社内ツールを作ってて、適当にやってたらハマった。平たく言うとsession.commit()時に発行されるSQLの順番は不定になるので、コード上はテーブルAにinsert→テーブルBにinsert→commitと書いていても、先にテーブルBにinsertが発行される場合がある。なので、外部キーを貼るときはちゃんとリレーションを使う。また、外部キーを貼っていなくてもテーブルの更

  • MySQLのクエリ集計手法いろいろ | Ore no homepage

    Webサービスを開発/運用してるモンとしては、いろんなWebサービスを触ってみなきゃアカンってことで、アメリカの若モンに大人気ってふれこみのsnapchatに登録してみた。これでリア充の仲間入りやと思ったが、snapchat友達が同僚二人しかいないうえに、利用シーンがあまり思い浮かばないww オジサン困っちゃいました。画像とか送信できるんだけど、数秒で消えるの。むしろそこがウリっていうね。どうやって遊ぼうか…。 2月はブログ書かなかったなーと思ったのでMySQL小ネタ。世間的にも自分的にも真新しくもなんともないTipsです。 innotopで集計 実は以前、Qiitaに書いたので↓をば。。。 http://qiita.com/la_luna_azul/items/505ca441b8c8e6a87aaa 流れるクエリ、ロックの状況、トランザクション(show engine innodb s

    MySQLのクエリ集計手法いろいろ | Ore no homepage
  • serverspec インフラ層のテスト項目を考える | Ore no homepage

    最近は担当システムが平和だけど俺が平和じゃない。疲れてる。忘年会の連チャンもきっついトシになっちまった。会社の制度で1週間くらい休みがとれるので、一人で温泉とスノボと開発合宿でもしに北海道にでも行こうかなって思ってる。1月か2月くらいに。 えーと、担当しているサービスにserverspecを導入した。それにあたってテスト項目を考えたので軽くまとめる。もちろんserverspec導入前もサーバ構築後は動作確認というか、テストらしいことはしていたっちゃしていたんだけど、テスト項目をまともに考えたのはこれが初めてかもしれない。serverspecのバージョンは0.13.2である。Rubyは2.0.0。 0. 環境 下記のような環境に導入した。ありふれた構成だと思う。60台くらいの規模。DBはマスタ3台に分割されていて、それぞれにスレーブがn台ぶらさがっている。LBの箱は二つあるが、物理的には1台

  • MySQL 容量確保のためのデータ削除方式 | Ore no homepage

    9月から異動になって別のサービスの担当になった。先月はさらに夏季休暇もとっていて、ちょっと旅行に行ってた(日記でも書こうかな…)。なので、最近はだいぶバタバタしてた。 で、まあその異動先のサービスでDBを見てみたらデータ容量があっぷあっぷだった。どうやら不要データを削除していないらしい。んで、早速大量のデータを削除することになったのでそのTipsといか小ネタ。 実際に作業したデータは何十倍も巨大なんだけど、手元の仮想マシンに用意した適当なデータで実験結果を示してみる。 1.  削除件数が少ない時 全件件数が下記の通り。

  • Riak 05 システムプランニング | Ore no homepage

    ハードウェア層 OS層 クラスタの留意点 負荷分散 ベンチマーク BitcaskとLevelDB コンフィグファイル スケールアウトとスケールアップの手順 運用上の注意点 64ビットCPUアーキテクチャ 最低4GBのメモリ。メモリは最も重要。局所性を活かせるのであれば多くメモリを必要としない。 RAID0、SSDを考慮すると良い。IOバウンドになりがちなので。 ミラーリング(RAID1)は考えなくて良い。 RAID(RAID1?)はやめちゃいな(クラスタ組んでるしいいんじゃない?的な?)。 ディスクサイズ重要。 ギガビットイーサも考慮にいれて。ネットワークも使うよ。 仮想マシンを使う場合は一番良いインスタンスを使う。同じデータセンタ/リージョンに配置するようにする。 クラスタ全体で必要なディスクサイズは次のように計算できる。 オブジェクト数 * 平均オブジェクトサイズ * n_val 50

  • tcpflow: httpレスポンスボディをリアルタイムで見たいとき | Ore no homepage

    tcpdumpの表示では見にくいし、pcapをいちいちwiresharkにわせてfollow tcp streamするのは面倒。そんなときに使えるツール。 (1) tcpflow tcpflow(最新はgithubかな) http://www.circlemud.org/jelson/software/tcpflow/ https://github.com/simsong/tcpflow (2) インストール 自分のメモをペッと貼付けただけなので、バージョンやダウンロード先は適当に読みかえてください。 yum install libpcap-devel wget http://www.circlemud.org/pub/jelson/tcpflow/tcpflow-0.21.tar.gz tar xvfz tcpflow-0.21.tar.gz cd tcpflow-0.21 ./con

  • MySQL バイナリログを使ったデータリカバリ | Ore no homepage

    目黒川の桜きれいですね〜(*^^*)…なーんてガラじゃないことを言いたくなるくらい良い咲きっぷりでしたよ、エエ。で、来週末、花見に行くんだけど、まだ散らないでほしいっすねー。 えーっと、久しぶりにMySQLの記事。binlogを使ったリストア手法について。ネットを漁るとMySQLの運用に関する記事は多くヒットするんだけど、障害からのデータリカバリ、特にロールフォワードを扱った記事が思ったより多くない。おれは運が良いのか悪いのかMySQLのデータリカバリをしなければならないような局面に何度か直面しているので、手順について書いてみようかな、と。ここではMySQL〜5.5を対象にしている。直近での最新のメジャーバージョンはMySQL5.6なんだけど、おれはまだ5.6について大して知らない。5.6ならもっとイケてるやりかたがあるかもしれない。あったらいいな。 0. 環境 次のような環境を前提として

  • sshの代わりにmosh (Mobile Shell)を使う | Ore no homepage

    こんばんは。今日はせっかくの休暇だったのに風邪引いちゃったよ。一人暮らしで風邪ひくとやたら惨めったらしい気分になるよね。 さてさて、えーっと、サーバにはsshじゃなくてmoshで接続してる。moshってのはMobile Shellのことで、sshの置き換え用として開発された次世代のsshのようなもの。今日は簡単なTipsになるけど、そのmoshのインストールとか使い方、メリットなどについて。 メリット わかりやすくまとめてくれている方がいらっしゃいました。 mosh: MITからモバイル時代のSSH代替品 http://d.hatena.ne.jp/karasuyamatengu/20120411/1334092521 おれが恩恵にあずかってるのは、ラップトップ持ったまま外出する時かな。ウチの会社はオフィスが複数箇所にあって、MTGなどがあるといったん外に出なきゃならなかったりする。どこぞ