日志与监控

Mesos 自身提供了强大的日志和监控功能,某些应用框架也提供了针对框架中任务的监控能力。通过这些接口,用户可以实时获知集群的各种状态。

日志配置

日志文件默认在 /var/log/mesos 目录下,根据日志等级带有不同后缀。

用户可以通过日志来调试使用中碰到的问题。

一般的,推荐使用 --log_dir 选项来指定日志存放路径,并通过日志分析引擎来进行监控。

监控

Mesos 提供了方便的监控接口,供用户查看集群中各个节点的状态。

主节点

通过 http://MASTER_NODE:5050/metrics/snapshot 地址可以获取到 Mesos 主节点的各种状态统计信息,包括资源(CPU、硬盘、内存)使用、系统状态、从节点、应用框架、任务状态等。

例如查看主节点 10.0.0.2 的状态信息,并用 jq 来解析返回的 json 对象。

  1. $ curl -s http://10.0.0.2:5050/metrics/snapshot |jq .
  2. {
  3. "system/mem_total_bytes": 4144713728,
  4. "system/mem_free_bytes": 153071616,
  5. "system/load_5min": 0.37,
  6. "system/load_1min": 0.6,
  7. "system/load_15min": 0.29,
  8. "system/cpus_total": 4,
  9. "registrar/state_store_ms/p9999": 45.4096616192,
  10. "registrar/state_store_ms/p999": 45.399272192,
  11. "registrar/state_store_ms/p99": 45.29537792,
  12. "registrar/state_store_ms/p95": 44.8336256,
  13. "registrar/state_store_ms/p90": 44.2564352,
  14. "registrar/state_store_ms/p50": 34.362368,
  15. ...
  16. "master/recovery_slave_removals": 1,
  17. "master/slave_registrations": 0,
  18. "master/slave_removals": 0,
  19. "master/slave_removals/reason_registered": 0,
  20. "master/slave_removals/reason_unhealthy": 0,
  21. "master/slave_removals/reason_unregistered": 0,
  22. "master/slave_reregistrations": 2,
  23. "master/slave_shutdowns_canceled": 0,
  24. "master/slave_shutdowns_completed": 1,
  25. "master/slave_shutdowns_scheduled": 1
  26. }

从节点

通过 http://SLAVE_NODE:5051/metrics/snapshot 地址可以获取到 Mesos 从节点的各种状态统计信息,包括资源、系统状态、各种消息状态等。

例如查看从节点 10.0.0.10 的状态信息。

  1. $ curl -s http://10.0.0.10:5051/metrics/snapshot |jq .
  2. {
  3. "system/mem_total_bytes": 16827785216,
  4. "system/mem_free_bytes": 3377315840,
  5. "system/load_5min": 0.11,
  6. "system/load_1min": 0.16,
  7. "system/load_15min": 0.13,
  8. "system/cpus_total": 8,
  9. "slave/valid_status_updates": 11,
  10. "slave/valid_framework_messages": 0,
  11. "slave/uptime_secs": 954125.458927872,
  12. "slave/tasks_starting": 0,
  13. "slave/tasks_staging": 0,
  14. "slave/tasks_running": 1,
  15. "slave/tasks_lost": 0,
  16. "slave/tasks_killed": 2,
  17. "slave/tasks_finished": 0,
  18. "slave/executors_preempted": 0,
  19. "slave/executor_directory_max_allowed_age_secs": 403050.709525191,
  20. "slave/disk_used": 0,
  21. "slave/disk_total": 88929,
  22. "slave/disk_revocable_used": 0,
  23. "slave/disk_revocable_total": 0,
  24. "slave/disk_revocable_percent": 0,
  25. "slave/disk_percent": 0,
  26. "containerizer/mesos/container_destroy_errors": 0,
  27. "slave/container_launch_errors": 6,
  28. "slave/cpus_percent": 0.025,
  29. "slave/cpus_revocable_percent": 0,
  30. "slave/cpus_revocable_total": 0,
  31. "slave/cpus_revocable_used": 0,
  32. "slave/cpus_total": 8,
  33. "slave/cpus_used": 0.2,
  34. "slave/executors_registering": 0,
  35. "slave/executors_running": 1,
  36. "slave/executors_terminated": 8,
  37. "slave/executors_terminating": 0,
  38. "slave/frameworks_active": 1,
  39. "slave/invalid_framework_messages": 0,
  40. "slave/invalid_status_updates": 0,
  41. "slave/mem_percent": 0.00279552715654952,
  42. "slave/mem_revocable_percent": 0,
  43. "slave/mem_revocable_total": 0,
  44. "slave/mem_revocable_used": 0,
  45. "slave/mem_total": 15024,
  46. "slave/mem_used": 42,
  47. "slave/recovery_errors": 0,
  48. "slave/registered": 1,
  49. "slave/tasks_failed": 6
  50. }

另外,通过 http://MASTER_NODE:5050/monitor/statistics.json 地址可以看到该从节点上容器网络相关的统计数据,包括进出流量、丢包数、队列情况等。获取方法同上,在此不再演示。