ฉันจะตรวจสอบการใช้จ่ายรายวันบน AWS ได้อย่างไร


26

โครงสร้างพื้นฐานของเราอยู่บน AWS ฉันต้องการรับรายงานรายวันเกี่ยวกับจำนวนเงินที่ใช้ไปของวันก่อนหน้า วิธีที่ดีที่สุดที่จะทำคืออะไร?

คำตอบ:


20

ปรับปรุง

AWS ได้ประกาศเพียงความพร้อมทั่วไปของการทำงานเพื่อตรวจสอบค่าใช้จ่ายโดยประมาณโดยใช้การเรียกเก็บเงินการแจ้งเตือนผ่านทางAmazon CloudWatch (มันเห็นได้ชัดว่าได้รับการบริการที่จะ AWS พรีเมี่ยมบัญชีอยู่แล้วตั้งแต่ปลายปี 2011 ดูคำตอบแดเนียลโลเปซ' จะมีวิธีการตั้งค่า Amazon AWS วงเงินการเรียกเก็บเงินหรือไม่ ):

เราประมาณการค่าบริการรายเดือนทั้งหมดสำหรับบริการ AWS แต่ละรายการที่คุณใช้เป็นประจำ เมื่อคุณเปิดใช้งานการตรวจสอบบัญชีของคุณเราจะเริ่มจัดเก็บข้อมูลประมาณการเป็นตัวชี้วัด CloudWatch ซึ่งจะสามารถใช้งานได้ในช่วง 14 วันปกติ [ ... ]

ตามที่ระบุไว้ในบล็อกโพสต์เบื้องต้นคุณสามารถเริ่มต้นโดยใช้การแจ้งเตือนการเรียกเก็บเงินเพื่อให้คุณทราบเมื่อการเรียกเก็บเงิน AWS ของคุณจะสูงขึ้นกว่าที่คาดไว้ดูการตรวจสอบค่าใช้จ่ายโดยประมาณของคุณโดยใช้ Amazon CloudWatchสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการทำงานนี้

สิ่งนี้มีประโยชน์อยู่แล้วสำหรับความต้องการพื้นฐานหลายอย่างอย่างไรก็ตามการใช้CloudWatch APIเพื่อดึงเมตริกที่จัดเก็บไว้ด้วยตัวคุณเอง (ดูที่GetMetricStatistics ) ช่วยให้คุณขับเวิร์กโฟลว์และตรรกะทางธุรกิจตามอำเภอใจตามข้อมูลนี้และแน่นอนว่าคุณสามารถสร้างรายงานรายวัน ในวันก่อนหน้าเช่นกัน

สำหรับข้อเสนอนี้ขอบเขตของข้อเสนอนี้จะเน้นเช่นกันว่า:

มันเป็นสิ่งสำคัญที่จะต้องทราบว่าเหล่านี้เป็นประมาณการคาดการณ์ไม่ได้ ค่าประมาณนั้นใกล้เคียงกับค่าใช้จ่ายของการใช้งาน AWS ของคุณจนถึงปัจจุบันภายในรอบการเรียกเก็บเงินปัจจุบันและจะเพิ่มขึ้นเมื่อคุณใช้ทรัพยากรต่อไป [... ] ไม่ได้คำนึงถึงแนวโน้มหรือการเปลี่ยนแปลงที่เป็นไปได้ในรูปแบบการใช้ AWS ของคุณ [เน้นเหมือง]

นั่นคือความละเอียดของตัวชี้วัดที่รายงานยังไม่ได้รับการวิเคราะห์ (ฉันเห็นจุดข้อมูลทุก 4-8 ชั่วโมง แต่ไม่จำเป็นต้องอัพเดทค่าทุกครั้งตามที่คาดหวังจริง) ดังนั้นการได้รับรายงานรายวันที่แม่นยำเพียงพออาจต้องมี การประมวลผลทางสถิติ


คำตอบเบื้องต้น

น่าเสียดายที่สิ่งนี้ตรงไปตรงมาน้อยกว่าที่คิดโดยเฉพาะเมื่อข้อมูลที่ต้องการสามารถตรวจสอบด้วยตนเองผ่านบัญชีของคุณ มีสองตัวเลือกในการตรวจสอบที่คาดหวัง:

  • การแจ้งเตือนผ่านอีเมล / RSS / ฯลฯ
  • API เข้าถึงข้อมูล

ทั้ง AWS และผู้ให้บริการ IaaS / PaaS / SaaS อื่น ๆ ที่ฉันรู้ว่าจะให้การเข้าถึง API กับข้อมูลบัญชีของพวกเขาในปัจจุบัน (อาจเป็นเพราะผลกระทบทางการเงิน / ทางกฎหมายที่อาจเกิดขึ้น) ทำให้การรวมรูปแบบบุคคลที่สามใด ๆ ทำทุกวันนี้) ยุ่งยากที่สุดเท่าที่คุณต้องการเพื่อคัดลอกเว็บเพื่อดึงข้อมูลในตอนแรก

