jQueryを使った折りたたみ式のグローバルメニュー

2015/12/24 サイト制作, 技術系 投稿者:竹内

前回はメディアクエリを使用して『既存のホームページをレスポンシブスマホ対応する方法』をご紹介しました。
レスポンシブデザインによるスマホ対応の大まかな流れがつかめたと思います。

そこで今回は、レスポンシブ対応に最適な
『jQueryを使った折りたたみ式のグローバルメニュー』についてご紹介いたします。

グローバルメニュー実装の要件

PC用のレイアウトでは既存のグローバルメニューを使い、スマートフォンで表示した場合には折りたたみ式のグローバルメニューを使うようにする。

既存のホームページをレスポンシブデザインにてスマートフォンに変える事を目的としていますので、PC用のレイアウトでは既存のものをそのまま使います。
(場合によってはPC用レイアウトも含めて作り直してしまう方が良い場合もあります。)

また、グローバルメニューが3つ、4つ程度であればスマートフォン用に並び替えるだけで対応できると思います。

jQueryのグローバルメニュー実装その1

HTML内にScriptファイルを設定する

index.htmlに記述

HTMLにjQueryのファイルとtool.jsのファイルを読み込む記述を追加します。

 

tool.jsを作成する

tool.jsの中身を設定します。

jQueryのグローバルメニュー実装その2

HTMLにスマートフォン用グローバルメニューを設置する

index.htmlに記述

HTML内に既存のメニューとは別にスマートフォン用のグローバルメニューを追加し、既存のメニューに.navigationのclass指定をし、 スマートフォン用メニューは

でくくります。

jQueryのグローバルメニュー実装その3

CSSを設定し完成!

style.cssに追記する


最後にCSSの設定をします。ここでのポイントは、
PC用のグローバルメニューとスマートフォン用のグローバルメニューを2つ用意し、それぞれの画面解像度にあわせて表示/非表示を切り替える部分です。

2つ用意した理由として、

  • PC用のレイアウトを全く変更すること無くスマートフォン用のメニューを設置できる。
  • スマートフォン用のメニューの数や項目名を柔軟に変更・追加できる。
事があげられます。
例として、上記の場合ではスマートフォン用のメニューに「お問い合わせ」の項目を追加しています。

まとめ

前回と今回の記事でスマートフォン対応の「とある1つの手法」の一連の流れがご紹介できたと思います。
今回は紹介していない部分で、細かいひと手間やちょっとした工夫でスマートフォンでの見やすさ、操作のしやすさが変わってくると思います。
スマートフォン対応に限らず、手間や工夫を惜しまずより良いホームページ作りを行っていければと思います。

カレンダー

    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
既存のホームページをレスポンシブスマホ対応する方法

2015/12/22 サイト制作, 技術系 投稿者:竹内

今回は『既存のホームページをレスポンシブスマホ対応する方法』についてご紹介いたします。

2年程前からBootstrapやjQuery_Mobileによるスマートフォンサイトの作成であったり、WordPressのスマホ対応テンプレートの導入であったり、様々な手法を用いてスマホ対応を行ってきました。
最近ではWordPressのスマホ対応テンプレートか、今回ご紹介するメディアクエリによるレスポンシブスマホ対応の2パターンに収束してきた感じです。

今回はメディアクエリによるレスポンシブスマホ対応について紹介いたします。

メディアクエリとは

CSSの記述によって、画面幅に合わせたスタイルシートを適用させる事ができる手法です。
例えば、「横幅が640pxまでの画面であればこのスタイルシートを使う」といったことが容易にできます。

メディアクエリによるレスポンシブスマホ対応の利点

  • 既存のホームページを流用できる。(初期コストを抑える)
  • スマートフォンサイトを別に作るわけではないので、更新・運用管理が1サイト分で済む。(運用コストを抑える)
  • HTMLの大幅な改修が必要なくほぼCSSの改修のみで済む。(初期コストを抑える)

デメリットは無いのか?

