« October 2010 | Main | May 2011 »

November 05, 2010

L1スイッチの使い道

L2~L4スイッチあたりは馴染みがある人が多いと思いますが、L1スイッチについては聞いたことすらない人も多いのではないでしょうか。L1スイッチは大規模サイトでは必須と言っても過言ではないくらい重要となります。というわけで今回はL1スイッチについて記してみます。


【L1スイッチとは?】
L1スイッチとは、物理層で切り替え(スイッチ)することのできるネットワーク機器となります。ある意味パッチパネルでの切り替えを電気的に行える機械とも言えます。かつ市販されているL1スイッチではメーカー毎に様々な機能が付加されている場合が多いです。

※余談ですが、レピータHUBもレイヤー1に該当しますが、レピータHUB自体にスイッチ機能はないのでレピータHUBがL1スイッチかと問われると微妙な気がします。


【L1スイッチのよくある使い道: ログ分析&IDS】
大規模サイトでよく使われる用途としてはログ分析&IDS監視です。大量の通信をログ分析サーバもしくはIDSサーバに流し込むために、本番系ネットワークとバックエンドネットワークの間にL1スイッチを挟みこみます。

L1

本番系ネットワークのL2スイッチにポートミラーリング設定をほどこし、L2スイッチ上を流れる全てのフレーム(※念のため注:L2なのでパケットではなくてフレーム)をL1スイッチ側に流れるようにすれば、結果的に本番系ネットワークの全てのフレームがL1スイッチを経由してバックエンドネットワークに流れ込むことになります。

そして、その流れ込まれたフレーム(というかL1なので信号かな?)をログ分析サーバもしくはIDSサーバが拾い、分析を行います。

ところでL1スイッチによっては、流れ込まれた信号をロードバランサーのように各サーバに割り振る機能を持つ場合があります。この場合負荷が増えてきた場合に分析サーバのスケールアウトが可能になります。


【L1スイッチを製造しているメーカー】
L1スイッチを製造しているメーカーはそんなに多くありません。例えば著者が調べた限り、以下の4社がありました。

・APCON社(INTELLAPATCH Family)
・Gigamon社(GigaVUE)
・日本ダイレックス株式会社(eL1 SWS)
・Glimmerglass社


【おまけ(宣伝)】
私が監修させていただいた「これだけは知っておきたい ネットワークの常識」技術評論社(共著。監修担当)にも用語集にL1のことをばっちり(?!)載せています。

| | Comments (0) | TrackBack (2)

November 02, 2010

MySQLのSQLクエリーだけで棒グラフを表示する方法

MySQLの出力結果を棒グラフで表示できたらいいなぁと思っていろいろ実験していたらうまくいってしまったのでご紹介してみます。

【普通の場合】
普通は以下のようになりますよね。出力結果だけ見てもどうもよくわかりません。

■SQL文

mysql> select date_format(regdate, "%Y/%m/%d %H") date, count(*) count from usert group by date order by date asc;

■出力結果

+---------------+-------+
| date     | count |
+---------------+-------+
| 2010/11/01 00 |  405 |
| 2010/11/01 01 |  276 |
| 2010/11/01 02 |  188 |
| 2010/11/01 03 |  148 |
| 2010/11/01 04 |  96 |
| 2010/11/01 05 |  63 |
| 2010/11/01 06 |  85 |
| 2010/11/01 07 |  142 |
| 2010/11/01 08 |  164 |
| 2010/11/01 09 |  137 |
| 2010/11/01 10 |  177 |
| 2010/11/01 11 |  177 |
| 2010/11/01 12 |  248 |
| 2010/11/01 13 |  178 |
| 2010/11/01 14 |  148 |
| 2010/11/01 15 |  158 |
| 2010/11/01 16 |  195 |
| 2010/11/01 17 |  213 |
| 2010/11/01 18 |  243 |
| 2010/11/01 19 |  236 |
| 2010/11/01 20 |  274 |
| 2010/11/01 21 |  310 |
| 2010/11/01 22 |  309 |
| 2010/11/01 23 |  280 |
+---------------+-------+


【棒グラフの場合】
そして今度は出力結果を棒グラフにした場合の例になります。ものすごくわかりやすくなりました。

■SQL文

mysql> select date_format(regdate, "%Y/%m/%d %H") date, REPEAT("#", count(*)/10) graph from usert group by date order by date asc;

■出力結果

+---------------+-------------------------------------------+
| date     | graph                   |
+---------------+-------------------------------------------+
| 2010/11/01 00 | ######################################### |
| 2010/11/01 01 | ############################       |
| 2010/11/01 02 | ###################            |
| 2010/11/01 03 | ###############              |
| 2010/11/01 04 | ##########                |
| 2010/11/01 05 | ######                  |
| 2010/11/01 06 | #########                 |
| 2010/11/01 07 | ##############              |
| 2010/11/01 08 | ################             |
| 2010/11/01 09 | ##############              |
| 2010/11/01 10 | ##################            |
| 2010/11/01 11 | ##################            |
| 2010/11/01 12 | #########################         |
| 2010/11/01 13 | ##################            |
| 2010/11/01 14 | ###############              |
| 2010/11/01 15 | ################             |
| 2010/11/01 16 | ####################           |
| 2010/11/01 17 | #####################           |
| 2010/11/01 18 | ########################         |
| 2010/11/01 19 | ########################         |
| 2010/11/01 20 | ###########################        |
| 2010/11/01 21 | ###############################      |
| 2010/11/01 22 | ###############################      |
| 2010/11/01 23 | ############################       |
+---------------+-------------------------------------------+

| | Comments (0) | TrackBack (0)

November 01, 2010

古いログを別のディレクトリに自動的に移動する方法

ログが溜まってくると、必要な情報を探しにくくなるので古いログを別のところに移動させたいと思うようになります。今回はそんな場合のためのcron設定を記してみます。

【cron設定】
いろいろな方法があるかと思いますが、今回はシンプルにいきます。

5 3 * * * /usr/bin/find /home/user/logs/*log -maxdepth 1 -type f -mtime +6 -exec /bin/mv {} /home/user/oldlogs/ \; 1> /dev/null

細かいオプションの意味は以下の通りです。

・「-maxdepth 1」・・・検索対象のディレクトリを1階層に制限する。
・「-type f」・・・検索対象をファイルに限定する。
・「-mtime +6」・・・データが修正された時間が7日以前のもの。+6とは7日(144時間)前~過去を指す。(+7でない点に注意)
・「-exec ~ \;」・・・「~」の部分のコマンドを実行する。
・「{}・・・ここにfindされたファイルのファイル名が入る。


【注意事項】
この方法で古いファイルを移動させる際、ログを吐き出す元アプリケーションを再起動しないとその後のログを吐き出さなくなる場合があります。その場合はrotatelogsかlogrotateを組み合わせるなどで回避する方法もあります。

| | Comments (0) | TrackBack (0)

« October 2010 | Main | May 2011 »