监控 Docker
容器的优势让越来越多的应用开始容器化,如何监控容器的健康越来越重要。文章记录如何围绕主机与容器的CPU、内存、磁盘、网络等指标建立Docker应用监控系统
组件准备
文章目的是建立Docker的监控系统,所以系统中除了如下组件要求,还需要监控的系统中安装并使用了Docker
- node-exporter
- cAdvisor
- prometheus
- grafana
记录如何使用Spring中的RestTemplate(with apache.httpcomponents)发起 REST API请求
1 | <dependency> |
Docker Compose是用Python编写的工具,并不包含在Docker Engine安装包中。Docker Compose用于解析YML文件并运行YML中定义的容器服务。Docker Compose命令通过调用Docker API完成多容器的创建启动,使用Docker Compose需要自行安装
@Retryable由spring-retry模块提供,在方法或类上添加@Retryable注解可以实现方法调用失败的重试。可以指定失败重试的次数、fallback方法
设置重试的次数、指定需要重试的异常
1 | @Target({ ElementType.METHOD, ElementType.TYPE }) |
@Scheduled 由Spring定义,用于将方法设置为调度任务。如:方法每隔十秒钟被执行、方法在固定时间点被执行等
@Scheduled(fixedDelay = 1000)
上一个任务结束到下一个任务开始的时间间隔为固定的1秒,任务的执行总是要先等到上一个任务的执行结束
@Scheduled(fixedRate = 1000)
每间隔1秒钟就会执行任务(如果任务执行的时间超过1秒,则下一个任务在上一个任务结束之后立即执行)
@Scheduled(fixedDelay = 1000, initialDelay = 2000)
第一次执行的任务将会延迟2秒钟后才会启动
@Scheduled(cron = “0 15 10 15 * ?”)
Cron表达式,每个月的15号上午10点15开始执行任务
在配置文件中配置任务调度的参数
@Scheduled(fixedDelayString = “${fixedDelay.in.milliseconds}”)
@Scheduled(fixedRateString = “${fixedRate.in.milliseconds}”)
@Scheduled(cron = “${cron.expression}”)
Bean Validation 是一个java规范。可以通过注解的方式约束定义的对象模型或约束方法的入参和出参对象
Bean Validation 1.0(JSR303)是最早的一版java标准对象验证规范,是Java EE 6的一部分。认证的具体实现有:
名称 | 版本 |
---|---|
Hibernate Validator | 4.3.1.Final |
Apache BVal | 0.5 |
Bean Validation 1.1(JSR349)是Java EE 7的一部分。
认证的具体实现有:
名称 | 版本 |
---|---|
Hibernate Validator | 4.3.1.Final |
Apache BVal | 1.1.2 |
记录如何基于Docker搭建监控系统
StatsD 用于统计和聚合系统的指标数据
StatsD采用简单的行协议,StatsD Server默认采用UDP协议,可配置为 TCP协议
1 | <bucket>:<value>|<type>[|@sample_rate] |