デメリットはあります。
PC用の画像をスマートフォン表示でも使用するので、画像のファイルサイズが大きいと回線状況によっては表示が遅くなってしまうこともあります。
また、PC用のレイアウトの並び替えを行うので有益な情報がページの下の方に行ってしまったり、逆にそれほど重要でない情報が上に来てしまうこともあります。
これらのデメリットは画像ファイルを圧縮したり、レイアウトの調整を行うことで対処可能です。

メディアクエリによるレスポンシブスマホ対応の5ステップ

ではさっそく既存のホームページをメディアクエリを使ってスマートフォン対応してみましょう。

ステップ1:HTMLの記述にスマートフォン対応の記述を追加する。

まずはHTMLにスマートフォン用の記述を追加します。

HTMLファイルの一番上からの記述になります。この中の7行目の1文、こちらを追加します。
「HTMLの横幅はデバイス(スマートフォン等端末)の横幅に従います。表示倍率の初期値は1.0です」といった内容になります。

ステップ2:HTMLにスマートフォン用のCSSの記述を追加し、対象ファイルを用意する。

続いて、PC用とスマートフォン用のCSSの追加を行います。今回は既存のCSSをPC用としてリネームし、さらにPC用のCSSを複製してスマートフォン用のCSSのベースを作成します。(この時点ではCSSの中身は同一です)
そして、HTMLのCSSを指定する箇所の記述を変更します。
タブレット用のCSSも追加可能です。必要に応じて端末の画面サイズに沿ったCSSをご用意下さい。

(min-width: 640px)画面幅640pxを超える場合のPC用CSS。
(max-width: 640px)画面幅640pxまでのスマートフォン用CSS。

ステップ3:スマートフォン用CSSを準備する。

ステップ2で作成したPC用のCSSとそれを複製したスマートフォン用のCSSの双方にそれぞれのメディアクエリの記述を追加します。

style_pc.cssの内容に追記

 

style_mobile.cssの内容に追記

それぞれのCSS内全体を上記メディアクエリの表示で囲います。
1行目にメディアクエリの記述、最終行にその閉じる記述を追加します。


※PC用とスマートフォン用の記述の違いにご注意下さい。
特にPC用の記述には『@media print, screen and (min-width: 640px)』とprint,が入っています。ブラウザからホームページを印刷する際に、この記述によってPC用のレイアウトで印刷されます。
また、スマートフォン用の方にはimgタグに関する記述があります。この部分はスマートフォン表示の際に画像が自動的に画面サイズにあわせて縮小表示されるようにする記述で、なおかつ画像本来のサイズより大きく表示されてぼやけるのを防いでくれる便利な呪文です。
HTML4等でHTML内に画像のサイズが記述されているままでも縮小表示されます。

ステップ4:スマートフォン用CSSを調整する。

ステップ3でCSSの準備が出来たので、ここからはスマートフォン用のCSSを改修してレイアウトを調整していきます。
ここまでくればあとは各ページをスマートフォン用にCSSを修正していけばOKです。
主に2カラムのページ表示を1カラムの縦並びに変更したり、floatの横並びをスマートフォンにあわせて縦並びにしていきます。

CSSをスマートフォン用に改修するポイントがいくつかあります。

1. htmlやbody、wrapper等の横幅の指定を100%に指定する。
widthが980pxといった状態のままだとスマートフォンの画面外にはみ出てしまいます。

2. floatで横並びになっている部分をスマートフォン表示で縦並びにする場合、
floatの記述を消すのではなくfloat: none;で解除する。

floatに限らず必要のないレイアウトを無効にする場合は記述を消すのではなく、上記の方法にて解除します。
記述を消す手法だとPC用のfloat: left;が効いてしまって縦並びにならない場合があります。

3. tableタグはthtddisplay: block;で横並びから縦並びへ変更する。
会社概要のような2列のtableであればこの手法で、tdが複数あるようなtableの場合はoverflow: scroll;で画面内スクロールさせます。

4. ヘッダー領域が縦長になりすぎないように注意する。
情報量によってはヘッダー領域が縦長になってしまい、スマートフォンで見た時に画面の半分以上をヘッダー領域で埋めてしまうことがあります。
ヘッダー領域を過不足無くコンパクトにまとめるよう調整しましょう。

