ที่ Honeybadger เราใช้ apticron เพื่อติดตามการอัปเดต aptpackage สำหรับเซิร์ฟเวอร์ทั้งหมด ตอนแรกฉันมีอีเมล aapticron ส่งมาที่กล่องจดหมายของฉัน แต่เมื่อถึงจุดหนึ่ง ฉันตัดสินใจว่าฉันต้องการให้มีอีเมลเหล่านั้นในช่องการแจ้งเตือน Slack ของเรา Slack มีแอปอีเมลที่มีประโยชน์ซึ่งสามารถรับอีเมลและโพสต์ลงในช่องได้ ฉันก็เลยลองทำดู มันใช้งานได้ แต่ฉันไม่ชอบที่อีเมลแสดงเป็นไฟล์ และก็มีเสียงของส่วนหัวของเมล ฯลฯ ดังขึ้น ดังนั้นฉันจึงตัดสินใจทำสิ่งที่ฉันต้องการเพิ่มอีกเล็กน้อย ดังนั้น AptWatcher จึงถือกำเนิดขึ้น
AptWatcher เป็น สุดยอด แอพง่าย ๆ ที่ฉันรวบรวมอย่างรวดเร็วในช่วงสุดสัปดาห์เพื่อถ่ายทอดข้อมูลเกี่ยวกับการอัปเดตแพ็คเกจ apt จากเซิร์ฟเวอร์ของเราไปยังช่องการแจ้งเตือน Slack ของเรา ทั้งหมดนี้มีให้ HTTPendpoint ที่รับฟังรายการชื่อแพ็คเกจและเวอร์ชันที่พร้อมจะอัปเดตบนเซิร์ฟเวอร์ มันเปรียบเทียบรายการนั้นกับรายการที่ได้รับจากเซิร์ฟเวอร์ก่อนหน้านี้ และหากพบแพ็คเกจใดในรายการใหม่ที่ไม่ได้อยู่ในรายการเก่า แพ็คเกจใหม่เหล่านั้นจะส่งไปยัง Slack ผ่านเว็บฮุคที่เข้ามา
รายการแพ็คเกจนั้นสามารถสร้างได้บนเซิร์ฟเวอร์โดยเรียกใช้สิ่งนี้:
$ apt-get upgrade -s | grep ^Inst | awk '{ print $2,$3; }' | tr -d '[]'
ที่สร้างรายการแพ็คเกจที่มีลักษณะดังนี้:
libxml2-dev 2.9.1+dfsg1-3ubuntu4.7
libxml2 2.9.1+dfsg1-3ubuntu4.7
libnl-genl-3-200 3.2.21-1ubuntu1.1
libnl-3-200 3.2.21-1ubuntu1.1
และรายการเดียวกันนั้นจะแสดงใน Slack เมื่อกำหนดเส้นทางผ่าน AptWatcher:
การติดตั้ง
การติดตั้งทำได้ง่ายเพียงแค่คลิกปุ่ม Heroku ใน README ของ repo แล้วเพิ่มงาน cron ให้กับเซิร์ฟเวอร์ทั้งหมดของคุณเพื่อรายงานการเปลี่ยนแปลงแพ็คเกจไปยัง AptWatcher บันทึกโฮสต์จะถูกสร้างขึ้นโดยอัตโนมัติในAptWatcher เมื่อรายงานมาถึงจากเซิร์ฟเวอร์
เราใช้ Ansible ที่ Honeybadger เพื่อทำให้ทุกอย่างเป็นอัตโนมัติ ดังนั้นฉันจึงใช้วิธีที่รวดเร็วและสกปรกเพื่อแทนที่ apticron ด้วย AptWatcher:
$ ansible all -m apt -a 'pkg=apticron state=removed'
$ ansible all -m cron -a "name='Report pending apt changes' special_time=daily job='apt-get upgrade -s | grep ^Inst | awk \'{ print \$2,\$3; }\' | tr -d \'[]\' | curl -u user:pass --data-binary @- https://our.aptwatcher.url/report/\$(hostname) &> /dev/null'"
เมื่อเสร็จแล้ว สิ่งที่คุณต้องทำคือรอให้รายงานแพ็คเกจแสดงใน Slack ง่ายนิดเดียว!