タグ

ブックマーク / heartbeats.jp (37)

  • Pythonタスクランナー Fabric 2 の紹介 - 前編 Fabricの概要 -

    こんにちは、滝澤です。 いくつかのプロジェクトでタスクランナーFabric 2を使う機会がありました。少しですが知見が溜まったので紹介します。 また、Fabric 1.xを利用していた方は互換性も気になると思いますでのその点についても紹介します。 記事が長くなったので3編に分けます。 前編: Fabricの概要 中編: Invokeの使い方 後編: Fabricの使い方 記事は前編の「Fabricの概要」になります。 なお、執筆時点(2018年11月21日)での最新バージョンはFabric 2.4.0、Invoke 1.2.0です。 動作確認はPython 3.7.1にて行っています。 FabricはSSH経由でリモートシェルコマンドを実行するPythonライブラリです。 タスクランナーとして利用できます。 Fabricの簡単な理解のために、実行例を紹介します。 次のような内容のfabf

  • メトリック収集と分散トレーシングのフレームワーク OpenCensus を使ってみた - インフラエンジニアway - Powered by HEARTBEATS

    こんにちは、滝澤です。 先日、社内ISUCONが開催され、運営側として関わっていました。 その中で、試し解きと技術検証(お遊び)も兼ねて、以前から興味があったメトリック収集と分散トレーシングのフレームワークの OpenCensus を使ってみて、処理時間の可視化をしてみました。 そのときに行った内容などを紹介してみます。 OpenCensusとは OpenCensusはメトリック収集および分散トレーシングを行うためのライブラリ集です。 マイクロサービスやモノリシックなアプリケーションに対して Observability (可観測性)を提供します。 Google社が社内で利用しているメトリック収集およびトレーシングのライブラリ集であるCensusのオープンソース実装として、2018年1月にリリースされました。 提供する機能としては大きく分けて次のものになります。 Metrics (メトリック

  • Dockerドキュメント日本語化に参加しよう!

    このエントリは Docker Advent Calendar 2016 - Qiita の2日目です。 こんにちは。CTOの馬場です。 みなさんお世話になった(と思われる)Docker語ドキュメントは @zembutsuさんが個人で翻訳されています。 GitHubで作業されていて、Pull Requestを受け付けてくれているので、 ぜひ参加しましょう! 環境構築 いまはSphinxがあればビルドできるので、 インストールしておきましょう。 pip install Sphinx 2016/12/1時点で Sphinx 1.4.8 でHTML生成できることを確認しています。 生成は1行ぽんと実行するだけ。 make html これで build/html 配下にHTMLが生成されます。 別の方法として、もし手元の環境に手を加えたくないなーという場合はDockerを活用しましょう。 リポジ

    Dockerドキュメント日本語化に参加しよう!
  • Docker と infrataster で nginx の振る舞いをテストする

    こんにちは。吉川 ( @rrreeeyyy ) です。今期オススメのアニメはリゼロです。 Nginx は設定ファイルの記述力も高い、大変便利な Web サーバです。 便利な反面、設定ファイルの複雑化や、設定に依っては意図しない挙動を引き起こしてしまうこともあります。 そこで稿では docker 並びに infrataster を使用し、 Nginx の挙動をテストすることによって、安全に Nginx の設定を記述する方法について紹介します。 テスト対象の Nginx の仕様 今回は例として、次のような仕様の Nginx のテストについて考えます。 ネットワーク帯は 10.0.0.0/16 を使用している Nginx の前段として L7 ロードバランサが存在している L7 ロードバランサが https を終端している Nginx 自体は 80 番ポートと 8080 番ポートにて待ち受けてい

    Docker と infrataster で nginx の振る舞いをテストする
  • Python+SSHな自動化・デプロイメントツールFabricを活用するTips

    こんにちは。CTOの馬場です。 みんな大好きFabricのTipsです。 Welcome to Fabric! -- Fabric documentation よくデプロイツールとして紹介されますが、 自動化のためのPython+SSH+コマンド実行フレームワークとして柔軟に使えて超便利です。 基的には 手元でのコマンド実行 SSHごしのリモートサーバでのコマンド実行 SSHごしのリモートサーバでsudoしてコマンド実行 ができるツールなのですが、使い方の例を紹介します。 間違いなどあればお近くのハートビーツ社員か @netmarkjp に教えていただけると嬉しいです。 Python 2.7.10 + Fabric 1.10.2 + Paramiko 1.15.2で動作確認しました。 複数のサーバに対して同じユーザ・パスワードでログインする ユーザ名やパスワードを一括指定できます。 鍵認

    Python+SSHな自動化・デプロイメントツールFabricを活用するTips
  • Apache HTTP Server: MPMパラメータ チートシート

    こんにちは滝澤です。たまにはapacheネタということで一つ。 Apache HTTP ServerのパラメータチューニングではMaxClientsなどのMPM(マルチ プロセッシング モジュール)関連のディレクティブの設定値を調整することが多いです。記事ではMPM関連のディレクティブのデフォルト値やディレクティブ間の関係を表にまとめたので紹介します。 注意事項 UNIX系OSにおける説明となります。バージョン2.2系および2.4系の両方について説明します。 関係式においてバージョン2.4系の場合はMaxClientsをMaxRequestWorkersに置き換えて読んでください。 ディレクティブ名には公式サイトのリンクを張っています。公式の説明も確認してください。 デフォルトの欄で括弧付きものはそのディレクティブそのものは設定不可ではあるが、内部的に設定されているデフォルト値を示してい

    Apache HTTP Server: MPMパラメータ チートシート
  • 覚えておきたいbashシェルスクリプトのオプション

    こんにちは。CTOの馬場です。 今回もインフラエンジニア向けにちょっとした情報を紹介します。 今回は「覚えておきたいbashシェルスクリプトのオプション」です。 便利なものを3つ紹介します。 これを覚えておけば、シェルスクリプトとの付き合いが楽になること間違いなし! その1: eオプション まず1つめはeオプションです。 使い方としては bash -e shellscript.sh のように使います。 このオプションの効果ですが、man bashによると -e オプションが与えられた場合、返り値は最後に実行されたコマンドの返り値となるか、あるいはコマンドの一時ファイルでエラーが起きた場合には偽となります。2番目の形式を用いた場合、終了ステータスは再実行されたコマンドの終了ステータスとなります。 とのこと。。。よくわかりませんね。 平たく言うと、シェルスクリプトの一連の動作の中でエラー(ex

    覚えておきたいbashシェルスクリプトのオプション
  • nginxパッケージの選び方@CentOS6、Ubuntu14.04 - インフラエンジニアway - Powered by HEARTBEATS

    こんにちは。CTOの馬場です。 最近はnginxがパッケージでインストールできるようになってきたので、 いろいろなパッケージのconfigureオプションを比較してみました。 nginx.org公式パッケージ(stable = 1.6.0) @ CentOS6, Ubuntu14.04 nginx.org公式パッケージ(mainline = 1.7.3) @ CentOS6, Ubuntu14.04 Ubuntu公式パッケージ(1.4.6) @ Ubuntu14.04 nginxにはまだDSO機構がないので利用したいモジュールが入ったものを選ぶ必要があります。 バージョン、configureオプションをもとにパッケージを選びましょう。

  • nginxをdockerで動かす時のTips 3選

    こんにちは。CTOの馬場です。 最近利用する機会が増えてきたdockerネタです。 nginxを動かすときのTipsを3つ紹介します。 foregroudで起動する dockerではコマンドをforegroundで動かさないとコンテナが停止してしまいます。 nginxはデフォルトはデーモンとして動くので、foregroundで動くように設定しましょう。 nginx.confで設定するならこうです。 daemon off; Dockerfileの起動コマンドで指定するならこうです。 CMD ["/usr/sbin/nginx", "-g", "daemon off;"] 動的な設定を外部化する イメージの中に設定値を入れちゃうのはダサいですよね。 コンテナ起動時に動的に設定したいものです。 dockerの場合は docker run 時に -e で環境変数を指定できるので使いましょう。 do

    nginxをdockerで動かす時のTips 3選
  • Nginx ユーザ会 #0 に行ってきました!

    こんにちは。三浦です。 先日6/18(水)にサイオステクノロジーさんのオフィス内にあるオープンスペースで開催された、「Nginx ユーザ会 #0」に行ってきました。 ハートビーツもユーザ会運営に関わらせていただいています。 会場には100人以上の人が集まり、おいしいビールとごはんをいただきながら初来日されたNginx開発者Igor Sysoev(イゴール・シソエフ)さんが、ひとりで開発していたときから会社設立を決意するまでの経緯や今後の開発の方向性などについてお話を伺いました。 The 1st NGINX Japan User Group meetup! #ngxug pic.twitter.com/J3cc3J4T8E — nginx web server (@nginxorg) 2014, 6月 18 Nginx開発のモチベーション 学生時代は科学、物理学、歴史などいろいろなことに興味

    Nginx ユーザ会 #0 に行ってきました!
  • Google Cloud PlatformのCLIツールgcutilをDockerで使う #gcpja

    こんにちは。CTOの馬場です。 前回 Google Cloud Platformをはじめようチュートリアル でGCPのアカウント設定・プロジェクト作成〜GCEでインスタンス起動までやってみました。 その手順の途中で登場した、GCPのCLIツール gcutil を手元のPCにインストールする代わりにDockerを使ってGCP操作環境を作ってみましょう。 ※Dockerが使える環境があることが前提です。ありますよね。 1. 認証設定 Googleが cloud-sdk セットアップ済みのコンテナイメージを公開しているので、これを使います。 まずはpullして gcloud auth login で認証設定します。 docker pull google/cloud-sdk docker run -t -i --name gcloud-config google/cloud-sdk gcloud

    Google Cloud PlatformのCLIツールgcutilをDockerで使う #gcpja
  • メディアサイトのCDN利用に関する論文を読んでみよう 後半

    斎藤です。こんにちは。 前回から読んでいる「What Your CDN Won't Tell You: Optimizing a News Website for Speed and Stability」の後半を要約し、私なりのちょっとした解釈をご紹介します。 (<<前半の記事を読んでみる) ※謝辞と参考文献は省略します ※誤訳やより良い解釈がある等ありましたら、twitterの @koemu までお知らせください。 CDNを用いて何をすべきか --- オリジンサーバが安定している時 筆者らは、思考実験の結果、次の優先順位でチューニングにあたる事にしました。 1: オリジンサーバの安定性 2: コンテンツの鮮度の確保 3: システムの複雑さの改善 4: コスト 1については、どんな状況であろうとも、オリジンサーバが止まってしまってはトラフィックが捌けません。2については、できる限り新鮮なコ

    メディアサイトのCDN利用に関する論文を読んでみよう 後半
  • どうしてメモリはスワップするのか!?

    こんにちは。斎藤です。 最近、新しいスキー板が欲しいなと思っています。現在使っているOGASAKAの板は5年目に入り、メーカーからこれ以上はチューンナップ(メンテナンス)はできないよ、と言われてしまいました。もし、次に買うなら、スノーボーダーの人と一緒にパウダーに飛び込みやすいセミファットタイプが良いのかなと考えています。皆さんのオススメ、ぜひ教えてください。 さて、今日はLinux Kernel上でのメモリ管理、特にページ回収(Page Reclaim)とスワップに絞り、「スワップの理由」「ページを回収する仕組み」そして「スワップの様子を観察する」の3点に分けてお話しします。「スワップするのが気持ち悪い」と考えている方は少なくないと思いますし、私もそう考えていた時期がありました。しかし、それは当に悪い事なのか、今回掘り下げて行きます。 ※主な対象Kernelは2.6.32(Red Ha

    どうしてメモリはスワップするのか!?
  • 無料で始められる監視・モニタリングサービス 5選

    ※1: 2013/12/27追記 1台→Noneに書き換えております。これは、はてブで「制限が無いのでは」と指摘ありましたので再度調べました所、"None"と記述がありました。別項目で"Unlimited"の表記があり「無制限」とは違う意味で書かれていると認識しまして、上記の通りに変更しております。 なお、サービス内容は有償プランになると強化・増えている場合がほとんどです。 New Relic 監視・モニタリングがセットになったサービスです。 対象のサーバにエージェントをインストールすることで、監視・モニタリングを行う事ができます。監視項目毎に一つ一つ設定をしなくても良い点が、監視を始めたばかりの方にとっては便利かもしれません。 また、特徴的なのは、スマートフォンからデータの参照、及び障害通知をPush通知で受け取る事ができる点です。現代的ですね。 無償プランでは、サーバは1台、モニタリン

    無料で始められる監視・モニタリングサービス 5選
  • CactiのデータをElasticSearch+Kibanaでまとめてみてみよう

    斎藤です。こんにちは。 最近、会社の中で様々な部活動が始まっています。「プログラミング部」や「フットサル部」といったメジャー(?)なものから、「サイクリング部」「P部(プロレス観戦部)」そして「二郎部」などなど、エッジが効いたものまであります。そうそう、私は「サイクリング部」と「P部」に所属しています。 さて、今回はKibanaを使って、Cacti(RRDTool)が収集したモニタリングデータを参照してみようと思います。Cactiはモニタリングデータを収集・ビジュアライズするツールとして普及していますが、他のサーバ・指標と比較するのがちょっと面倒です。そこを、Kibanaを用いてより見やすくしようと言うのが目的です。Kibanaとは、収集したログをGUIで整理しつつビジュアライズできるデータ分析ツールの一種です。たいてい、データストアとしてElasticSearchというNoSQL DB

    CactiのデータをElasticSearch+Kibanaでまとめてみてみよう
  • ITインフラで起きる「もしも」のための12個のコマンド

    こんにちは。斎藤です。 ITインフラの障害は、多くの場合「予期せぬ」タイミングで発生します。特に、CPUリソースを多量に消費したり、Disk I/Oが輻輳している場合、その切り分けは困難な状況に陥りやすいものです。 そこで、日はITインフラ、特にOS・ミドルウェアを支えるにあたって、問題解決を助けてくれるであろう12個のコマンドを取り上げてみます。「必ず押さえておきたい」5つのものと「更に覚えると便利なコマンド」7つの2節に分けてお話しします。 ※CentOS 6.4 (64bit)を前提に取り上げます 必ず押さえておきたいコマンド もしITインフラ管理者になりたてな方はぜひ サーバサイドのプログラマをやっていたのだけれど、ある日突然「君、サーバ管理担当ね!」と、バトンを渡される方っていらっしゃると思います。私も以前はそのクチでした...。そうなってしまったとき、まずは覚えておきたい5つ

    ITインフラで起きる「もしも」のための12個のコマンド
  • bash-completionでserviceコマンドなどの補完を強化しよう

    斎藤です。こんにちは。 今日は、bashコマンドの補完を強化する bash-completion[1] をインストールしてみよう、というお話です。 先日執筆した記事『デーモンの起動・終了にはserviceコマンドを利用しよう』の反響の中に「serviceコマンドは補完が効かない」というコメントを頂いていました。こちらですが、 bash-completion を入れると補完が効くようになります。そこで、先日の記事の補足として、お話ししたいと思います。 ※ bash-completion は1.2を用いています そもそも bash-completion で何ができるの? bash-completion は、次のコマンドの入力補完を行えるようにするためのソフトウェアです。次のコマンドが対象となっています。 $ pwd /tmp/bash-completion-1.2/contrib $ ls _

  • デーモンの起動・終了にはserviceコマンドを利用しよう

    斎藤です。こんにちは。 今日は、デーモンの起動・終了に際してはserviceコマンドを使った方がいいよ、というお話です。 ※CentOS 6.4 (x86_64) でテストしています。尚、特記がある所を除きます。 デーモンの起動・終了には大きく2手 Linux、特にRedHat, CentOS, Fedora, Ubuntu[1]などでは、デーモンの起動・終了の制御の際に、大きく分けて次の2つの方法を用いる事ができます。 "/etc/init.d/"配下のスクリプト(以下、スクリプト)を直接実行する "service"コマンドを実行する 一見、同じ事をやっているように思えるのですが、実は違う部分があります。それは、起動スクリプトが扱う環境変数が違うのです。次の節で、検証してみます。 扱う環境変数が違う スクリプトを直接実行する場合は、実行時の際の環境変数をそのまま利用します。一方、serv

  • ohaiを使ってサーバの情報をプログラムで扱おう

    斎藤です。こんにちは。 今日は、Chefをインストールすると共に入るohaiを用いて、サーバの情報をプログラムで扱ってみます。 ※ohaiは6.16(github版)を用いています ohaiとは もともと、Chef Client/Chef Soloが実行環境の情報を取得するためのライブラリです。ただ、単独でもライブラリを使用したり、コマンドを実行する事で、Chefと同様に情報を利用する事ができます。ポイントは、外部コマンドの結果を内部でパースしてプログラムで扱いやすい形にできます。まさに、パーサーライブラリですね。 ohaiがなければ、コマンドでサーバの環境(例えば"df")の情報を取得しようとする時、コマンドの結果を取得した後に「お手製」のパーサーでプログラム内で活用できるようにしなければなりません。これが、"df"のほうに簡単なものならまだしも、"ip addr show"のような設定

    ohaiを使ってサーバの情報をプログラムで扱おう
  • Nagiosのチェックプラグインでroot権限が必要な場合の対応

    こんにちは。CTOの馬場です。 今回はNagiosのチェックプラグインで、root権限が必要な場合の対応についてご紹介します。 基的な方法としては、sudoを利用してnagiosやnrpeの起動ユーザに対して限定的に特権を与えます。 ポイントとしては、nagiosやnrpeの稼働ユーザは大抵ログインシェルがありません。そのため一工夫する必要があります。 例えばtailコマンドを利用できるようにする場合は、visudoコマンドで下記のように設定します。 Defaults:nagios !requiretty nagios ALL=(ALL) NOPASSWD: /usr/bin/tail !requirettyを設定して、ログインシェルがないユーザでもsudoできるようにすることがポイントです。

    Nagiosのチェックプラグインでroot権限が必要な場合の対応