โชคดีที่ข้อเสนอใหม่จาก Cloudability [ลบลิงค์หลังจากหยุดใช้งานฟรีเทียร์] ได้เข้าสู่เวทีเมื่อเร็ว ๆ นี้เพื่อทำสิ่งนี้ให้คุณในแบบมืออาชีพและผู้ไม่เชื่อเรื่องพระเจ้าเราใช้มันด้วยความสำเร็จที่ยิ่งใหญ่สำหรับ AWS โดยเฉพาะ ได้รับรายงานรายวัน (หรือน้อยกว่า) ของการใช้จ่ายรายเดือนของคุณเท่านั้นเช่นไม่ได้แบ่งออกเป็นค่าใช้จ่ายรายวันของคุณ แน่นอนว่าการเพิ่มการเพิ่มรายวันนั้นเป็นเรื่องไม่แน่นอนดังนั้นฉันจึงหวังและคาดหวังว่าพวกเขาจะให้ข้อมูลเพิ่มเติมเช่นนี้เมื่อเวลาผ่านไป

แนวทางของพวกเขาในการกำหนดราคา [ลิงก์ถูกลบออกหลังจากที่ยกเลิกระดับฟรี] กำลังรีเฟรชเช่นกัน (แม้จะชัดเจน) และเชื่อมโยงกับการใช้จ่ายบนคลาวด์ของคุณเองดังนั้นจึงควรชำระเงินเองทันทีที่คุณตระหนักถึงศักยภาพในการประหยัด อะไรก็ได้ถ้าคุณใช้จ่ายน้อยกว่า $ 2.5k / mo)
Update 20121016 : น่าเสียดายที่ Cloudability ได้เปลี่ยนรูปแบบการกำหนดราคาเป็นแบบทั่วไปซึ่งยังรวมถึงระดับฟรี (และราคาสมเหตุสมผลโดยทั่วไป) แต่เอาการเข้าถึงคุณลักษณะขั้นสูงในนั้นซึ่งฉันคิดว่าเป็นวิธีการที่สดชื่นและชาญฉลาดสำหรับผู้ใช้ ด้วยงบประมาณขนาดเล็กที่อาจยังคงเป็นตัวคูณอยู่ที่อื่นหรืออัปเกรดเมื่อโตขึ้น

อัปเดต 20150115: น่าเสียดายที่ Cloudability เลือกเส้นทางของผู้จำหน่าย Freemium SaaS จำนวนมากและในที่สุดก็ยกเลิกชั้นฟรีทั้งหมดตั้งแต่วันที่ 1 กุมภาพันธ์เราจะไม่นำเสนอ Cloudability Free edition ที่คุณใช้ในปัจจุบันอีกต่อไป

อัปเดต 20120427

ข้อแม้เดิม (เก็บไว้เพื่อการอ้างอิงด้านล่าง) ของการกำหนดให้ใช้ข้อมูลประจำตัว AWS หลักของคุณไม่ได้ใช้อีกต่อไป - AWS เพิ่งเปิดตัวคุณสมบัติใหม่ของ IAM: การจัดการรหัสผ่านและการเข้าถึงหน้ากิจกรรมบัญชีและรายงานการใช้งาน :

คุณสมบัติใหม่นี้ช่วยให้คุณสร้างผู้ใช้ IAM ที่แยกต่างหากและแตกต่างกันเพื่อวัตถุประสงค์ทางธุรกิจและทางเทคนิค คุณสามารถให้สิทธิ์ผู้ใช้ทางธุรกิจของคุณเข้าถึงหน้ากิจกรรมบัญชีและ / หรือรายงานการใช้งานของเว็บไซต์ AWS เพื่อให้พวกเขาเข้าถึงข้อมูลการเรียกเก็บเงินและการใช้งานโดยไม่ให้พวกเขาเข้าถึงทรัพยากร AWS อื่น ๆ เช่นอินสแตนซ์ EC2 หรือไฟล์ใน S3

