2014年10月20日月曜日

ZaimApp for Splunk

Zaimに入力データをJson形式でインポートすればデータ解析ができる
SplunkのAppを作ってみた

Zaimは分析能力が乏しいことから分析能力が非常にすばらしいSplunkでの
利用を検討。

基本的にはJsonフォーマットによるインポートだが
CSVファイルでもinputs.confを調整すればいけるはず。

まずはベータとして。
https://github.com/maar4569/splunk_zaimapp

2014年5月9日金曜日

Splunkをインストールする

Splunkとは何か。Splunkは 主にセキュリティのインシデント分析(SIEM)を
中心としたログデータの検索・分析システム。
CSVやJSONなどテキスト形式のデータであれば何でも取り込める。データベースのように
スキーマを定義する必要が無く、Splunkが自動的に判別する。検索スピードもとても速い。この手の分析ツールは高価で大企業しか使えないイメージがあるが無償版も提供している。1日500MB未満のデータ取り込みであれば無料で使えるので、個人で使うのであれば十分過ぎる。
 
とりあえず使ってみるために以下のチュートリアルを参考にインストールした。
 http://docs.splunk.com/Documentation/Splunk/latest/SearchTutorial/InstallSplunk
 
OSはCentOS 6.2
 
オペレーションは以下のとおり。
 
1.ルートに切り替える。
 su root ( splunk do not needs root user! )

2.Splunkを展開。とりあえず/optへ。

  tar xvzf splunk-6.0.2-196940-Linux-x86_64.tgz -C /opt
 
  詳細は以下のURL
    http://docs.splunk.com/Documentation/Splunk/6.0.3/Installation/InstallonLinux

3.Splunkを開始するためにシェルを作っておく。

  3-1.cd /opt

  3-2.vim run_splunk.sh

         cd /splunk/bin
         ./splunk start

  3-3.chmod +x run_splunk.sh

4.splunkを開始する。
   4-1.  ./run_splunk.sh
            installration processing, you need to agree user licencse.
    
   4-2.  splunk web site is http://hostname:8000
   

5.splunkにサインする。
   デフォルト認証情報は以下のとおり。
           user admin
           pass changeme
 パスワードの変更を求められるので変える。

以上で完了。簡単過ぎ。
      
 

2014年3月6日木曜日

PostgreSQL9.3に更新してからDBのサイズが取得できなくなった

仕事でPostgreSQL8.3を使っていたがいろいろ問題があって9.3にアップする事に。
DB監視でサイズ情報を取得していたが動かなくなってしまいさあ大変。
ということで調べてみた。

これが今まで使っていたクエリ(の抜粋)
select
  relname,
  to_char(pg_relation_size(relname)),
  to_char(pg_total_relation_size(relname)),
  relfilenode
where
 pg_class
where
 relowner = xxxx and
 relkind = 'r';

こんな情報がありました。明示的なキャストが必要みたい。でも8.3だぞ?

 http://www.sraoss.co.jp/technology/postgresql/8.3/



select
  relname,
  to_char(pg_relation_size(relname::text)),
  to_char(pg_total_relation_size(relname::text)),
  relfilenode
where
 pg_class
where
 relowner = xxxx and
 relkind = 'r';

実際に明示的に記述することで取得できるようになった。
実務ではプログラミングから離れているため、このようなちょっとしたことでも
キャッチアップできていない。そんな自分に腹が立つ。。。

2013年12月24日火曜日

車に追突してきた容疑者が見つかった

 11月に家族と車で買い物に出かけた。信号待ちで止まっていたところ後ろから追突された。ハザードを出して車から出ようとしたところ、急発進して私の車の横を駆け抜け信号無視して逃げていった。車の特徴・ナンバーを覚えていた私は、頭にきて警察に通報、もろもろの処理をして、1か月ほど経過したところだった。

 警察からは容疑者が謝りたい、弁償したいとのことだった。ならばということで電話で話をしようということで待っているのだがかかってこない。
正直、車の破損についてはどうでもいい。 いい大人が逃げる、そして謝ると言って謝りの連絡がないことに憤りを感じている。本当はこんないい加減な人間と話す時間さえももったいないくらいなので、話すことさえためらわれる。しかし言いたい事は言っておきたいので待ってることにする。


はあ、全く人間的に問題のある大人が多すぎてうんざりする。

2013年12月19日木曜日

[Ruby]Zaim API V2に対応した認証用ライブラリを作ってみた

