狠狠撸
Submit Search
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
?
Download as PPTX, PDF
?
1 like
?
4,076 views
聡 大久保
Follow
AWSでサービスを構築した際のノウハウ集05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Read less
Read more
1 of 19
Download now
Downloaded 14 times
More Related Content
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
1.
AWSで構築したのだよ 「プロセス監視、メモリ使用率、ディスク使用率を Cloudwatchのカスタムメトリクスに追加し
たい」
2.
AWS構築時のノウハウを残し 共有します ?
注意 順番に記載されているため、前のテーマで記載さ れている内容が前提となる場合があります。
3.
お品書き ? ユーザのコンソール操作をログに残したい
? ec2で自分のインスタンスIDが知りたい ? ec2で自分についているタグを読み取りたい ? ec2起動時にホスト名を変更したい ? プロセス監視、メモリ使用率、ディスク使用率をCloudwatchのカスタムメ トリクスに追加したい ? ec2起動時にアラーム設定をクラウドウォッチに追加したい ? Amazon Linuxのsshの認証方式を、ID/PWに変更したい。 ? VPNのプライベートネットワークでNTPを使いたい ? プライベートネットワークのRDSにssh経由で接続したい ? 夜間にec2を落としたい ? サーバーのシャットダウン時にログを退避したい
4.
カスタムメトリクスに追加した い(1/5) ?
AWSサービスとして提供されているものについて は、標準メトリクスで参照することができます。 しかし、OS側からしか見えないもの、プロセスの 死活監視、メモリの使用状況やディスクの使用状 況はCloud Watchでは見ることができません。 ? プロセスの死活監視、メモリの使用状況やディス クの使用状況をスクリプトを使い、Cloud Watch のカスタムメトリクスとして登録します。
5.
カスタムメトリクスに追加した い(2/5) ?
ユーザに、カスタムメトリクスに登録権限を付与 します。 (または、ec2に権限を委譲するロールを作成しま す。)
10.
カスタムメトリクスに追加した い(3/5) ?
メトリクスのもととなるデータを作成して、 Cloudwatchに登録する、スクリプトを作成します。
11.
権限を持ったユーザの情報、リージョンの情報など、操作に必要な情報を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"
12.
# 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'
13.
# プロセス監視するプロセス名 @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
14.
# 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
15.
@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
16.
# カスタムメトリクス追加 cw
= AWS::CloudWatch.new cw.put_metric_data( "namespace"=> NAMESPACE, "metric_data"=> metric_data )
17.
カスタムメトリクスに追加したい (4/5) ?
手動で実行して動作確認を行う。 ruby putMetric.rb ? Cloudwatchで、実際に確認する。MetricsのEC2カスタムメ トリクスを参照する。Custom/EC2というネームスペースが 追加されている。
18.
? DiskとMemoryの使用状況を参照してみる
19.
カスタムメトリクスに追加した い(5/5) ?
Cronに登録して、5分置きにカスタムメトリクス を追加するようにします。 (スクリプトファイルとymlファイルのパーミッ ションは、適宜変更してください。) $ sudo crontab -e */5 * * * * ec2-user ruby /opt/aws/putMetric.rb
Download