Вы не упомянули об одном подходе: вы можете изменить memcached или ваш клиент для записи необходимой вам статистики. Это, вероятно, самый простой и чистый подход.
Между прокси и подходом libpcap есть несколько компромиссов:
- If you do the packet capture approach, you have to reassemble the TCP
streams into something usable yourself. OTOH, if your monitor program
gets bogged down, it'll just lose some packets, it won't break the cache.
Same if it crashes. You also don't have to reconfigure anything; packet
capture is transparent.
- If you do the proxy approach, the kernel handles all the TCP work for
you. You'll never lose requests. But if your monitor bogs down, it'll bog
down the app. And if your monitor crashes, it'll break caching. You
probably will have to reconfigure your app and/or memcached servers so
that the connections go through the proxy.
Короче говоря, прокси, вероятно, будет легче закодировать, но его реализация может быть непростой задачей, и лучше бы она была идеальной, иначе она откажется от кеширования. Изменение приложения или memcached кажется мне самым разумным подходом.
Кстати: вы смотрели встроенную статистическую отчетность memcached? Я не думаю, что это достаточно детально для того, что вы хотите, но если вы еще этого не видели, посмотрите, прежде чем выполнять реальную работу: -D