Bagaimana cara mendapatkan ruang disk kosong dengan CloudWatch?

11

Apakah mungkin untuk mendapatkan jumlah ruang disk kosong (df) dengan CloudWatch? Jika demikian, metrik apa yang mewakili ruang disk kosong?

Jan Deinhard
sumber

Jawaban:

7

Memperbarui

Sementara itu AWS menyediakan skrip sampel mereka sendiri untuk memantau memori dan penggunaan ruang disk pada instance Amazon EC2 Anda yang menjalankan Linux setidaknya, lihat Skrip Pemantauan Amazon CloudWatch Baru :

Anda dapat menjalankan skrip ini pada instans Anda dan mengkonfigurasinya untuk melaporkan metrik penggunaan memori dan ruang disk ke Amazon CloudWatch. Setelah metrik dikirimkan ke CloudWatch, Anda dapat melihat grafik, menghitung statistik, dan mengatur alarmnya di konsol CloudWatch atau melalui CloudWatch API .

[...]

Untuk mempelajari lebih lanjut tentang cara menggunakan skrip, termasuk instalasi, pengaturan dan konfigurasi, silakan kunjungi " Script Pemantauan Amazon CloudWatch untuk Linux " di Panduan Pengembang Amazon CloudWatch.

Harap dicatat, bahwa banyak solusi pemantauan pihak ke-3 yang populer menyediakan sampel masing-masing atau solusi lengkap untuk pemantauan penggunaan memori dan ruang disk juga, jadi orang biasanya tidak perlu menemukan kembali roda. Skrip yang disediakan AWS cukup baik dan luas juga, yaitu skrip tersebut mencakup use case yang lebih teliti daripada skrip kustom kebanyakan yang beredar.


Jawaban awal

Tidak, ini belum memungkinkan. Lihat jawaban staf AWS pada pertanyaan terkait cloudwatch untuk penggunaan memori , yang mencakup alasannya juga:

[...] Saat ini, Anda tidak perlu menggunakan apa pun di dalam Anda AMI untuk memantau instance Anda. Metrik seperti pemanfaatan memori dan ruang disk mengharuskan kita untuk melihat ke dalam OS yang berjalan dalam contoh dan itulah mengapa kita tidak memiliki metrik yang berharga ini.

Kami mencari cara untuk memberikan lebih banyak wawasan tentang OS dan aplikasi Anda dan akan memiliki lebih banyak detail saat kami mengencangkan rencana.

Saya ragu bahwa fungsi ini akan segera muncul dalam waktu dekat, karena fungsi lintas platform agen yang diperlukan sudah tersedia dari beberapa vendor lain yang sudah menawarkan solusi pemantauan khusus, dan tugas ini sangat sederhana - pasti akan menjadi kemenangan besar untuk memiliki dukungan untuk AWS ini secara langsung dibangun tentu saja.

Steffen Opel
sumber
"Meskipun ini tidak mengubah apa yang telah dinyatakan dalam jawaban awal saya ..." - jawaban awal Anda mengatakan AWS tidak dapat melaporkan penggunaan disk, tetapi sekarang skrip AWS melaporkan penggunaan disk. Jadi jawaban untuk pertanyaan OP memang berubah.
dikemudikan
3

Berikut adalah versi yang lebih baik dari skrip yang sama yang mengambil volume yang dilampirkan ke instance dan melaporkan penggunaan setiap volume.

perhatikan subtitle dari / dev / xvd untuk / dev / sd

juga perhatikan bahwa Anda memerlukan alat ec2-api dan alat cloudwatch diinstal bersama dengan sertifikat untuk membuatnya bekerja

#!/bin/bash

export JAVA_HOME=
export AWS_CREDENTIAL_FILE=
export EC2_CERT=
export EC2_PRIVATE_KEY=
export EC2_HOME=
export AWS_CLOUDWATCH_HOME=

INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
VOLUME_LIST=$($EC2_HOME/bin/ec2-describe-volumes | grep ${INSTANCE_ID} | awk '{ print $2 ";" $4}')

for VOLUME_LINE in $(echo $VOLUME_LIST); do
        VOLUME_NAME=${VOLUME_LINE%;*}
        DEVICE_NAME=/dev/xvd${VOLUME_LINE#*;/dev/sd}
        USAGE=$(df $DEVICE_NAME | perl -ne 'print "$1" if /(\d+)\%/')
        $AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $USAGE -d "Volume=$VOLUME_NAME" -m UsedStoragePercentage -u Percent -n "NAMESPACE" --show-request
done
marstonstudio
sumber
2

Saya mengumpulkan skrip bash untuk melakukan ini menggunakan metrik cloudwatch khusus

http://aws.typepad.com/aws/2011/05/amazon-cloudwatch-user-defined-metrics.html

ganti XXXX dengan nilai Anda sendiri

#!/bin/sh

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export AWS_CREDENTIAL_FILE=XXXX 
export AWS_CLOUDWATCH_HOME=XXXX

INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)

$AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $(df / | perl -ne 'print "$1" if /(\d+)\%/') -d "InstanceId=$INSTANCE_ID,Volume=root" -u Percent -m UsedStoragePercentage -n "XXXX" --show-request

letakkan ini dalam tugas cron, dan Anda akan memiliki metrik yang dapat Anda gunakan untuk mengaktifkan alarm. Saya memutuskan untuk menggunakan persentase dan contoh titik pemasangan khusus alih-alih memantau volume itu sendiri karena cocok dengan kebutuhan saya. Saya cenderung mengubah ukuran dan beralih volume lebih dari saya memulai kembali contoh. Jarak tempuh Anda mungkin beragam.

marstonstudio
sumber
1

Tidak puas dengan skrip sampel Amazon atau berbagai skrip pihak ketiga yang menggunakan alat baris perintah berbasis Perl mereka, kami menulis skrip kami sendiri dengan Python: aws-cloudwatch-linux-metrics .

File tunggal, tidak memiliki dependensi, dan berjalan pada interpreter Python apa pun.

Itu membaca data langsung dari sistem /procfile dan melaporkan pemanfaatan ruang disk di samping metrik sistem lain yang tidak dapat diamati dari luar:

  • Rata-rata beban CPU
  • Koneksi jaringan (TCP dan UDP)
  • Pemanfaatan ruang disk
  • Pemanfaatan memori

Ini melaporkan metrik ini sehubungan dengan id instance dan id gambar.

malthe
sumber
Hai, proyek github Anda hilang
Roco CTZ
0

Beberapa saat setelah pertanyaan diajukan, AWS memberi skrip opsi untuk melaporkan penggunaan disk.

Anda dapat menjalankan skrip ini di crontab untuk melaporkan ruang disk yang tersedia ke CloudWatch. Jangan lupa untuk memasukkan path disk.

*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --disk-space-util --disk-path=/ --from-cron

Dokumen memberikan daftar opsi lengkap dan contoh di sini .

ditenagai uap
sumber