โครงสร้างพื้นฐานของเราอยู่บน AWS ฉันต้องการรับรายงานรายวันเกี่ยวกับจำนวนเงินที่ใช้ไปของวันก่อนหน้า วิธีที่ดีที่สุดที่จะทำคืออะไร?
โครงสร้างพื้นฐานของเราอยู่บน AWS ฉันต้องการรับรายงานรายวันเกี่ยวกับจำนวนเงินที่ใช้ไปของวันก่อนหน้า วิธีที่ดีที่สุดที่จะทำคืออะไร?
คำตอบ:
AWS ได้ประกาศเพียงความพร้อมทั่วไปของการทำงานเพื่อตรวจสอบค่าใช้จ่ายโดยประมาณโดยใช้การเรียกเก็บเงินการแจ้งเตือนผ่านทางAmazon CloudWatch (มันเห็นได้ชัดว่าได้รับการบริการที่จะ AWS พรีเมี่ยมบัญชีอยู่แล้วตั้งแต่ปลายปี 2011 ดูคำตอบแดเนียลโลเปซ' จะมีวิธีการตั้งค่า Amazon AWS วงเงินการเรียกเก็บเงินหรือไม่ ):
เราประมาณการค่าบริการรายเดือนทั้งหมดสำหรับบริการ AWS แต่ละรายการที่คุณใช้เป็นประจำ เมื่อคุณเปิดใช้งานการตรวจสอบบัญชีของคุณเราจะเริ่มจัดเก็บข้อมูลประมาณการเป็นตัวชี้วัด CloudWatch ซึ่งจะสามารถใช้งานได้ในช่วง 14 วันปกติ [ ... ]
ตามที่ระบุไว้ในบล็อกโพสต์เบื้องต้นคุณสามารถเริ่มต้นโดยใช้การแจ้งเตือนการเรียกเก็บเงินเพื่อให้คุณทราบเมื่อการเรียกเก็บเงิน AWS ของคุณจะสูงขึ้นกว่าที่คาดไว้ดูการตรวจสอบค่าใช้จ่ายโดยประมาณของคุณโดยใช้ Amazon CloudWatchสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการทำงานนี้
สิ่งนี้มีประโยชน์อยู่แล้วสำหรับความต้องการพื้นฐานหลายอย่างอย่างไรก็ตามการใช้CloudWatch APIเพื่อดึงเมตริกที่จัดเก็บไว้ด้วยตัวคุณเอง (ดูที่GetMetricStatistics ) ช่วยให้คุณขับเวิร์กโฟลว์และตรรกะทางธุรกิจตามอำเภอใจตามข้อมูลนี้และแน่นอนว่าคุณสามารถสร้างรายงานรายวัน ในวันก่อนหน้าเช่นกัน
สำหรับข้อเสนอนี้ขอบเขตของข้อเสนอนี้จะเน้นเช่นกันว่า:
มันเป็นสิ่งสำคัญที่จะต้องทราบว่าเหล่านี้เป็นประมาณการคาดการณ์ไม่ได้ ค่าประมาณนั้นใกล้เคียงกับค่าใช้จ่ายของการใช้งาน AWS ของคุณจนถึงปัจจุบันภายในรอบการเรียกเก็บเงินปัจจุบันและจะเพิ่มขึ้นเมื่อคุณใช้ทรัพยากรต่อไป [... ] ไม่ได้คำนึงถึงแนวโน้มหรือการเปลี่ยนแปลงที่เป็นไปได้ในรูปแบบการใช้ AWS ของคุณ [เน้นเหมือง]
นั่นคือความละเอียดของตัวชี้วัดที่รายงานยังไม่ได้รับการวิเคราะห์ (ฉันเห็นจุดข้อมูลทุก 4-8 ชั่วโมง แต่ไม่จำเป็นต้องอัพเดทค่าทุกครั้งตามที่คาดหวังจริง) ดังนั้นการได้รับรายงานรายวันที่แม่นยำเพียงพออาจต้องมี การประมวลผลทางสถิติ
น่าเสียดายที่สิ่งนี้ตรงไปตรงมาน้อยกว่าที่คิดโดยเฉพาะเมื่อข้อมูลที่ต้องการสามารถตรวจสอบด้วยตนเองผ่านบัญชีของคุณ มีสองตัวเลือกในการตรวจสอบที่คาดหวัง:
ทั้ง AWS และผู้ให้บริการ IaaS / PaaS / SaaS อื่น ๆ ที่ฉันรู้ว่าจะให้การเข้าถึง API กับข้อมูลบัญชีของพวกเขาในปัจจุบัน (อาจเป็นเพราะผลกระทบทางการเงิน / ทางกฎหมายที่อาจเกิดขึ้น) ทำให้การรวมรูปแบบบุคคลที่สามใด ๆ ทำทุกวันนี้) ยุ่งยากที่สุดเท่าที่คุณต้องการเพื่อคัดลอกเว็บเพื่อดึงข้อมูลในตอนแรก
โชคดีที่ข้อเสนอใหม่จาก Cloudability [ลบลิงค์หลังจากหยุดใช้งานฟรีเทียร์] ได้เข้าสู่เวทีเมื่อเร็ว ๆ นี้เพื่อทำสิ่งนี้ให้คุณในแบบมืออาชีพและผู้ไม่เชื่อเรื่องพระเจ้าเราใช้มันด้วยความสำเร็จที่ยิ่งใหญ่สำหรับ AWS โดยเฉพาะ ได้รับรายงานรายวัน (หรือน้อยกว่า) ของการใช้จ่ายรายเดือนของคุณเท่านั้นเช่นไม่ได้แบ่งออกเป็นค่าใช้จ่ายรายวันของคุณ แน่นอนว่าการเพิ่มการเพิ่มรายวันนั้นเป็นเรื่องไม่แน่นอนดังนั้นฉันจึงหวังและคาดหวังว่าพวกเขาจะให้ข้อมูลเพิ่มเติมเช่นนี้เมื่อเวลาผ่านไป
แนวทางของพวกเขาในการกำหนดราคา [ลิงก์ถูกลบออกหลังจากที่ยกเลิกระดับฟรี] กำลังรีเฟรชเช่นกัน (แม้จะชัดเจน) และเชื่อมโยงกับการใช้จ่ายบนคลาวด์ของคุณเองดังนั้นจึงควรชำระเงินเองทันทีที่คุณตระหนักถึงศักยภาพในการประหยัด อะไรก็ได้ถ้าคุณใช้จ่ายน้อยกว่า $ 2.5k / mo)
Update 20121016 : น่าเสียดายที่ Cloudability ได้เปลี่ยนรูปแบบการกำหนดราคาเป็นแบบทั่วไปซึ่งยังรวมถึงระดับฟรี (และราคาสมเหตุสมผลโดยทั่วไป) แต่เอาการเข้าถึงคุณลักษณะขั้นสูงในนั้นซึ่งฉันคิดว่าเป็นวิธีการที่สดชื่นและชาญฉลาดสำหรับผู้ใช้ ด้วยงบประมาณขนาดเล็กที่อาจยังคงเป็นตัวคูณอยู่ที่อื่นหรืออัปเกรดเมื่อโตขึ้น
อัปเดต 20150115: น่าเสียดายที่ Cloudability เลือกเส้นทางของผู้จำหน่าย Freemium SaaS จำนวนมากและในที่สุดก็ยกเลิกชั้นฟรีทั้งหมดตั้งแต่วันที่ 1 กุมภาพันธ์เราจะไม่นำเสนอ Cloudability Free edition ที่คุณใช้ในปัจจุบันอีกต่อไป
ข้อแม้เดิม (เก็บไว้เพื่อการอ้างอิงด้านล่าง) ของการกำหนดให้ใช้ข้อมูลประจำตัว AWS หลักของคุณไม่ได้ใช้อีกต่อไป - AWS เพิ่งเปิดตัวคุณสมบัติใหม่ของ IAM: การจัดการรหัสผ่านและการเข้าถึงหน้ากิจกรรมบัญชีและรายงานการใช้งาน :
คุณสมบัติใหม่นี้ช่วยให้คุณสร้างผู้ใช้ IAM ที่แยกต่างหากและแตกต่างกันเพื่อวัตถุประสงค์ทางธุรกิจและทางเทคนิค คุณสามารถให้สิทธิ์ผู้ใช้ทางธุรกิจของคุณเข้าถึงหน้ากิจกรรมบัญชีและ / หรือรายงานการใช้งานของเว็บไซต์ AWS เพื่อให้พวกเขาเข้าถึงข้อมูลการเรียกเก็บเงินและการใช้งานโดยไม่ให้พวกเขาเข้าถึงทรัพยากร AWS อื่น ๆ เช่นอินสแตนซ์ EC2 หรือไฟล์ใน S3
Cloudability ขณะนี้ได้รวมนี้เป็นอย่างดีจึงทำให้คุณไม่จำเป็นต้องส่งมอบให้ข้อมูลประจำตัวของ AWS หลักของคุณอีกต่อไปหรือใช้เวลาความพยายามเป็นพิเศษในการสร้างรวมการเรียกเก็บเงินเพียงเพื่อความเข้าใจในการใช้จ่ายกำไรเมฆของคุณให้ดูวิธีการติดตั้ง Amazon IAM (Identity Management บัญชี )เพื่อดูรายละเอียด
มีข้อแม้อย่างหนึ่งที่ควรทราบล่วงหน้าคือ:
ในการเข้าถึงข้อมูลของคุณคุณจะต้องมอบข้อมูลรับรอง AWS หลักให้กับพวกเขาเพราะไม่เช่นนั้นพวกเขาจะไม่สามารถขูดบัญชีของคุณได้อย่างชัดเจน สำหรับ AWS โดยเฉพาะคุณยังสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยการอำนวยความสะดวกในการเรียกเก็บเงินรวมซึ่งคุณรวมการชำระเงินสำหรับบัญชี Amazon AWS หลายบัญชี [... ] โดยการกำหนดบัญชีการชำระเงินเดียวซึ่งจะไม่สามารถเข้าถึงทรัพยากรคอมพิวเตอร์และข้อมูลของคุณ
การใช้เครื่องมือ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 ชั่วโมงและลบจุดข้อมูลที่เก่าที่สุดออกจากข้อมูลล่าสุด
หมายเหตุ:
date
(สำหรับคนอื่นdate
เช่นบน OSX date -v-12H
อาจใช้งานได้)หากคุณต้องการรายงานค่าใช้จ่ายแบบวันต่อวันคุณจะต้องใช้เครื่องมือ " รายงานการใช้งาน " ในบัญชี AWS ของคุณ คุณสามารถขอรายงานสำหรับแต่ละบริการที่คุณใช้ในช่วงเวลาที่คุณต้องการในแบบละเอียดตั้งแต่เป็นชั่วโมงจนถึงเป็นเดือน จากนั้นจะดาวน์โหลดไฟล์ CSV
คุณจะต้องทำการประมวลผลภายหลังบน CSV นั้น (เนื่องจากไม่ได้อยู่ในค่าใช้จ่าย แต่เป็นการใช้งาน ฯลฯ ) แต่จะให้ข้อมูลที่คุณต้องมีค่าใช้จ่ายแบบวันต่อวัน
Amazon แสดงค่าใช้จ่ายรายเดือนปัจจุบันของคุณที่นี่:
http://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=activity-summary
ตรงส่วนบนของหน้าจะระบุว่ากระแสข้อมูลเป็นอย่างไร ฉันพบว่ามันมีแนวโน้มที่จะล่าช้าโดยไม่กี่ชั่วโมง
นี่เป็นบันทึกที่แม่นยำและทันสมัยที่สุดที่คุณสามารถรับได้จาก Amazon หรือใครก็ตามในเวลานี้
บางทีโมดูล Python นี้ใน Github สามารถช่วยคุณเริ่มต้นใช้งาน: pyec2costs (สำหรับอินสแตนซ์ที่สงวนไว้หรือ ondemand)
มีเครื่องมือใหม่ที่ค่อนข้างเปิดใช้งานโดย Netflix เรียกว่า Ice: https://github.com/Netflix/iceซึ่งช่วยให้สามารถเห็นภาพรายละเอียดการเรียกเก็บเงินตามที่ดึงมาผ่านรายงาน AWS ที่สร้างขึ้นในถัง S3 ของคุณ
ดูที่ Xervmon มีการใช้จ่ายและการใช้งานแบบวันต่อวันนอกเหนือจากการวิเคราะห์ประวัติ พวกเขาเป็นผู้ให้บริการที่กำลังจะมาพร้อมกับการรวมรายละเอียดกับ Amazon AWS ที่วางแผนไว้ใน 3 เดือน
ภาพหน้าจอบางส่วนจากบัญชีปัจจุบันของฉันมีดังต่อไปนี้ http://cloudmaya.net/~develop/demo/Slide1.jpg http://cloudmaya.net/~develop/demo/Slide2.jpg
กลุ่มผู้เชี่ยวชาญได้สร้างและมันค่อนข้างเรียบร้อย
ต่อไปนี้เป็นสคริปต์ง่าย ๆ ที่แสดงวิธีการวิเคราะห์และวิเคราะห์ไฟล์ CSV สำหรับการเรียกเก็บเงิน AWS โดยละเอียดของคุณ:
ควรจะง่ายพอที่จะสร้างการวิเคราะห์ของคุณเอง!
การใช้คำสั่ง 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
ฉันเคยเห็น บริษัท ต่างๆสร้างเครื่องมือภายในองค์กรของตนเองขึ้นมา - โดยทั่วไปแล้วพวกเขาจะทิ้งหน้าการเรียกเก็บเงิน AWS และบนแผงควบคุมของพวกเขาเองแสดงค่าใช้จ่ายในปัจจุบันและในตัวอย่างหนึ่งพวกเขาหารด้วยวันในเดือนที่ผ่านไป และหลายอย่างที่จะได้รับค่าใช้จ่ายรวมเดือนโดยประมาณ
AWS ยังไม่เสนอ API การเรียกเก็บเงิน (ฉันแน่ใจว่าพวกเขาจะทำในอนาคต) แต่มีบริการภายนอกสองสามอย่างที่สามารถช่วยได้ หนึ่งในนั้นคือ CloudVertical (การเปิดเผยข้อมูล: ฉันทำงานที่นี่) ซึ่งคุณสามารถรับค่าใช้จ่ายรายวันรายเดือนและรายชั่วโมงแยกตามบริการและสำหรับหลายบัญชี
จอกศักดิ์สิทธิ์ที่แท้จริงสำหรับบริการอย่าง AWS ไม่ใช่เพียงเพื่อติดตามการใช้จ่ายรายวัน แต่เพื่อแสดงข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพ (ต้นทุน + การใช้ = ประสิทธิภาพ) และยังเน้นถึงโอกาสในการประหยัด (เช่น: เวลาในการใช้งานหรือกรณีพิเศษ)
มีเครื่องมือในการดูการใช้งานการเรียกเก็บเงิน AWS ของคุณซึ่งคุณสามารถแบ่งการใช้งานของคุณในทรัพยากร AWS ต่างๆให้เหลือเพียง 30 นาที ฉันโพสต์คำตอบอย่างละเอียดยิ่งขึ้นที่https://stackoverflow.com/a/37585673/1526342
ตอนนี้คุณสามารถทำได้ด้วย Cost Explorer API คุณสามารถเข้าถึงได้อย่างง่ายดายผ่านทาง awscli / boto3 แต่ประเด็นก็คือมันง่ายกว่ามากก่อนหน้านี้