ステップ5:メディアクエリのCSS調整のみで解決出来ない部分の改修

上記までのステップにてほぼ対応できると思いますが、なかにはどうしてもうまくいかない部分があったり、想像と違う見え方になってしまった部分があると思います。
例えば、
 グローバルメニューがどうしてもうまくレイアウトできない。
 横長の画像が小さくなりすぎて何の画像なのかがわからない。
といった部分です。
グローバルメニューに関しては思い切って、スマートフォン用のグローバルメニューをjQuery等で実装してしまうのが一番だと思います。
こちらについてはまたの機会に紹介させて頂きます。
横長の画像が小さくなってしまう部分は、無くても良いイメージ画像であればスマートフォン用の表示では削ってしまったり、見出しに使う画像であれば縮小せずにoverflow: hidden;で画面外にはみ出た部分を強制非表示にしてしまうのも良いかと思います。

img_response

まとめ

今回は、巷でも主流になってきたメディアクエリによるレスポンシブスマホ対応についてご紹介いたしました。
ネットで調べればいくらでも出てくるありふれた情報ばかりではありますが、私が行ってきたスマートフォン対応で注意してきた点、苦労してきた点をポイントとして書き加えてみました。
何かのお役に立てればと思います。

カレンダー

    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
フレッツ・VPN ワイドの移転

2015/12/15 技術系 投稿者:長澤

これまでVPN構築の中で

などNTTが提供しているフレッツ・VPNワイドを利用したVPN構築例を紹介してきました。
弊社でもお客様へフレッツ・VPNワイドを利用したVPN構築を行ってきました。その中で本社や支店の移転に伴うフレッツ・VPNワイドの移転手続きや、旧サービスであるフレッツ・グループアクセスからフレッツ・VPNワイドへの変更に伴うVPN再構築も行いました。また、お客様が独自にフレッツ・VPNワイドを利用したVPN環境で支店の移転にはどのようにすればよいかご相談頂くことがありました。
そこで今回は拠点の引っ越しに伴うフレッツ・VPNワイドの移転方法を紹介します。

フレッツ・VPNワイドとは?

まずはフレッツ・VPNワイドについて簡単にお話します。
フレッツ・VPN ワイドはNTTが提供するVPNサービスです。NTT東日本のエリア内でフレッツ光ネクストやBフレッツなどの回線を利用して本社と支店間など複数の拠点を接続することができます。
ここで気を付けなければいけないことがあります。
それは光回線の種別です。
フレッツ光ネクストの回線とありますがフレッツ光ネクストは

  • フレッツ光ネクスト ファミリー・ハイスピードタイプ
  • フレッツ光ネクスト ファミリータイプ
  • フレッツ光ネクスト マンション・ハイスピードタイプ
  • フレッツ光ネクスト マンションタイプ

のみ対応しています。

  • フレッツ光ネクスト ギガファミリー・スマートタイプ
  • フレッツ光ネクスト ギガマンション・スマートタイプ
  • フレッツ光ネクスト ファミリー・ギガラインタイプ
  • フレッツ光ネクスト マンション・ギガラインタイプ

には対応しておりません。上記の回線にはフレッツ・VPNプライオというサービスが提供されております。

今はフレッツ光ネクスト ギガファミリー/ギガマンション・スマートタイプが主流になっているのでフレッツ・VPNワイドを利用する場合には注意が必要です。

また、フレッツ・VPNワイドはVPN管理者とVPN参加者に分かれますが、VPN管理者はフレッツ光ネクストの回線が必須となります。

詳細は下記のNTT公式サイトをご確認ください。
フレッツ・VPN ワイド 提供条件

フレッツ・VPNワイドの移転