家計簿ソフトZaim(https://zaim.net)が提供するWebAPIの認証部分を
omniauthを参考に作ってみた。

ソースコードは以下のサイトにアップロード。
https://github.com/maar4569/omniauth-zaimv2

参考にしたのは以下のライブラリ。(v1用のライブラリ。)
mururuさんありがとうございます。

https://github.com/mururu/omniauth-zaim


以前Google Apps ScriptからZaim APIをたたこうとして失敗し涙したが、
今回は成功。

Railsに組み込む場合、コールバック用のコントローラに
以下のような記述をしておくと、verify APIのレスポンスが得られる。

#サンプル
def callback
  auth = request.env['omniauth.auth']
  @user_id = auth.info.id
  @name = auth.info.name
  @input_count = auth.info.input_count
  @day_count = auth.info.day_count
  @repeat_count = auth.info.repeat_count
  @day = auth.info.day
  @week = auth.info.week
  @currency_code = auth.info.currency_code"
end

また、カテゴリに関する情報を取得する場合は以下のコードで取得できる。
 api_url = auth.extra.access_token.consumer.options[:site] + "/v2/home/category"
 raw_info = MultiJson.load(auth.extra.access_token.get(api_url).body)['categories']
 p "categries =>  #{raw_info}"

ジャンルなども基本的には同じ要領で取得する。

Zaimの情報を分析して家計を助けるぞー

2013年11月27日水曜日

EC2インスタンスにRuby1.9.3をインストールする。

Amazon EC2のRHEL6の無料インスタンスにRuby1.9.3をyumでインストールしたかったが、初期設定のレポジトリには1.8.x1しかなかったため、パッケージをビルドしてインストールすることを試みた。

1.まずビルドに必要なパッケージをインストールする。
  対象は以下のとおり。
  zlib-devel
  openssl-devel
  readline-devel
  tk-devel
  libyaml-devel
  libffi-devel
  rpm-build

  注意
  libyaml-develをインストールしたときに、以下のようなエラーが発生するかもしれな
  い。
  Error:  Multilib version problems found. This often means that the root
       cause is something else and multilib version checking is just
       pointing out that there is a problem.

  要は複数のバージョンがあるので問題ありということ。
  元々インストールされていたのはlibyaml.i686、必要なのはlibyaml-devel.x86_64
      なので元々あったほうをアンインストールし、libyaml-devel.x86_64をインストール
  した。
      sudo yum remove libyaml.i686
      sudo yum install   libyaml-devel.x86_64
 
2.home直下にrpmbuildディレクトリを作成する。

3.rpmbuildディレクトリの下に以下5つのディレクトリを作成する。
  BUILD  RPMS  SOURCES  SPECS  SRPMS

4.SOURCESディレクトリに移動する。
  cd ~/rpmbuild/SOURCES

5.ruby1.9.3のアーカイブをダウンロードする。
  wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz

6.SPECSディレクトリに移動する。
  cd ~/rpmbuild/SPECS

7.specファイルをダウンロードする。
 wget https://raw.github.com/imeyer/ruby-1.9.3-rpm/master/ruby19.spec

8.ビルドを実行する。
  rpmbuild -bb ruby19.spec

9. rpmファイルが作成されていることを確認する。
 ~/rpmbuild/RPMS/x86_64/ruby-1.9.3p448-1.el6.x86_64.rpm

10.~/rpmbuild/RPMS/x86_64ディレクトリに移動する。
   cd ~/rpmbuild/RPMS/x86_64

11.パッケージをインストールする。
  sudo rpm -ivh ruby-1.9.3p448-1.el6.x86_64.rpm

12.インストールできたか確認する。
  ruby -v

  OK。1.9.3が入った!

  ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]




2013年11月20日水曜日

AWSでWindowsのFTPサーバ(パッシブモード)を構築する

仕事でWindowsサーバをFTPサーバとする必要があったため、AWS上で構築してみた。
その作業のまとめ。
前提として
 ・WindowsサーバのEC2インスタンスを作成しておくこと。
 ・そのインスタンスにFTPサービスをインストールしておくこと。
 ・RDPで接続できること。
が必要。

今回は動作確認のため同一VPC内に2つのWindowsサーバインスタンスを作成した。
FTPクライアントとFTPサービスのような位置づけ。
FTPプロトコルの利用範囲だが、
「インターネットからのFTPは許さない。指定VPC内のみ許可する」
ものとする。

1.まずマネジメントコンソールからVPCを選択する。
2.Security Groupsを選択する。

3.右ペインから用意したインスタンスが使うVPCを選択する。

4.下のペインで以下のように設定する。
 Create a new Rule  -> Custom TCP Rule
   Port range             ->  21
   Source                   -> VPCのGroup ID。 (ここではsg-4ce9e12e)
 ポイントはSourceにVPCのGroup IDを入れる事である。これでVPC内でしかFTPが
 使えないようになる。VPCの名前はDetailsタブのGroupIDに書かれている。


5.Apply Rule Changesをクリックする。これをクリックしないと設定が反映されない。

6.手順4同様に今度はFTPの制御用ポートを設定する。WindowsサーバのWindowsファイアウォールのポリシーを見てみると1024-65535が制御用ポートとして設定されているのでVPCでも同じ設定をする。
 Create a new Rule  -> Custom TCP Rule
   Port range             ->  1024-65535
   Source                   -> VPCのGroup ID


7.これでFTPサーバに接続できればOK。
   ex)ftp://サーバIPアドレス/hoge
   *hogeディレクトリはあらかじめサーバ側に作成しておくと望ましい。