Cách dễ nhất để tự động kiểm tra dung lượng đĩa EC2 và được cảnh báo nếu nó sắp hết?


25

Chạy Amazon Linux AMI. Có vẻ như CloudWatch không kiểm tra dung lượng đĩa trống. Tôi có một số máy chủ và lý tưởng là không muốn phải cấu hình từng máy chủ với một máy chủ thư, tập lệnh để kiểm tra dung lượng đĩa, v.v.

Có cách nào đơn giản hơn để làm điều này?

Câu trả lời:


13

Amazon cung cấp các kịch bản cho việc này kể từ tháng 3 năm 2012:

Các kịch bản giám sát Amazon CloudWatch cho Linux : http://aws.amazon.com/code/8720044071969977


Các kịch bản nhìn khá thẳng về phía trước. Điều khiến tôi lo lắng là nó cần một cặp khóa truy cập AWS đã biết và bí mật. Có ai biết nếu nó cũng sẽ xem xét vai trò EC2 để có được một cặp tạm thời hoặc nếu tôi phải tự viết mã đó?
sergiopereira

Để trả lời câu hỏi của riêng tôi. Vâng! Các tập lệnh sẽ sử dụng Vai trò IAM của phiên bản EC2 (nếu có.) Điều thú vị là vai trò bạn chọn phải có các quyền CloudWatch cần thiết.
sergiopereira

5

Không có cách nào để các công cụ giám sát và kiểm soát EC2 cung cấp cho bạn dữ liệu này bởi vì hệ thống tệp của các phiên bản của bạn CHỈ có thể truy cập bằng chính thể hiện đó . Cả kiến ​​trúc cơ bản của phần cứng và mô hình bảo mật đều yêu cầu giới hạn này. Hãy suy nghĩ về việc nó sẽ tệ đến mức nào nếu phần mềm bên ngoài máy tính của bạn có thể chọc vào các tệp trên ổ cứng của bạn!

Đây là một cách chính yếu để tạo cron (được cài đặt trên hầu hết các hệ thống) kiểm tra dữ liệu này theo định kỳ của bạn. Hệ thống của bạn nên có các yêu cầu tối thiểu để xử lý thông báo thư gốc. Tôi khuyên bạn nên có ít nhất một tác nhân thư gửi vật chất và định cấu hình bí danh gốc hoặc quản trị viên để chuyển tiếp cho bạn trên tất cả các hệ thống bạn quản trị. Nhiều chương trình bao gồm cả cronmong đợi cấu hình này.

Bạn có thể thêm phần này vào crontab của bạn:

0 0 * * * test $(df / | grep ^/ | awk '{print $4}') -lt 1048576 && echo "Warning: Free disk space is less than 1G on /"

Để phá vỡ nó, điều này

  • Tạo một công việc chạy một lần một ngày vào lúc 00:00.
  • Cron tự động xử lý gửi email cho quản trị viên hệ thống với đầu ra của công việc. Công việc này chỉ tạo đầu ra nếu có lỗi hoặc nếu không gian đĩa thấp
  • Các testbộ chỉ huy lên một so sánh vỏ đơn giản bằng cách sử dụng -ltít hơn điều hành và một equivolent giá trị cố định để 1Gb không gian trống.
  • Các dflệnh kiểm tra dung lượng trống trên /hệ thống tập tin
  • Các grepcấp cho bạn dòng sản lượng bạn cần thay vì tiêu đề dfbao gồm.
  • Số awkget chỉ là cột thứ tư trong đầu ra, số không gian trống.
  • Lệnh &&nói chỉ chạy lệnh tiếp theo nếu lệnh đầu tiên (the test x -lt y) trả về true.

4

Tôi đã viết một tập lệnh khi tôi cần kiểm tra một số máy chủ trong nhóm EC2 của mình. Nó cần một tập tin với một danh sách của mỗi tên miền IP / máy chủ trên một dòng.

#! /bin/bash

ADMIN="serveralerts@youraddress.com"
ALERT=85

for SERVER in `cat ~/scripts/servers.txt` do
ssh -i ~/.ssh/yourkey.pem $SERVER df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
echo $output
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
echo "Running out of space \"$partition ($usep%)\" on $SERVER as on $(date)" | 
mail -s "Alert: Almost out of disk space $usep" $ADMIN
fi
done done

2
"Tập lệnh giám sát Amazon CloudWatch cho Linux" có thể đẩy mức sử dụng đĩa vào CloudWatch dưới dạng số liệu tùy chỉnh. docs.amazonwebservice.com/AmazonCloudWatch/latest/ từ
Laurion Burchall

@LaurionBurchall vui lòng đặt nó làm câu trả lời. IMO đó là câu trả lời chính xác vì nó cung cấp khả năng sử dụng cảnh báo CloudWatch.
Joe Constant



0

Cron là bạn của bạn. Đặt tệp này vào thư mục /etc/cron.d Daily của bạn và nó sẽ chạy một lần mỗi ngày:

#!/bin/sh
# this script is /etc/cron.daily/diskAlert.cron    
ADMIN="jdoe@maildomain.com"
ALERT=90    
df -PkH | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
do
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
  partition=$(echo $output | awk '{print $2}' )
  if [ $usep -ge $ALERT ]; then
    echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" |
    mail -s "Alert: Almost out of disk space $usep%" $ADMIN
  fi
done

LƯU Ý: Tập lệnh này sẽ nói rằng các CDROM được gắn đã đầy.


0

Đây là tập lệnh PowerShell nhanh mà tôi đã viết chạy trên DC của chúng tôi trong AWS và bắn e-mail đến một nhóm người nhận nếu ổ đĩa đầy. Nó có một csv với 2 cột - một tên có tiêu đề với tên máy tính và một ổ có tiêu đề với ký tự ổ đĩa. Chúng tôi không có máy chủ thư trong môi trường AWS của mình, vì vậy tôi đã định cấu hình nó để gửi qua SES. Bạn cũng có thể sửa đổi một chút tập lệnh để chỉ gửi báo cáo thường xuyên cho việc sử dụng ổ đĩa nếu bạn muốn. Chỉ cần nghĩ rằng tôi sẽ đăng bài này ở đây, vì tất cả các giải pháp mà tôi tìm thấy là dành cho các phiên bản Linux.

$CSVPath = "c:\Scripts\computerNames.csv"
$computerName = new-object System.Data.DataSet
$computerName = Import-CSV $CSVPath
$AwsUn = "" 
$AwsPw = ConvertTo-SecureString "" -AsPlainText -Force

$cred = New-Object -typename System.Management.Automation.PSCredential -ArgumentList $AwsUn, $AwsPw

Foreach($name in $computerName)
{

    $dl = $name.drive

    $Utilization = Get-WmiObject win32_Volume -ComputerName $name.computerName -Filter "DriveLetter = '$($dl)'"|   Foreach{ “{0:N2}” -f ((1-$_.FreeSpace / $_.Capacity)*100) } 

    if($Utilization -gt 90)
    {
        Send-MailMessage -From Sender to Recipients -subject (
    "$($name.computerName) Disk utilization" )-Body "The $dl drive on the AWS instance $($name.computerName) has $utilization% disk utilization.   Please log in and delete log files or contact the Network Operations team to increase the storage allocated to this instance"  -SmtpServer email-smtp.us-west-2.amazonaws.com -Credential $cred -useSSL -port 25
    } 


}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.