鱒身(Masu_mi)のブログ

知った事をメモする場所。

メトリクス可視化をやってみた(Diamond + InfluxDB + Grafana)

Diamond + InfluxDB + Grafanaでメトリックス集計した。無理やり入れた感が否めない。

今日の方針

  • 収集にはDiamondを使う
  • Diamondはvirtualenvのpython27環境にpipでインストールする
  • NginxのメトリックスもDiamondで収集する
  • InfluxDBGraphite_インタフェースを利用する
  • 可視化はGrafanaを利用する
  • Grafanaのユーザー管理はGithub OAuthを利用する

Read more...

CowrieをCentOS6で動かしてみた

SSHのHoneypotであるCowrieをCentOS 6で動かしてログを確認するところまでやってみた。

ハニーポットは実際にサイバー攻撃を受けたり悪性サイトにアクセスして攻撃情報を収集する。

元々は前者を指す言葉だけど、最近は巡回型とかクライアント型とか呼ばれるタイプもあるみたい。とりあえず従来のハニーポットを試した。

Read more...

RabbitMQ 利用開始

RabbitMQを使う時にだいたい忘れてしまうので次こそはスムースに利用できるように再びメモを残す。

Read more...

pedaを導入した

タイトル通りにpedaを導入した。gdbが豪華になるって目的だ。

peda 導入時のgdb起動結果

Exploitの開発サポートも入るし色々と解析に便利なコマンドも追加される。 とりあえずbt(backtrace) でmainの外側も表示してくれる。 また今回導入するにあたり.gdbinitにgdb初期化処理を書ける事を知った。

gdb拡張はpythonで作れるのでELFの知識強化の材料として勉強するのが良い気がした。

ストレージ関係のツールとか眺めてた

最近はデータ保存の観点で調べてみたり考えてみたりする事が増えてきた。 Storage Weekly で出てきたデータ保持・配信系ミドルウェアやツールを中心に調べてみた。

ストレージ・データベース・オーケストレーション・コンフィギュレーションは網羅的に探したくなるので今度に回す。 BlockChain もストレージやコンテンツ配信系に意外と応用されていたけど、アルゴリズムから押さえたいので勉強してから別途まとめる。

ユーザーデータは、4K・全天球画像・3Dモデルみたいに巨大化する方向とセンシングデータみたいに大量な小さい時系列データの方向が特に増加すると思ってる。

システムデータは今まで通り、リポジトリ・ログ・メトリクス・コンテンツ配信・アーカイブが主軸だけれど、 リポジトリはマシンイメージ・Dockerイメージ・DCOSパッケージが増えていきそう。またコンテンツ配信で学習モデルも加わる気がする。

Read more...

AfterEffect 資料

最近は結婚式準備で時間がなかなか取れていない。

ELF・SQLite・AmbryHaystack ・カーネルソースへの興味を消化しきれないまま AfterEffect を使ってオープニングムービー、プロフィールムービーを作ってる。

AfterEffect はシーンを組み合わせてムービーを作るものではないし、動画形式を整えるものでもないし、まして物理メディアに焼き付けるものでもない。 動画や画像を組み合わせて特殊効果を実現したりするものだ。 なのでAfterEffect を結婚式ムービーに使うのはオーバースペックな上に目的を取り違えている。

ただ使ってみたら簡単にVFXを作れたりと趣味として楽しかった。わくわくする。 ただ顧客と締め切りがあると仕事感が出てきて単純に楽しむだけでは済まなくなってしまうのは悲しいものだ。(まだ全然、終わっていない)

とりあえず目を通すと良さそうな資料を記録しておく。

SQLite4が現れた!

SQLite3の勉強を放置しているうちにSQLite4が出ていた。 なので今回はThe Design Of SQLite4の超訳(すっとばし)と補足を書く。

SQLite3を読んでSQLiteは標準のB-Treeを基盤に仮想テーブルを使って色々なデータ構造をSQLで糊付けする抽象化層ライブラリってイメージを持っていた。 SQLite4は各コンポーネントの責任範囲を明確にして全体を単純に扱えるようにしている印象を受けた。 例えば、 プラガブルなストレージエンジンは、データモデル(トランザクション・データ構造)をデータベース全体で統一させている。 これはテーブル単位でのデータ構造切り替え(仮想テーブル)よりも単純化されていて扱いやすそうに思えた。 また、実行環境オブジェクトは複数のDB接続をユーザー側で明示的に管理しないといけなくしている。

参考資料のリンクを残す

Read more...

ダメな定数

恥を晒しておく。最近、馬鹿な定数を定義してしまった。

定数化によって、マジックナンバー・リテラルを減らすことの目的には、コード修正時の変更箇所を減らしたりコンパイラに検証を任せられる様にすることが含まれる。 またフォーマット文字列の場合は、書式指定子と後続の引数の間で意味的な関係があり切り離すと関連を追い辛く変更箇所が増えてしまう。

そのため、だいたいの場合でフォーマット文字列は定数にせずにプロシージャに閉じ込める方が良い。

良い歳して考えずに定数化した自分が恥ずかしい。。

const format = "%s/%s/%s/hoge"

func Main() {
  fmt.Sprintf(format, "name", "number", "book")
  // ...
  // ...
  fmt.Sprintf(format, "name2", "number2", "book2")
}