构建镜像监测MySQL免费服务器节点状态
1. MySQL免费服务器
注册即可免费获得MySQL服务
2. 监测服务可靠性
springboot:3.3.0
jdk:17
因为服务器结点会有版本迁移情况存在,所以我想写一个服务,能够监测服务器的可靠性,并且在不可达的时候发送邮件给我
@Slf4j
@Component
@RequiredArgsConstructor
public class MySQLMonitor {
private final JavaMailSender mailSender;
private static final String DB_URL = "jdbc:mysql://mysql.sqlpub.com:3306/*****";
private static final String DB_USERNAME = "*****";
private static final String DB_PASSWORD = "*******";
@Scheduled(fixedRate = 60000000) // 每1000分钟检查一次
public void checkMySQLConnection() {
try (Connection connection = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD)) {
log.info("MySQL is online.");
} catch (SQLException e) {
sendAlertEmail();
log.info("MySQL is offline.");
}
}
private void sendAlertEmail() {
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom("***@163.com", "MySQL服务器监测服务");
helper.setTo("*****@qq.com");
helper.setSubject("MySQL Service Alert");
helper.setText("MySQL service is down.");
mailSender.send(message);
} catch (MessagingException e) {
log.error("发送邮件失败: {}", e.getMessage());
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
}
yml
配置文件
spring:
mail:
host: smtp.163.com
port: 25
username: ***@163.com
password: 授权码
default-encoding: UTF-8
授权码需要去申请开通,Google一下很多教程
启动类注解,开启定时任务
@EnableScheduling
3. 构建镜像
jar包
mvn clean package
编写Dockerfile文件
# 使用官方的 OpenJDK 17 作为基础镜像
FROM openjdk:17
# 设置工作目录
WORKDIR /app
# 将应用的 jar 文件复制到容器中
COPY MysqlOnline-0.0.1-SNAPSHOT.jar /app/app.jar
# 暴露应用运行的端口(根据你的应用配置)
EXPOSE 6060
# 运行应用
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
构建
docker build -t mysql-monitor .
运行容器
docker run -d -p 6060:6060 --name mysql-monitor mysql-monitor