Cloudability ขณะนี้ได้รวมนี้เป็นอย่างดีจึงทำให้คุณไม่จำเป็นต้องส่งมอบให้ข้อมูลประจำตัวของ AWS หลักของคุณอีกต่อไปหรือใช้เวลาความพยายามเป็นพิเศษในการสร้างรวมการเรียกเก็บเงินเพียงเพื่อความเข้าใจในการใช้จ่ายกำไรเมฆของคุณให้ดูวิธีการติดตั้ง Amazon IAM (Identity Management บัญชี )เพื่อดูรายละเอียด

อดีต Caveat

มีข้อแม้อย่างหนึ่งที่ควรทราบล่วงหน้าคือ:

ในการเข้าถึงข้อมูลของคุณคุณจะต้องมอบข้อมูลรับรอง AWS หลักให้กับพวกเขาเพราะไม่เช่นนั้นพวกเขาจะไม่สามารถขูดบัญชีของคุณได้อย่างชัดเจน สำหรับ AWS โดยเฉพาะคุณยังสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยการอำนวยความสะดวกในการเรียกเก็บเงินรวมซึ่งคุณรวมการชำระเงินสำหรับบัญชี Amazon AWS หลายบัญชี [... ] โดยการกำหนดบัญชีการชำระเงินเดียวซึ่งจะไม่สามารถเข้าถึงทรัพยากรคอมพิวเตอร์และข้อมูลของคุณ


ฉันเพิ่งสมัครใช้งาน Cloudability แต่ในอีเมลฉันไม่สามารถหาได้ว่าเราใช้เวลาเท่าไหร่เมื่อวานนี้ (หรือใน 24 ชั่วโมงที่ผ่านมา) พวกเขาเพียงแค่ให้ประมาณการรายเดือนและใช้เป็นจำนวนเท่าใดจนถึงปัจจุบัน
Sabya

2
@sabya - คุณถูกต้องฉันได้รับรายงานประจำวันแล้วและไม่ได้รับข้อกำหนดเพิ่มเติมขออภัย (ฉันได้อัปเดตคำตอบเพื่อแสดงถึงสิ่งนี้)! เห็นได้ชัดว่ามันจะไม่สำคัญสำหรับคุณที่จะทำคณิตศาสตร์ด้วยตัวคุณเองหลังจากวันที่ 2 แม้ว่าการมีอยู่ในอีเมลจะเป็นการปรับปรุงที่ชัดเจนและสะดวกกว่าแน่นอน
Steffen Opel

12

การใช้เครื่องมือawscliคุณจะได้รับผลรวมเดือนต่อวัน:

$ aws --region us-east-1 cloudwatch get-metric-statistics \
    --namespace "AWS/Billing" \
    --metric-name "EstimatedCharges" \
    --dimension "Name=Currency,Value=USD" \
    --start-time $(date +"%Y-%m-%dT%H:%M:00" --date="-12 hours") \
    --end-time $(date +"%Y-%m-%dT%H:%M:00") \
    --statistic Maximum \
    --period 60 \
    --output text | sort -r -k 3 | head -n 1 | cut -f 2

2494.47

สามารถลบผลรวมจากสองวันที่แตกต่างกันเพื่อให้ได้เดลต้ารายวัน หรือสามารถประมาณค่าได้ในครั้งเดียวโดยเพิ่มช่วงเวลา ( end-time- start-time) ถึง 24 ชั่วโมงและลบจุดข้อมูลที่เก่าที่สุดออกจากข้อมูลล่าสุด

หมายเหตุ:

  • สมมติว่าคุณเปิดใช้งานการตรวจสอบค่าใช้จ่ายโดยประมาณของคุณ
  • สมมติว่าคุณมี GNU date(สำหรับคนอื่นdateเช่นบน OSX date -v-12Hอาจใช้งานได้)
  • สกุลเงินของคุณอาจแตกต่างกันไป
  • Amazon อัปเดตตัววัด CloudWatch ทุก ๆ ~ 4h ดังนั้นการสืบค้นเวลาที่มีขนาดเล็กกว่า 4h อาจไม่ส่งคืนจุดข้อมูลใด ๆ ฉันใช้หน้าต่าง 12 ชั่วโมงเพื่อความปลอดภัยเป็นพิเศษ
  • ฉันต้องการรวมลิงก์ไปยังโพสต์บล็อกที่เป็นคำตอบของฉัน แต่ดูเหมือนว่าฉันต้องการ 10 คะแนนชื่อเสียงในการโพสต์มากกว่า 2 ลิงก์ :)

