Статьи

Что такое API Docker Stats?

Контейнерные и микросервисы меняют способ проектирования, создания и мониторинга систем командами разработчиков и операторов. Контейнерная среда сред приводит к тому, что системы с большим количеством динамических и эфемерных экземпляров автоматически масштабируются для удовлетворения требований к нагрузке на систему. На самом деле, нередко можно увидеть тысячи экземпляров контейнеров, где когда-то были сотни (облачных) экземпляров серверов, где когда-то были десятки физических серверов,

С точки зрения мониторинга это означает, что еще труднее понять, что происходит в вашей среде, без централизованного мониторинга и регистрации. Ведь вы не можете управлять тем, что не следите. 

то, что-это-The-докер-статистика-апи

Войдите в API статистики Docker. API статистики Docker является частью нового выпуска Docker  1.5  и представляет собой конечную точку API и команду CLI, которая будет передавать потоковую информацию об использовании ресурсов (таких как ЦП, память, сетевой IO и блочный IO) для ваших контейнеров. Конечная точка API может использоваться для создания инструментов, которые подают информацию о реальных ресурсах для ваших контейнеров в ваши существующие решения для мониторинга, или для создания живых панелей мониторинга непосредственно с помощью API.

Фактически мы создали новый контейнер Docker Logentries для подключения к этой конечной точке, чтобы вы могли передавать эти данные в свою учетную запись Logentries вместе с любыми журналами Docker из ваших контейнеров. Если вы хотите создать свой собственный инструмент, вы можете проверить исходный код этого  репозитория github  — он может дать вам некоторые идеи. Контейнер также доступен в  репозитории Logentries Dockerhub . Наши близкие друзья — лидеры в пространстве Node , парни из самой большой (и самой веселой!) Конференции по нодам  в Европе   и заядлые участники Docker (например, парни из  jsChan ) помогли нам разработать этот контейнер (спасибо  Питеру  и  Маттео !).

Контейнер Docker Logentries работает, монтируя сокет Docker, чтобы получать как поток данных журнала из ваших контейнеров Docker, так и поток статистики из API статистики Docker. API статистики Docker будет перенаправлять информацию следующего типа на контейнер:

{
   "read" : "2015-01-08T22:57:31.547920715Z",
   "network" : {
      "rx_dropped" : 0,
      "rx_bytes" : 648,
      "rx_errors" : 0,
      "tx_packets" : 8,
      "tx_dropped" : 0,
      "rx_packets" : 8,
      "tx_errors" : 0,
      "tx_bytes" : 648
   },
   "memory_stats" : {
      "stats" : {
         "total_pgmajfault" : 0,
         "cache" : 0,
         "mapped_file" : 0,
         "total_inactive_file" : 0,
         "pgpgout" : 414,
         "rss" : 6537216,
         "total_mapped_file" : 0,
         "writeback" : 0,
         "unevictable" : 0,
         "pgpgin" : 477,
         "total_unevictable" : 0,
         "pgmajfault" : 0,
         "total_rss" : 6537216,
         "total_rss_huge" : 6291456,
         "total_writeback" : 0,
         "total_inactive_anon" : 0,
         "rss_huge" : 6291456,
         "hierarchical_memory_limit" : 67108864,
         "total_pgfault" : 964,
         "total_active_file" : 0,
         "active_anon" : 6537216,
         "total_active_anon" : 6537216,
         "total_pgpgout" : 414,
         "total_cache" : 0,
         "inactive_anon" : 0,
         "active_file" : 0,
         "pgfault" : 964,
         "inactive_file" : 0,
         "total_pgpgin" : 477
      },
      "max_usage" : 6651904,
      "usage" : 6537216,
      "failcnt" : 0,
      "limit" : 67108864
   "blkio_stats" : {},
   "cpu_stats" : {
      "cpu_usage" : {
         "percpu_usage" : [
            16970827,
            1839451,
            7107380,
            10571290
         ],
         "usage_in_usermode" : 10000000,
         "total_usage" : 36488948,
         "usage_in_kernelmode" : 20000000
      },
      "system_cpu_usage" : 20091722000000000,
      "throttling_data" : {}
   }
}

You can see that it provides a nice level of visibility across your key server resources and ultimately you can now build a specialised monitoring/logging container (as we have) to give you an easy way to collect both you container logs and metrics and to make them available in a centralized location. Collecting BOTH log data and stats in a single dashboard has the advantage of giving you a multi-dimensional view of your system and is particularly useful for troubleshooting and monitoring of your production docker environments – which has been pretty difficult to achieve up to this point.

To visualise this info you can also take advantage of the Logentries Docker Community pack which provides out of the box dashboards, alerts and tags for your stats API data – providing dashboards and alerts on per container CPU, Memory and Network trends for example.

докер-пак-скриншот

For details on setting up the new Docker Logentries container, see our setup guide. And as always let us know what you think.