今日の夕飯

2014-06-02 00:25:40 +0900

今日は昨日ビールを飲んだので、日本酒を飲みに行ってきた。 昨日のビール

ほんとは、天麩羅食べたかったのだが、天麩羅もうなくなってたらしいので、 日本酒とそばを食べた。そばを石臼で引いた。

石臼

親父さんが江戸っこらしく、「そこのしろいテーブルに座って」っていわれてなんだ? っておもったら、広いテーブルだった。 お通し

あと、githubにある使ってないリポジトリの整理を行った。

td-agent.pkg

2014-05-21 08:53:46 +0900

td-agent2がリリースされ、Macへの公式パッケージがでたのでインストールメモ

Install

ダウンロードしてダブルクリックでインストールできます。

設定

設定ファイル置場は/etc/td-agent/td-agent.confになります。 設定ファイルはいままでの設定で使えるようです。 あとはMLにあるとおりにコマンドを実行すればOKです。

$ sudo launchctl load /Library/LaunchDaemon/td-agent.plist

JubatusをDocker上で動かしてみた

2014-05-12 23:50:33 +0900

最近話題のDocker使ってJubatusを動かしてみたのでメモ的なものを

環境

環境はVagrantでUbuntu14.04を動かしその上でDockerでJubatusVMを動作

  • Vagrant: 1.5.4
  • docker: 0.11.1

Dockerfile

リポジトリを作成しておきましたのでcloneして実行します。

$ git clone https://github.com/katsyoshi/docker-jubatus
$ cd docker-jubatus
$ docker build .
$ docker run -p 9199:9199 最後に出てきたハッシュ値

で動きはじめます。

jubatus handsonにいってきたのでfluent-plugin-jubatusについてちょっとだけ

2014-04-21 23:45:43 +0900

Jubatus Handson行ってきました

行ってきました。

fluent-plugin-jubatus 0.0.2をリリースしました

先日大江戸Ruby会議04に行ってみたらやる気が湧いてきたので半年ほど寝かせておいたfluent-plugin-jubatusをアップデートしました。

大きな変更点としては、異常検知(jubaanomaly)をサポートするようになってます。

プラグインの今後

今回も入れなかったのですが、このプラグインでは未だ判定のみのサポートです。 理由としては

  • 計算量
  • メモリ

のふたつがあげられます。計算量に関しては以前手元のMacで異常検出を動作させていたときマシンの動作がもっさりになるほどの計算量があったためです。メモリに関しては今のところ不安には感じてはいないですが、データ量(数)が巨大になったときどこまで必要なのかってのがよくわからない。という理由で積極的に導入していないです。

これらを解消する方法としては忘却(unlearning)が考えられるのですが、じゃぁどの必要のないデータを忘却させるのって問題があります。

とはいえ、そろそろ導入したいのでpull reqまってます。

アクセスログをTreasureData.comへ

2014-04-11 00:50:27 +0900

いいかげんtreasure dataを使おうかな。 ということでこの鯖のアクセスログをfluentdを使って保存しようとおもいます。

今回はtd-agentを利用せずにgemからインストールしたfluentdを利用します。

環境

環境としてUbuntu 12.04を利用しています。

準備

事前準備としてユーザ、グループの作成、rubyのインストールを行ないます。

ユーザ、グループの作成

以下のコマンドでユーザ、グループの作成を行います。

$ sudo adduser fluentd -s /bin/false

指示に従って入力するとユーザ、グループが作成されています。 このユーザはログインできません

Rubyのインストール

以下のコマンドを入力しRubyのインストールを行ないます。

$ sudo aptitude build-dep ruby1.9.3
$ sudo aptitude install git
$ sudo git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv
$ sudo git clone git://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build
$ export RBENV_ROOT=/usr/local/rbenv
$ export PATH=${RBENV_ROOT}/bin:${PATH}
$ eval "$(rbenv init -)"