1
สิ่งสำคัญคือให้สังเกตว่าภูมิภาคเดียวที่ใช้ได้กับเนมสเปซ 'AWS / Billing' คือ us-east-1 ฉันดึงผมออกมามากมายสงสัยว่าทำไมบัญชีของฉันที่มีสิทธิ์เข้าถึงการเรียกเก็บเงินได้รับผลลัพธ์ที่ว่างเปล่าผ่านทาง CLI
คอเรย์โคล

เพิ่งทราบว่า awscli ใช้ botocore และคุณลักษณะเหล่านี้ดูเหมือนว่าจะสามารถเข้าถึงได้ผ่านทางboto3.readthedocs.io/en/latest/reference/services/ …
monkut

ตอนนี้มีวิธีที่จะทำให้งานนี้สำหรับภูมิภาคอื่น ๆ ?
nh2

4

หากคุณต้องการรายงานค่าใช้จ่ายแบบวันต่อวันคุณจะต้องใช้เครื่องมือ " รายงานการใช้งาน " ในบัญชี AWS ของคุณ คุณสามารถขอรายงานสำหรับแต่ละบริการที่คุณใช้ในช่วงเวลาที่คุณต้องการในแบบละเอียดตั้งแต่เป็นชั่วโมงจนถึงเป็นเดือน จากนั้นจะดาวน์โหลดไฟล์ CSV

คุณจะต้องทำการประมวลผลภายหลังบน CSV นั้น (เนื่องจากไม่ได้อยู่ในค่าใช้จ่าย แต่เป็นการใช้งาน ฯลฯ ) แต่จะให้ข้อมูลที่คุณต้องมีค่าใช้จ่ายแบบวันต่อวัน


+1 ใช่ฉันเข้าใจ ฉันแค่กำลังมองหาวิธีที่ง่ายขึ้น
Sabya

3

Amazon แสดงค่าใช้จ่ายรายเดือนปัจจุบันของคุณที่นี่:

http://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=activity-summary

ตรงส่วนบนของหน้าจะระบุว่ากระแสข้อมูลเป็นอย่างไร ฉันพบว่ามันมีแนวโน้มที่จะล่าช้าโดยไม่กี่ชั่วโมง

นี่เป็นบันทึกที่แม่นยำและทันสมัยที่สุดที่คุณสามารถรับได้จาก Amazon หรือใครก็ตามในเวลานี้


2

บางทีโมดูล Python นี้ใน Github สามารถช่วยคุณเริ่มต้นใช้งาน: pyec2costs (สำหรับอินสแตนซ์ที่สงวนไว้หรือ ondemand)


2

มีเครื่องมือใหม่ที่ค่อนข้างเปิดใช้งานโดย Netflix เรียกว่า Ice: https://github.com/Netflix/iceซึ่งช่วยให้สามารถเห็นภาพรายละเอียดการเรียกเก็บเงินตามที่ดึงมาผ่านรายงาน AWS ที่สร้างขึ้นในถัง S3 ของคุณ


1

ดูที่ Xervmon มีการใช้จ่ายและการใช้งานแบบวันต่อวันนอกเหนือจากการวิเคราะห์ประวัติ พวกเขาเป็นผู้ให้บริการที่กำลังจะมาพร้อมกับการรวมรายละเอียดกับ Amazon AWS ที่วางแผนไว้ใน 3 เดือน

ภาพหน้าจอบางส่วนจากบัญชีปัจจุบันของฉันมีดังต่อไปนี้ http://cloudmaya.net/~develop/demo/Slide1.jpg http://cloudmaya.net/~develop/demo/Slide2.jpg

กลุ่มผู้เชี่ยวชาญได้สร้างและมันค่อนข้างเรียบร้อย


1