ここからフレッツ・VPNワイドの移転についてお話致します。
本社や支店の引っ越しに伴うVPNの再構築やNTTへの申請などは意外と手間と時間が掛かり大変な作業になります。特にVPN管理者となっている回線の場合、フレッツ・VPNワイドで接続している全ての拠点に影響があり業務に支障が出てしまいます。
しかしながら下記の条件がそろうことでフレッツ・VPNワイドの移転ができます。移転するということは企業識別子やアカウント情報がそのまま利用できるのでルータ再設定の必要ありません。(プロバイダ接続アカウント情報の変更が必要になる場合があります。)ルータを移転前から移転先に持っていくだけで移転前と同じように利用することができます。

その条件とは・・・

  • NTT東日本のサービスエリア内であること
  • 移転先の回線種別は移転前と同じ回線種別が利用可能であること

になります。上記2つだけでフレッツ・VPNワイドの移転ができます。

移転可能

fletsvpn-1上記のように移転先が移転前と同じフレッツ光ネクスト ファミリー・ハイスピードタイプが利用できるので移転が可能です。

移転不可能

fletsvpn-2上記のように移転先の回線種別がフレッツ光ネクスト ファミリー・ハイスピードタイプの提供をしていない地域の場合は移転ができません。
このような場合どうすればよいか。既存のフレッツ・VPNワイドを解約する必要はありません。下記でその方法をご説明致します。

VPN管理者の変更

まずはじめに、VPN管理者をE支店に変更します。E支店に管理者を変更することで本社の契約を解約しても既存のフレッツ・VPNワイドに影響はありません。
本社移転後はフレッツ光ネクストファミリータイプでVPN参加者として既存のフレッツ・VPNワイドに新規で接続することで今までと同じように利用することができます。
この場合、フレッツ・VPNワイドのアカウント情報が変更になるのでルータの再設定が必要になります。

fletsvpn-3-2

手続き方法

フレッツ・VPNワイドの移転は既存の光回線を移転することで手続きができます。
まずは、
0120-116116(NTT東日本 サービスお問い合わせ)
に電話します。
電話では新規ではなく既存の光回線をそのまま利用するための移転とフレッツ・VPNワイドを利用していることを伝えます。その後は工事日の調整などの話になり、工事日を待ちます。

フレッツ・VPNワイドは光回線の移転工事が完了し接続ができ次第、利用できるようになります。VPNの廃止や新規申請の手続きは必要ありません。
また、移転なので企業識別子やアカウント情報の変更もありません。
さらにフレッツ・VPNワイドを利用して複数の拠点を接続している場合でも移転する対象回線以外は通常通り利用できます。

移転を有効活用しよう

フレッツ・VPNワイドを利用して複数の拠点と接続している企業とって、本社や営業所の移転時にはできるだけ業務に支障がでないようにしたいとみなさん考えます。今回のようにフレッツ・VPNワイドの移転をすることで、他の拠点の影響は最小限だけで済み、また移転先の環境にもよりますが、VPN再構築の必要もなくそのまま移転先にルータを持っていくだけで使えるので時間とリスクと抑えることができます。

移転と考えるとインターネット回線など新規に申し込みをしなければならないと考えてしまいますが、回線の移転という選択肢も検討してみてはいかがでしょうか。

カレンダー

    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
CloudWatchでAWSの監視(後編)

2015/12/10 AWS, 技術系 投稿者:千本木

前回はCloudWatchで、基本メトリクスを使って監視をすることができました。

後編の今回はカスタムメトリックスを使った監視を行ってみたいと思います。

カスタムメトリックスでの監視の流れ

大まかな流れとしては以下の通りです。

  • 監視したい項目に対する値を取得する
  • CloudWatchに送信する
  • CloudWatch側で値を解釈して適宜アラートメールを送信する

では、まず準備から行っていきます。

事前準備

aws-apitools-monのインストール

Cloudwatchへ値を送信するためのaws-apitools-monが必要ですのでインストールされているか確認します。

Amazon Linuxでは初期インストールされているようですね。

なければyumコマンドでインストールしておきます。

IAMでポリシーの作成

IAMのポリシーから、ポリシーの作成をクリックします。

cw02-03

Policy Generatorをクリックします。

cw02-04

AWSサービスから Amazon CloudWatchを選択しAmazonリソースネームからPutMetricDataをチェックし、分かりやすい名前を付けて保存しておきます。