ここまで入力したらsudo visudo -f /etc/sudoers.d/00_baseと入力し、以下を入力してください

Defaults !secure_path
Defaults env_keep += "PATH RBENV_ROOT"

入力したらRuby 2.1.1をインストールします。

$ sudo rbenv install 2.1.1
$ sudo rbenv rehash

でインストール完了です。次にfluentdをインストールします。

fluentdとプラグインのインストール

gemでfluentdとtdプラグインのfluent-plugin-tdをインストールします。

$ sudo gem install fluentd fluent-plugin-td

つぎに設定ファイルfluentd.confを作成します。

```xml fluentd.conf

type forward </source>

type tail path /var/log/nginx/access.log format nginx time_format %d/%b/%Y:%H:%M:%S %z tag td.nginx.main.access pos_file /var/log/fluentd/main_access.pos </source>

<match td.*.> type copy

type stdout type tdlog endpoint api.treasure-data.com apikey ここにtdのAPIキーを入力してね auto_create_table buffer_type file buffer_path /var/log/fluentd/buffer/td use_ssl true

</match>


作成後起動確認を行なってください `fluentd -c fluentd.conf` 。
起動確認を行ったら `fluentd.conf` を `/etc/fluentd/fluentd.conf` に移動します。
これで終了です。

### init.dスクリプトの作成
まず `/etc/init.d/skelton` を `/etc/init.d/fluentd` にコピーします。
コピーしたら以下の様にします。

```diff fluentd_diff_skelton
diff --git a/etc/init.d/skeleton b/fluentd
old mode 100644
new mode 100755
index dac9480..c59505e
--- a/etc/init.d/skeleton
+++ b/fluentd
@@ -1,6 +1,6 @@
 #! /bin/sh
 ### BEGIN INIT INFO
-# Provides:          skeleton
+# Provides:          fleuntd
 # Required-Start:    $remote_fs $syslog
 # Required-Stop:     $remote_fs $syslog
 # Default-Start:     2 3 4 5
@@ -19,19 +19,14 @@

 # PATH should only include /usr/* if it runs after the mountnfs.sh script
 PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="Description of the service"
-NAME=daemonexecutablename
-DAEMON=/usr/sbin/$NAME
-DAEMON_ARGS="--options args"
-PIDFILE=/var/run/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-
-# Exit if the package is not installed
-[ -x "$DAEMON" ] || exit 0
+NAME=fluentd

 # Read configuration variable file if it is present
 [ -r /etc/default/$NAME ] && . /etc/default/$NAME

+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
 # Load the VERBOSE setting and other rcS variables
 . /lib/init/vars.sh

@@ -49,10 +44,11 @@ do_start()
  #   0 if daemon has been started
  #   1 if daemon was already running
  #   2 if daemon could not be started
-    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \
+    ${START_STOP_DAEMON_ARGS} --test > /dev/null \
      || return 1
-    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
-        $DAEMON_ARGS \
+    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \
+        ${START_STOP_DAEMON_ARGS} -- $DAEMON_ARGS \
      || return 2
  # Add code here, if necessary, that waits for the process to be ready
  # to handle requests from services started subsequently which depend

このままでは起動しないので /etc/default/fluentd を作成します。

