2020年5月21日木曜日

運用メモ

クラウドの特性を考えると、これまでのシステムアーキテクティングと異なった視点が必要となる。
それをクラウドアーキテクティング原則として整理している


日時作業:
1)cloudwatch を見て、リソースの状況を把握する
①平均値を常に把握する
②把握している、平均値の上限越えがあった場合、インスタンスサイズの検討する(スケールアップ/スケースアウト)
障害対応:
1)ローカルからどのホストのどのアプリケーション(ポート番号)への接続が行われているか確認を行う
netstat -alnA inet
netstat -n | grep 80

アクティブセッション数を確認:
watch -d -n 1 "netstat -alpn | grep -E ':(80|443) ' | awk {'print $5'} | sed -e 's/\:[^.]*$//' | sort | uniq -c"



Cloudwatch監視項目:

[EC2]
CPU使用率
②CPUクレジット消費数・残数(t2系のインスタンスのバーストできるクレジット)
③ディスクのread・writeのI/O数、バイト数
④ネットワークのイン・アウトの使用バイト数
⑤システムチェック(AWSホスト側のネットワーク、ハード等の状態と、EC2インスタンスステータスチェック状態)
⑥ログ監視

CloudWatchの詳細:
メトリクス
内容
単位
CPUUtilization
CPU使用率
パーセント
DiskReadOps
ディスク読み取り数
DiskWriteOps
ディスク書き込み数
DiskReadBytes
ディスク読み取り量
Bytes
DiskWriteBytes
ディスク書き込み量
Bytes
NetworkIn
ネットワーク受信量
Bytes
NetworkOut
ネットワーク送信量
Bytes
StatusCheckFailed
インスタンスステータスチェックかシステムステータスチェックのどちらかが失敗した場合1になる。
0(成功)
1(失敗)
StatusCheckFailed_Instance
インスタンスステータスチェックは、個々のEC2インスタンスのソフトウェアやネットワークの状態確認。失敗した場合1になる。
0(成功)
1(失敗)
StatusCheckFailed_System
システムステータスチェックは、EC2インスタンスに必要なAWSシステムの状態確認。失敗した場合1になる。
0(成功)
1(失敗)


[ELB]
①バックエンドの正常・異常なホスト数(ヘルスチェック成功?失敗?)
②バックエンドへのリクエスト数
③バックエンドへのリクエストのレイテンシ
④ELBが返した、4XX、5XXのエラーコード数
⑤バックエンドが返した、2XX、3XX、4XX、5XX
⑥バックエンドとの接続失敗した数
⑦バックエンドへの保留中のリクエスト、キューが一杯のため拒否したリクエスト

[RDS]
①リードレプリカ利用時の、マスター側で専有しているバイナリログの容量(バイト)
②CPU使用率
③CPUクレジット消費数・残数(t2系のインスタンスのバーストできるクレジット)
④データベースへの接続数
⑤read・writeのキューの数(負荷などで、書き込み・読み込み待ちになったキュー数)
⑥利用可能なメモリ容量(EC2では取得できないがRDSでは取得可能)
⑦利用可能なストレージ容量(EC2では取得できないがRDSでは取得可能)
⑧MySQL、マルチAZ利用時のレプリケーションラグの秒数
⑨RDSのswap総容量
⑩秒間あたりの書き込み操作数、読み込み操作数
⑪1回の書き込みにかかる平均秒数、1回の読み込みにかかる平均秒数
⑫1回の書き込みにかかる平均バイト数、1回の読み込みにかかる平均バイト数
⑬受信時のネットワークトラフィック(バイト/秒)、送信時のネットワークトラフィック(バイト/秒)
CloudWatchの詳細:
メトリクス
内容
単位
BinLogDiskUsage
マスターのバイナリログのサイズ
Bytes
CPUUtilization
CPU使用率
パーセント
DatabaseConnections
DBコネクション数
DiskQueueDepth
ディスクI/Oキュー数
FreeableMemory
空きメモリ量
Bytes
FreeStorageSpace
空きディスクスペース量
Bytes
ReplicaLag
リードレプリカのタイムラグ
SwapUsage
スワップ使用量
Bytes
ReadIOPS
読み込みIOPS
/
WriteIOPS
書き込みIOPS
/
ReadLatency
読み込みレイテンシ
WriteLatency
書き込みレイテンシ
ReadThroughput
読み込みスループット
bytes/
WriteThroughput
書き込みスループット
bytes/


参照先:
https://avinton.com/blog/2017/10/linux-network-troubleshooting/


ログの確認:
ネットワーク障害が発生した際に、ログに何らかの障害情報が記載されている可能性が高いと考えられます。
具体的には下記のログを確認することが有効と考えられます。

①一般的なログ。サービス起動時の出力など
1
var/log/messages

②認証、セキュリティ関連のログ 
1
/var/log/secure

③メール関連のログ 
1
/var/log/maillog

④カーネルが出力したメッセージのログ。ハードの故障の際にはこちら。 
1
/var/log/dmesg

⑤WEBサーバに関連のログ 
1
/var/log/httpd

備考:
その他Linux上のログは var/log/ 配下に出力されます。
各種 log を確認し、failなどのエラーを表す記載があるようでしたら、
付随するメッセージに従い、原因を除去します。


接続状況確認:
①netstat -ap | grep "LISTEN "
②netstat -ltupn
③netstat又は、ssコマンドで、現在開いているポートを一覧表示することができる。

オプション
説明
-l
Listenしているポートのみ表示
-t
TCPを表示
-u
UDPを表示
-n
ポートやホストを数値で表示
-p
ポートを開いているプロセスを表示(sudo
-4
IPv4のみ
-6
IPv6のみ


80/443ポートの確認:
来れば数秒間隔で更新される(接続数を確認できる)
watch -d -n 1 "netstat -an |grep :80 |wc -l"
sudo watch -d -n 1 "netstat -plan|egrep ':(80|443) '|awk {'print $5'}|sed -e 's/\:[^.]*$//'|sort|uniq -c|sort -nk 1"
ps auxf | grep httpd


0 件のコメント:

コメントを投稿

php log(ECS ログ出力)

# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...