今回は「CloudWatchPutMetricData」として保存しました。

cw02-05

CloudWatch用IAMユーザーの作成

次にCloudWatchへ値を送信可能なIAMユーザーを作成します。

IAMからユーザーをクリックし、新規ユーザーの作成に進みます。

cw02-01

ユーザー名は何でも良いのですが、分かりやすく「cloudwatch」としました。

cw02-02

ユーザー作成後に認証情報をダウンロードしておきます。AWSAccessKeyIdとAWSSecretKeyが後程必要になります。

先ほど新規作成したポリシー「CloudWatchPutMetricData」をアタッチしておきます。

cw02-06

作成したユーザーをEC2インスタンスに設定

テンプレートを使って先ほど作成したユーザーの認証情報を記述しておきます。

監視したい項目に対する値を取得する

さて、事前準備ができましたので監視設定を進めていきます。

良くあるケースとして、Apacheが正常稼働しているかどうかを監視する方法を考えてみたいと思います。

Apacheの死活監視を考える

Apacheのが正常に稼働しているかどうかを値によって判断すれば良いので様々な方法があると思いますが、以下のようにしてみました。

  1. Apacheの応答コードを取得する
  2. 応答コードが200であれば正常稼働とみなす
  3. 応答コードが200以外であれば異常とする

Apacheの応答コードを取得する方法

今回は単純にwgetを使ってApacheの応答コードを取得しました。

応答コードが200かどうかの判断

出力された結果を「200 OK」で検索し行数を取得します。

これで返り値が1であれば正常、0であれば異常であると判断できますね。

CloudWatchに送信する

上記の値を定期的にCloudWatchに送信します。

これを実現するには簡単なスクリプトを書きます。

このスクリプトをCRONで実行します。今回はテスト的に1分間隔で設定しました。

CloudWatch側で値を解釈して適宜アラートメールを送信する

先ほど作成したカスタムメトリックスは正常にCloudWatch側に送信されていると図のようにカスタムメトリックスがメニューに表示された状態になります。

cw02-07

では前回と同じようにアラームを作成してみたいと思います。

cw02-08

先ほど作成したカスタムメトリックスを選択します。

cw02-09

アラームのしきい値としてApache Statusが0の時にアラームを出すように設定します。

cw02-10

無事追加できました。今回は警告だけですが、復帰した場合にも通知を受けたい場合には、別途状態復帰のアラートメールを設定してください。

cw02-11

CloudWatchの苦手分野

設定の仕方が分かれば、監視対象をどのように数値化するかを考えれば良いので後は発想だけだと思いますが、他の監視ツールを使用していると不満足な点もあります。

  • データの保存期間が2週間だけであること
  • メールフォーマットが変更できない

特にメールフォーマットの部分ですが、何故か私の手元のAndroidでアラートメールを受信したら、メール内容が真っ白で分からないという現象が発生してしまいました。

恐らくHTMLメールのせいだと思うのですが、このあたりが解消できないと使いづらいように感じました。

以上のことから本格的に運用監視する場合にはZabbix等の方がまだ良いように感じました。

まとめ

2回に渡ってお送りしたCloudWatchいかがでしたでしょうか。

次回の私の更新ではこのCloudWatchと連携できるWAFについて記事にしたいと考えております。

カレンダー

    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
CloudWatchでAWSの監視(前編)

2015/12/08 AWS, 技術系 投稿者:千本木

千本木です。

AWSもシリーズ化してきた感がありますが、今回もAWSのCloudWatchについて記事にしたいと思います。

CloudWatchとは

サーバの運用では365日24時間の稼働を求められます。このためサーバに対する障害発生を検知する仕組みが必要となります。

また障害検知だけでなく、CPU稼働率やネットワーク帯域の使用量など様々な情報を取得し、健全なサーバ運用を実現しなくてはなりません。

当社でも物理サーバを管理運用しておりますが、様々なシステムを駆使して障害やステータスを把握する仕組みを構築しています。

今回解説するCloudWatchは、このサーバ運用で必須となるサーバの障害やステータスを監視するサービスとなります。

