Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
AWSで構築したのだよ 
「プロセス監視、メモリ使用率、ディスク使用率を 
Cloudwatchのカスタムメトリクスに追加し 
たい」
AWS構築時のノウハウを残し 
共有します 
 注意 
順番に記載されているため、前のテーマで記載さ 
れている内容が前提となる場合があります。
お品書き 
 ユーザのコンソール操作をログに残したい 
 ec2で自分のインスタンスIDが知りたい 
 ec2で自分についているタグを読み取りたい 
 ec2起動時にホスト名を変更したい 
 プロセス監視、メモリ使用率、ディスク使用率...
カスタムメトリクスに追加した 
い(1/5) 
 AWSサービスとして提供されているものについて 
は、標準メトリクスで参照することができます。 
しかし、OS側からしか見えないもの、プロセスの 
死活監視、メモリの使用状況やディスクの使用状...
カスタムメトリクスに追加した 
い(2/5) 
 ユーザに、カスタムメトリクスに登録権限を付与 
します。 
(または、ec2に権限を委譲するロールを作成しま 
す。)
カスタムメトリクスに追加した 
い(3/5) 
 メトリクスのもととなるデータを作成して、 
Cloudwatchに登録する、スクリプトを作成します。
権限を持ったユーザの情報、リージョンの情報など、操作に必要な情報をyml 
ファイルで定義しておきます。 
# vi aws.yml 
access_key_id: "AKIAIFJPTCXRF943FBXA" 
secret_access_k...
# vi putMetric.rb 
#!/usr/bin/env ruby 
# encoding: utf-8 
# OSの監視情報をCloudWatchのカスタムメトリクスに追加するスクリプト 
# 
# 追加する項目 
# - メモリ使...
# プロセス監視するプロセス名 
@process1 = 'httpd' 
@process2 = 'tomcat6' 
# メモリ使用率 
def mem_usage 
meminfo = {} 
File.open('/proc/memin...
# Disk使用状況 
def disk_usage(path) 
df = "/bin/df -k -l -P #{path} | tail -n 1" 
total, used = `#{df}`.chomp.split(/s+/).val...
@instanceID = `wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` 
dimensions = [ { "name"=> "InstanceId", ...
# カスタムメトリクス追加 
cw = AWS::CloudWatch.new 
cw.put_metric_data( "namespace"=> NAMESPACE, "metric_data"=> metric_data )
カスタムメトリクスに追加したい 
(4/5) 
 手動で実行して動作確認を行う。 
ruby putMetric.rb 
 Cloudwatchで、実際に確認する。MetricsのEC2カスタムメ 
トリクスを参照する。Custom/EC2...
 DiskとMemoryの使用状況を参照してみる
カスタムメトリクスに追加した 
い(5/5) 
 Cronに登録して、5分置きにカスタムメトリクス 
を追加するようにします。 
(スクリプトファイルとymlファイルのパーミッ 
ションは、適宜変更してください。) 
$ sudo cront...
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Prochain SlideShare
Chargement dans…5
×

Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい

3 643 vues

Publié le

AWSでサービスを構築した際のノウハウ集05
プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい

Publié dans : Technologie
  • Login to see the comments

Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい

  1. 1. AWSで構築したのだよ 「プロセス監視、メモリ使用率、ディスク使用率を Cloudwatchのカスタムメトリクスに追加し たい」
  2. 2. AWS構築時のノウハウを残し 共有します  注意 順番に記載されているため、前のテーマで記載さ れている内容が前提となる場合があります。
  3. 3. お品書き  ユーザのコンソール操作をログに残したい  ec2で自分のインスタンスIDが知りたい  ec2で自分についているタグを読み取りたい  ec2起動時にホスト名を変更したい  プロセス監視、メモリ使用率、ディスク使用率をCloudwatchのカスタムメ トリクスに追加したい  ec2起動時にアラーム設定をクラウドウォッチに追加したい  Amazon Linuxのsshの認証方式を、ID/PWに変更したい。  VPNのプライベートネットワークでNTPを使いたい  プライベートネットワークのRDSにssh経由で接続したい  夜間にec2を落としたい  サーバーのシャットダウン時にログを退避したい
  4. 4. カスタムメトリクスに追加した い(1/5)  AWSサービスとして提供されているものについて は、標準メトリクスで参照することができます。 しかし、OS側からしか見えないもの、プロセスの 死活監視、メモリの使用状況やディスクの使用状 況はCloud Watchでは見ることができません。  プロセスの死活監視、メモリの使用状況やディス クの使用状況をスクリプトを使い、Cloud Watch のカスタムメトリクスとして登録します。
  5. 5. カスタムメトリクスに追加した い(2/5)  ユーザに、カスタムメトリクスに登録権限を付与 します。 (または、ec2に権限を委譲するロールを作成しま す。)
  6. 6. カスタムメトリクスに追加した い(3/5)  メトリクスのもととなるデータを作成して、 Cloudwatchに登録する、スクリプトを作成します。
  7. 7. 権限を持ったユーザの情報、リージョンの情報など、操作に必要な情報をyml ファイルで定義しておきます。 # vi aws.yml access_key_id: "AKIAIFJPTCXRF943FBXA" secret_access_key: "lLaGfDbBE+gjbSVrGyD7+35AlOAg364qtge91XDM" ec2_endpoint: "ec2.ap-northeast-1.amazonaws.com" region: "ap-northeast-1"
  8. 8. # vi putMetric.rb #!/usr/bin/env ruby # encoding: utf-8 # OSの監視情報をCloudWatchのカスタムメトリクスに追加するスクリプト # # 追加する項目 # - メモリ使用率 # - ディスク利用率 # - / : 標準EBSボリューム # - プロセス監視 # 各EC2インスタンス上のcronで5分ごとに実行 # */5 * * * * ec2-user ruby /opt/aws/putMetricsrb require 'rubygems' require 'aws-sdk' AWS.config(YAML.load(File.read(“./aws.yml"))) NAMESPACE = 'Custom/EC2'
  9. 9. # プロセス監視するプロセス名 @process1 = 'httpd' @process2 = 'tomcat6' # メモリ使用率 def mem_usage meminfo = {} File.open('/proc/meminfo').each do |line| line =~ /^(.*?):s+(d+)/ or next; meminfo[$1] = $2.to_i * 1024 end total = meminfo['MemTotal'] avail = meminfo['MemFree'] + meminfo['Cached'] + meminfo['Buffers'] 100.0 * ( total - avail ) / total end
  10. 10. # Disk使用状況 def disk_usage(path) df = "/bin/df -k -l -P #{path} | tail -n 1" total, used = `#{df}`.chomp.split(/s+/).values_at(1, 2) 100 * ( used.to_f / total.to_f ) / 1 end # プロセス稼働状況(init.dにstatus参照可能な起動スクリプトがある想定) def process_count(name) `/etc/init.d/#{name} status | grep "is running..." | wc -l`.chomp end
  11. 11. @instanceID = `wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` dimensions = [ { "name"=> "InstanceId", "value"=> @instanceID } ] # 個別項目 metric_data = [ { "metric_name"=> "MemoryUsage" , "value"=> mem_usage , "unit"=> "Percent" }, { "metric_name"=> "DiskUsage_root" , "value"=> disk_usage('/') , "unit"=> "Percent" }, { "metric_name"=> "process_#{@process1}", "value"=> process_count(@process1).to_i, "unit"=> "Count"}, { "metric_name"=> "process_#{@process2}", "value"=> process_count(@process2).to_i, "unit"=> "Count"}, ] # 共通項目 metric_data.each do |m| m[:dimensions] = dimensions end
  12. 12. # カスタムメトリクス追加 cw = AWS::CloudWatch.new cw.put_metric_data( "namespace"=> NAMESPACE, "metric_data"=> metric_data )
  13. 13. カスタムメトリクスに追加したい (4/5)  手動で実行して動作確認を行う。 ruby putMetric.rb  Cloudwatchで、実際に確認する。MetricsのEC2カスタムメ トリクスを参照する。Custom/EC2というネームスペースが 追加されている。
  14. 14.  DiskとMemoryの使用状況を参照してみる
  15. 15. カスタムメトリクスに追加した い(5/5)  Cronに登録して、5分置きにカスタムメトリクス を追加するようにします。 (スクリプトファイルとymlファイルのパーミッ ションは、適宜変更してください。) $ sudo crontab -e */5 * * * * ec2-user ruby /opt/aws/putMetric.rb

×