ต่อไปนี้เป็นสคริปต์ง่าย ๆ ที่แสดงวิธีการวิเคราะห์และวิเคราะห์ไฟล์ CSV สำหรับการเรียกเก็บเงิน AWS โดยละเอียดของคุณ:

ควรจะง่ายพอที่จะสร้างการวิเคราะห์ของคุณเอง!


1

การใช้คำสั่ง CostExplorer AWS CLI เป็นไปได้ที่จะเรียกข้อมูลค่าใช้จ่ายและการใช้งานสำหรับบัญชี

ตัวอย่างเช่น: หากคุณต้องการเรียกคืนค่าใช้จ่ายตั้งแต่ต้นเดือนถึงปัจจุบันคุณสามารถใช้คำสั่งด้านล่าง

aws ce get-cost-and-usage --time-period Start=$(date -u -d "$TODAY" '+%Y-%m-01'),End=$(date -u +"%Y-%m-%d" --date="+1 day") --granularity MONTHLY --metrics UnblendedCost --output text | sort -r -k 3 | head -n 1 | cut -f 2

เอาท์พุท: 615.6129260967

หากคุณต้องการได้รับค่าใช้จ่ายทุกวันให้ใช้ GRANULARITY เป็นรายวันดังที่แสดงด้านล่าง:

aws ce get-cost-and-usage --time-period Start=$(date -u -d "$TODAY" '+%Y-%m-01'),End=$(date -u +"%Y-%m-%d" --date="+1 day") --granularity DAILY --metrics UnblendedCost

0

ฉันเคยเห็น บริษัท ต่างๆสร้างเครื่องมือภายในองค์กรของตนเองขึ้นมา - โดยทั่วไปแล้วพวกเขาจะทิ้งหน้าการเรียกเก็บเงิน AWS และบนแผงควบคุมของพวกเขาเองแสดงค่าใช้จ่ายในปัจจุบันและในตัวอย่างหนึ่งพวกเขาหารด้วยวันในเดือนที่ผ่านไป และหลายอย่างที่จะได้รับค่าใช้จ่ายรวมเดือนโดยประมาณ

AWS ยังไม่เสนอ API การเรียกเก็บเงิน (ฉันแน่ใจว่าพวกเขาจะทำในอนาคต) แต่มีบริการภายนอกสองสามอย่างที่สามารถช่วยได้ หนึ่งในนั้นคือ CloudVertical (การเปิดเผยข้อมูล: ฉันทำงานที่นี่) ซึ่งคุณสามารถรับค่าใช้จ่ายรายวันรายเดือนและรายชั่วโมงแยกตามบริการและสำหรับหลายบัญชี

จอกศักดิ์สิทธิ์ที่แท้จริงสำหรับบริการอย่าง AWS ไม่ใช่เพียงเพื่อติดตามการใช้จ่ายรายวัน แต่เพื่อแสดงข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพ (ต้นทุน + การใช้ = ประสิทธิภาพ) และยังเน้นถึงโอกาสในการประหยัด (เช่น: เวลาในการใช้งานหรือกรณีพิเศษ)


Ed Byme ถูกต้อง มีผู้ให้บริการจำนวนมาก ความสามารถในการทำให้มีเมฆเป็นสิ่งหนึ่งที่เหมือน CloudVertical อย่างไรก็ตามพวกเขาทั้งหมดมีน้ำหนักมากและโซลูชั่นราคาแพงที่มีคุณสมบัติมากมายที่คุณอาจไม่เคยใช้ ให้ลองพิจารณาBillGist.com (การเปิดเผยข้อมูล: ฉันทำงานที่นี่) ซึ่งราคาถูกสุด ๆ และอีเมลที่คุณรายงานจะอยู่ในกล่องจดหมายของคุณ

0

มีเครื่องมือในการดูการใช้งานการเรียกเก็บเงิน AWS ของคุณซึ่งคุณสามารถแบ่งการใช้งานของคุณในทรัพยากร AWS ต่างๆให้เหลือเพียง 30 นาที ฉันโพสต์คำตอบอย่างละเอียดยิ่งขึ้นที่https://stackoverflow.com/a/37585673/1526342


0

ตอนนี้คุณสามารถทำได้ด้วย Cost Explorer API คุณสามารถเข้าถึงได้อย่างง่ายดายผ่านทาง awscli / boto3 แต่ประเด็นก็คือมันง่ายกว่ามากก่อนหน้านี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.