spring cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,
如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
本篇文章要介绍的是如何使用Spring Cloud集成Consul做服务发现,并且利用Promtheus对其进行系统监控。Consul及Promtheus使用docker容器安装。
一. 项目搭建
建立Spring Boot项目,接下来贴一下pom文件
4.0.0
com.cloud.consul
cloud
0.0.1-SNAPSHOT
jar
cloud
Cloud project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.1.RELEASE
UTF-8
UTF-8
1.8
Finchley.M9
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-consul-config
org.springframework.boot
spring-boot-starter-actuator
2.0.0.M7
org.springframework.cloud
spring-cloud-starter-consul-discovery
org.springframework.boot
spring-boot-starter-test
test
io.micrometer
micrometer-registry-prometheus
org.springframework.cloud
spring-cloud-consul-dependencies
2.0.0.M7
pom
import
org.springframework.boot
spring-boot-maven-plugin
spring-milestones
Spring Milestones
https://repo.spring.io/milestone
false
加载主类
package com.cloud.consul.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@SpringBootApplication
@EnableAutoConfiguration
@EnableDiscoveryClient
@RestController
public class CloudApplication {
@RequestMapping("/")
public Object home() {
System.out.println("Cloud-Server-1");
return "Cloud-Server-1";
}
/**
* JSON数据格式
* body:{
* "imageUrl":"http://grafana.org/assets/img/blog/mixed_styles.png",
* "message":"Someone is testing the alert notification within grafana.",
* "ruleId":0,
* "ruleName":"Test notification",
* "ruleUrl":"http://grafana.52itstyle.com/",
* "state":"alerting",
* "title":"[Alerting] Test notification",
* "evalMatches":[
* {"value":100,"metric":"High value","tags":null},
* {"value":200,"metric":"Higher Value","tags":null}
* ]
* }
*/
@RequestMapping("/webhook")
public String webhook(String body,HttpServletRequest request) {
//处理预警信息(邮件、短信、钉钉)
// logger.info("webhook警报系统,body:{}",body);
System.out.println("********************************************************");
return "success";
}
public static void main(String[] args) {
SpringApplication.run(CloudApplication.class, args);
}
}
接下来是比较重要的配置文件啦
server.port=8001
spring.application.name=Consul-Server-1
spring.security.user.name=admin
spring.security.user.password=admin
spring.cloud.consul.host=192.168.3.3
spring.cloud.consul.port=8500
spring.cloud.consul.enabled=true
spring.cloud.consul.discovery.ena bled=true
spring.cloud.consul.discovery.instanceId=tomcat1
spring.cloud.consul.discovery.serviceName=tomcat
spring.cloud.consul.discovery.hostname=192.168.3.3
spring.cloud.consul.discovery.port=${server.port}
spring.cloud.consul.discovery.healthCheckUrl=http://192.168.3.3:8001/actuator/health
spring.cloud.consul.discovery.healthCheckInterval=10s
spring.cloud.consul.discovery.tags=prometheus-target
management.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=*
这样咱们Spring的项目就已经搭建完毕,并且启动服务后会自动注册到Consul中。下面咱们来配置一下Consul
二. Consul
咱们使用docker容器进行安装,这里暂不对docker做多介绍了。
# 搜索镜像
docker search consul
# 安装镜像
docker pull progrium/consul
# 启动容器
docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul -server -bootstrap -ui-dir /ui
这时候输入ip:8500就可以访问到我们consul的ui了。那么我们把之前的spring项目启动起来,看看会不会自动注册到刚刚部署好的consul中。如下图,已经注册进去了。
接下来我们来使用docker部署Prometheus
三. Prometheus
# 搜索镜像
docker search prometheus
# 安装镜像
docker pull prom/prometheus
# 启动容器
docker run -d --name=prometheus -p 9090:9090 prom/prometheus
# 进入容器,修改配置文件,加入consul
docker exec -it /bin/sh
vi /etc/prometheus/prometheus.yml
配置文件如下图:
这个时候打开ip:9090查看prometheus可以看到,已经可以监控通过consul注册的spring应用了
更深入的应用,比如说结合Grafana这样的前端展示,以后慢慢更新吧~~~
想写一些东西分享,欢迎转载,请注明出处。
-板凳儿儿
https://www.jianshu.com/p/d97fe71331a1