Spring Cloud、Consul、Prometheus、Docker,你想要的系统监控?

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中。如下图,已经注册进去了。


consul.png

接下来我们来使用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

配置文件如下图:


prometheus.png

这个时候打开ip:9090查看prometheus可以看到,已经可以监控通过consul注册的spring应用了


prometheus-targets.png

更深入的应用,比如说结合Grafana这样的前端展示,以后慢慢更新吧~~~
想写一些东西分享,欢迎转载,请注明出处。
-板凳儿儿
https://www.jianshu.com/p/d97fe71331a1

你可能感兴趣的:(Spring Cloud、Consul、Prometheus、Docker,你想要的系统监控?)