Zaimに入力データをJson形式でインポートすればデータ解析ができる
SplunkのAppを作ってみた
Zaimは分析能力が乏しいことから分析能力が非常にすばらしいSplunkでの
利用を検討。
基本的にはJsonフォーマットによるインポートだが
CSVファイルでもinputs.confを調整すればいけるはず。
まずはベータとして。
https://github.com/maar4569/splunk_zaimapp
2014年10月20日月曜日
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
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にサインする。
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
パスワードの変更を求められるので変える。
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
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';
実際に明示的に記述することで取得できるようになった。
実務ではプログラミングから離れているため、このようなちょっとしたことでも
キャッチアップできていない。そんな自分に腹が立つ。。。
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/
selectrelname,
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の情報を分析して家計を助けるぞー
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]
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ディレクトリはあらかじめサーバ側に作成しておくと望ましい。
その作業のまとめ。
前提として
・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
ex)ftp://サーバIPアドレス/hoge
*hogeディレクトリはあらかじめサーバ側に作成しておくと望ましい。
登録:
投稿 (Atom)