今回はEC2を監視対象として、CloudWatchによる基本的な監視設定について解説したいと思います。

CloudWatchでできること

公式ページによると CloudWatchでできることは以下の通りです。

  • Amazon EC2のモニタリング
  • その他のAWSリソースのモニタリング
  • カスタムメトリックスのモニタリング
  • ログのモニタリングと保存
  • アラームの設定

CloudWatchの料金

詳しくはCloudWatchの公式料金ページに記載されていますが、無料利用枠とリージョンによって設定された有料利用枠があります。

http://aws.amazon.com/jp/cloudwatch/pricing/
無料利用枠

Amazon CloudWatch は無料で始めることができます。無料利用枠内で利用できるアプリケーションを多数ご用意しています。

  • 新規のお客様も既存のお客様も、追加料金なしで最大 50 個のメトリックスからなる 3 つのダッシュボードを毎月ご利用いただけます。
  • Amazon EBS ボリューム、Elastic Load Balancing、Amazon RDS DB インスタンスのすべてのメトリックスと同様に、Amazon EC2 インスタンスの基本モニタリングのメトリックス (5 分間隔) は無料でご利用いただけます。
  • 新規および既存のお客様は、10 メトリックス(Amazon EC2 インスタンスまたはカスタムメトリックス、または CloudWatch Logs の詳細モニタリングに適用)、10 アラーム、および 100 万の API リクエストを追加料金なしでご利用いただけます。
  • 新規のお客様も既存のお客様も、追加料金なしで 1 か月あたり 5 GB のデータの取り込みおよび 5 GB のアーカイブされたストレージを受け取ることができます。

有料版についてはリージョンによって価格設定が異なりますので、公式サイトをご確認ください。

有料版ではカスタムメトリックスが使えるなどの利点があります。

CloudWatchを使ってみよう

それではCloudWatchを使ってみます。

まずはCloudWatchのサービスページへアクセスし、左側のメトリックスからEC2を選択します。

cw01

基本メトリックスを確認する

今回は基本メトリックスを使ってみます。

基本メトリックスは標準で用意されている監視対象のことで、EC2では以下の10項目が存在します。

メトリックス名内容
CPUUtilizationCPU使用率
DiskReadBytesディスク読み込み量
DiskReadOpsディスク読込オペレーション数
DiskWriteBytesディスク書き込み量
DiskWriteOpsディスク書き込みオペレーション数
NetworkIn受信ネットワーク
NetworkOut送信ネットワーク
StatusCheckFailedインスタンスとシステムのステータスチェック失敗数
StatusCheckFailed_Instanceインスタンスのステータスチェック失敗数
StatusCheckFailed_Systemシステムのステータスチェック失敗数

さてClouwdWatchからメトリックスを参照すると、既に上記項目が適用されており5分間隔で更新されグラフ化されていることが分かります。

cw02

なお、残念ながらCloudWatchでは2週間しかデータの保持ができませんのでご注意ください。

アラートメールを送信する

さて、基本メトリックスで設定されている項目に対してしきい値を設け、しきい値を超えた段階でアラートメールを送信するという監視設定を行いたいと思います。

左ペインから「アラーム」をクリックし、「アラームの作成」ボタンをクリックして進みます。

cw03
cw04

アラームの作成画面になりますので、好きなメトリックスを選択します。今回はCPUUtilization(CPU使用率)を設定します。

cw05

次はアラームのしきい値の設定です。

名前は好きなものを設定でき、「次の時」の部分でどのようなタイミングでアラームを出すかを設定します。

アクション内の通知の部分でメールアドレスを設定すれば、しきい値に達したタイミングでメールが飛ぶようになります。 cw06

設定が完了すると、設定したメールアドレスに確認メールが飛んできます。

cw07

メール確認をすると成功です。

cw08

これで設定完了です。しきい値に達した段階でメールが飛んできます。念のため動作確認をお忘れなく。

次回は

さすがに基本メトリックスだけでは運用監視は厳しいので、次回は自分でカスタマイズして設定できるカスタムメトリックスを設定します。

