Tại Honeybadger chúng ta đã dùng apticron để theo dõi apt package updates cho tất cả server. Ban đầu tôi để apticron emails đến inbox, nhưng tại một thời điểm tôi quyết định tôi muốn chúng trong Slack notifications channel. Slack có email app tiện lợi có thể nhận emails và post chúng vào channel, nên tôi thử. Nó worked, nhưng tôi không thích cách emails hiển thị như files, và có all the noise của mail headers, v.v., nên tôi quyết định whip up thứ tôi sẽ thích hơn một chút. Vậy AptWatcher ra đời.
AptWatcher là một app super simple tôi nhanh chóng gom lại vào cuối tuần để relay thông tin về apt package updates từ server của chúng ta đến Slack notifications channel. Tất cả nó làm là cung cấp HTTP endpoint lắng nghe list tên package và version sẵn sàng updated trên server. Nó so sánh list đó với list trước đó nhận từ server, và nếu bất kỳ package nào tìm thấy trong list mới mà không có trong list cũ, nó gửi những package mới đó đến Slack qua incoming webhook.
List package đó có thể được generate trên server bằng cách chạy:
$ apt-get upgrade -s | grep ^Inst | awk '{ print $2,$3; }' | tr -d '[]'
Điều đó generate list packages trông như sau:
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
Và cùng list đó sẽ hiện lên trong Slack khi routed qua AptWatcher:

Cài đặt
Cài đặt đơn giản như click Heroku button trong README của repo, và sau đó thêm cron job vào tất cả server để report package changes đến AptWatcher. Host records sẽ tự động tạo trong AptWatcher khi reports đến từ server.
Chúng ta dùng Ansible tại Honeybadger để automate mọi thứ, nên tôi lấy quick-and-dirty approach để replace apticron với 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'"
Một khi đó done, tất cả bạn cần làm là chờ package reports hiện lên trong Slack. Easy-peasy!