```sh fluentd.default RBENV_ROOT=/usr/local/rbenv PATH=${RBENV_ROOT}/bin:${PATH} eval “$(rbenv init -)” USER=fluentd GROUP=fluentd DESC=”fluentd” PIDFILE=/var/log/$NAME/run.pid CONFFILE=/etc/fluentd/fluentd.conf DAEMON=/usr/local/rbenv/shims/fluentd DAEMON_ARGS=”–daemon $PIDFILE –log /var/log/fluentd/fluentd.log –config $CONFFILE” SCRIPTNAME=/etc/init.d/$NAME START_STOP_DAEMON_ARGS=””

if [ -n “${USER}” ]; then if ! getent passwd | grep -q “^${USER}:”; then echo “$0: user for running td-agent doesn’t exist: ${USER}” >&2 exit 1 fi if [ ! -d $(dirname ${PIDFILE}) ]; then mkdir -p $(dirname ${PIDFILE}) fi chown -R ${USER} $(dirname ${PIDFILE}) START_STOP_DAEMON_ARGS=”${START_STOP_DAEMON_ARGS} -c ${USER}” fi

if [ -n “${GROUP}” ]; then if ! getent group | grep -q “^${GROUP}:”; then echo “$0: group for running td-agent doesn’t exist: ${GROUP}” >&2 exit 1 fi START_STOP_DAEMON_ARGS=”${START_STOP_DAEMON_ARGS} –group ${GROUP}” fi


としたら、以下のコマンドを入力し、fluentdデーモンを起動します。

$ sudo update-rc.d fluentd defaults $ sudo mkdir -p /var/log/fluentd $ sudo chown fluentd:fluentd /var/log/fluentd $ sudo service fluentd start ```

で起動してるはずでう。

おわり

いくつかアクセスしてみてなげられてるのを確認できたらねます。 最後にさけまつりやるかもしれないのできてみてくだしあ。

スーパーユーザ権限もたずに好きなソフトをインストール

2014-04-09 20:46:35 +0900

Linux使っててこのソフトが入ってないしsudoも使えないってときありませんか? そんなときに好きなソフト(tmux, emacs)をインストールする方法を書いときます。 ここでは、tmuxとemacsについてインストール方法を書いときます。

方法

方法として以下のふたつがあると思う

  1. 頑張っていれる
  2. パッケージマネージャ

頑張って入れる

この場合はちょっと管理がめんどうかもしれないが書いときます。

前提条件としてgccとwgetがインストールされていることでX11関係のライブラリがインストールされていないこととします。

emacs

以下のコマンドでインストールできます。

 $ wget http://ftp.gnu.org/pub/gnu/emacs/emacs-24.3.tar.xz
 $ tar xvf emacs-24.3.tar.xz
 $ cd emacs-24.3
 $ ./configure --prefix=${HOME}/.local/ --without-x --without-dbus --without-gnutls --without-makeinfo
 $ make -j4 bootstrap
 $ make install
 $ export PATH=${HOME}/.local/bin:${PATH}
 $ emacs

tmux

以下のコマンドで必要ライブラリのncursesをインストールします。

 $ wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
 $ tar xvf ncurses-5.9.tar.gz
 $ cd ncurses-5.9
 $ ./configure --prefix=${HOME}/.local
 $ make -j4
 $ make install

次にlibeventをインストールします。

 $ wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
 $ tar xvf libevent-2.0.21-stable.tar.gz
 $ cd libevent-2.0.21-stable
 $ ./configure --prefix=${HOME}/.local
 $ make -j4
 $ make install

最後にtmuxをインストールします。

 $ wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.9/tmux-1.9a.tar.gz
 $ tar xvf tmux-1.9a.tar.gz
 $ cd tmux-1.9a
 $ CFLAGS="-I${HOME}/.local/include -I${HOME}/.local/include/ncurses" LDFLAGS=-L${HOME}/.local/lib ./configure --prefix=${HOME}/.local
 $ make -j4
 $ make install
 $ LD_LIBRARY_PATH=${HOME}/.local/lib tmux

すべてインストール終ったら設定をします

 $ echo 'export PATH=${HOME}/.local/bin:${PATH}' >> ${HOME}/.bashrc
 $ echo 'export LD_LIBRARY_PATH=${HOME}/.local/lib:${LD_LIBRARY_PATH}' >> ${HOME}/.bashrc

パッケージマネージャ

Gentoo/Prefix使え

hello, world

2014-04-05 11:09:14 +0900

とりあえずoctopressで書いていこうかと思います