カレンダー

    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
OpenLMIでサーバ管理をするために~ハードウェア・パッケージの管理について~

2015/12/03 技術系 投稿者:細谷

ハードウェアの情報について


前回のOpenLMIでサーバ管理をするために~インストール編~をご覧になられてから読むことをお勧めいたします。
OpenLMIをテスト環境として使用するためにCentOS7をVirtualBOX上で仮想的に動かしています。
物理サーバの場合のコマンド出力と多少違う場合があるかもしれません。
OpenLMIではCUIツールを提供しています。これにより、簡単に管理対象サーバに接続しオペレーションを実行することが出来ます。 まずは管理システムのサーバにアクセスしてみます。


管理システムのサーバとクライアントシステムのサーバが分かれていない場合は(管理対象のサーバ)をlocalhostと指定してアクセスしてください。
コマンドの中の(管理対象サーバ)はIPアドレスもしくはホスト名を指定してください。

各情報の取得ができるか確認してみます。まずはハードウェアの情報を取得します。


OS上で設定されたホスト名の他に、管理対象サーバーの製造元のメーカー名や、サーバーのモデル名、CPUの種類、CPUソケット数、CPUコア数、CPU動作周波数、メモリ容量などの情報が取得できていることがわかります。
通常のコマンドで確認する場合はcat /proc/cpuinfoや/proc/meminfoのコマンドを使用して確認する必要がありますが、OpenLMIの場合はhwinfoで代用しています。

ハードウェア情報に加え、OS情報、ファイヤウォール、ネットワークインタフェース等のシステム情報をまとめて表示することもできます。


上から順にハードウェア、CPU、メモリ、OS、カーネル、ファイアウォールの有効・無効、ログの有無、ネットワークの項目が確認できます。
ネットワークデバイスの管理
lmiコマンドでは対象のサーバのNICや仮想的なインターフェースも確認をすることができます。
下記のコマンドを使用してインタフェース名、現在の状態、MACアドレスの一覧を取得することが可能です。


KVMで利用される仮想的なインタフェース「virbr0」についての情報も分かりやすい形で表示できます。

続いて管理システムのサーバのストレージ情報を確認してみます。


もっとパーティションを分ければよかったのですが、/dev/sdaの配下にパーティションが区切られていることが分かるかと思います。
Size(容量)の部分がバイト表示になっているので少し見にくいかもしれません。

パッケージ管理について


CentOSやRedHatであればyumやrpmを利用してパッケージ管理をしますが、OpenLMIではlmiコマンドを使用して管理をします。
Apache,MariaDB,PostgreSQL,PHP,BIND,Postfixのパッケージに関しては下記のコマンドですんなりとインストールが可能です。
すでにyumでインストールされている場合でも同様に管理は可能です。ですが、ソースからインストールした場合管理ができなくなりますのでご注意ください。
あくまでパッケージの管理なので実際のconfファイルなどの設定はlmiのCUI上からはできません。別途スクリプトを作成する必要があります。


yumと同じくリポジトリを設定できます。


アンインストールする場合は下記のコマンドで実行できます。


各パッケージのアップデートについては下記のコマンドで実行できます。


各パッケージの情報を確認したい場合は下記のコマンドで実行できます。


yumを使用したことがあればそれほど違いはないのですぐに使用できるかと思います。

OpenLMIからのサービスの起動・停止といった操作も可能です。
管理対象サーバーの各種サービスの起動、停止、状態確認等の管理ができます。例としてApacheで確認してみます。


Status=Stopped となっているため現在は停止しております。
Apacheを起動させるコマンドは下記の通りです。


再度Apahceの状態を確認してみます。


Statusの部分がRunning – OKとなっているので起動が確認できます。

まとめ


実際に使用するにはまだOpenLMIがスタートしたばかりなので早い気がしますが、ゆくゆくは管理コマンドの標準化が進めばとても楽になるかと思います。
現在対応するディストリビューションがRedHat、Fedora、CentOSしかない為、あまり利便性が感じられないかもしれませんがOpenLMIが発展していけば様々なディストリビューションの管理が容易になります。
lmiで使用するコマンドは、CentOSなどで使用する既存のコマンドよりも数がとても少ないです。
ただし、一つのコマンドで関連する情報をまとめて表示してくれるため、その点に従来のコマンドに無い便利さを感じました。
それらをうまく使いこなすことによって管理者のスキル習得の負担を減らして最低限のコマンドで管理することにつながるのだなと感じました。

カレンダー

    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
OpenLMIでサーバ管理をするために~インストール編~

2015/12/01 技術系 投稿者:細谷

OpenLMIとは?


OpenLMI は Open Linux Management Infrastructure の略で、Linuxサーバの管理や監視をリモートから効率的に行うAPIを提供する管理ツールです。

Linuxのシステム管理をするためには、様々なコマンドを使用しなければなりません。
コマンドのオプションや書式を管理者は覚えて使いこなす必要があります。
ですが、OSのバージョンやディストリビューションによっては管理コマンドのオプションや書式が変わるものもあり、覚えるのが大変です。

そこで管理者のスキル習得の負担を減らし簡素で管理しやすい仕組みとして出てきたのがOpenLMIです。
Red Hat Enterprise Linux 7、CentOS7やFedoraから新たに導入されました。

OpenLMIでは、ストレージ、ネットワーク、システムサービスなどの管理で従来利用していたmkfs、ip、service、systemctlといったコマンドが整理され、抽象化されたAPIを利用できるようになります。

OpenLMIのアーキテクチャイメージ
zu02
ITProから抜粋。
構成としては、管理システム(OpenLMI クライアントツールを使って監視および管理するシステム)とクライアントシステム (監視されるシステム)の二つになります。どちらを利用するにしてもOpenLMIをインストールする必要があります。一台のサーバで管理システムとクライアントシステムを両方をインストールし、使用することができます。
OpenLMIでできることは下記の通りです。
  • ユーザーアカウントの管理
  • ファイルやディレクトリーの読み込み管理とディレクトリーの限定的な書き込み管理
  • ネットワーク管理
  • 電源管理
  • システムサービス管理
  • ストレージ管理
  • コンピュータのファンの管理
  • ハードウエア情報の取得
  • realmdによるドメイン参加/離脱
  • ソフトウエア管理

    OpenLMIのインストール


    OS:CentOS7.1 64bit
    初期設定:こちらを参考に設定してください
    CentOS7の初期設定が完了しているとして作業を進めます。

    OpenLMIはRPMパッケージで提供されておりyumコマンドでインストールできます。管理システムのサーバーにインストールしてください。


    クライアントシステムとして使用するにはサーバに下記をインストールするだけで使用が可能です。OpenLMIをyumでインストールした場合は依存関係の為一緒にインストールされます。

    ここからは管理システム用インストール方法になります。OpenLMIに必要なサービスを起動していきます。まずはOpenLMIに含まれるtog-pegasusサービスを起動します。

    OpenLMIは遠隔のサーバを操作するためにポート番号5989を使用します。firewall-cmdコマンドで、ポートを開放しアクセスができるようにします。

    OpenLMIをインストールした際に、tog-pegasusも一緒にインストールされます。pegasusユーザーが作成されていますので、pegasusユーザーのパスワードを設定します。
    pagasusユーザーは、リモートアクセスを行うために必要になります。
    標準では、pegasusユーザーがCIMOMにアクセスできる設定になっています。

    OpenLMIは、CentOS 7のEPELリポジトリに、OpenLMIのスクリプト類が用意されています。このスクリプトがないと詳細な設定ができません。初めにインストールしておきます。


    OpenLMIにおいて、PEM形式の証明書ファイルをコピーします。証明書ファイルをコピーしたら、CA(Certificate Authority)の証明書を管理するupdate-ca-trustコマンドを使ってルート証明書を追加します。


    以上でインストールは完了です。LMIをインストールしたサーバへとアクセスできることを確認してください。

    次回からはLMIshellや管理情報の取得などについて触れていきたいと思います。

カレンダー

    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
222324252