前言 微服務概念已經非常流行,這影響了現在架構的思想潮流。 如今,使用spring cloud體系搭建微服務架構的公司越來越多,成本低,出線上產品快,模塊全,開源等原因未來可能更加流行。 一般,我們需要一個監控系統來監控應用的數據,比如記憶體,磁碟,線程情況,資料庫連接池,配置信息,jvm信息等等。 ...
前言
微服務概念已經非常流行,這影響了現在架構的思想潮流。
如今,使用spring cloud體系搭建微服務架構的公司越來越多,成本低,出線上產品快,模塊全,開源等原因未來可能更加流行。
一般,我們需要一個監控系統來監控應用的數據,比如記憶體,磁碟,線程情況,資料庫連接池,配置信息,jvm信息等等。
方案
spring cloud admin
github地址:https://github.com/codecentric/spring-boot-admin
如果本身是java技術棧,搭建非常快,新建監控server項目,在spring boot搭建的client項目上配置以下即可,具體直接看文檔。
InfluxDB 組合方案1
我們可以通過 Jolokia + Telegraf + InfluxDB + Grafana 方案
Jolokia: Spring Boot 認可使用Jolokia來通過HTTP導出export JMX數據。你只需要在工程類路徑中增加一些依賴項,一切都是開箱即用的。不需要任何額外的實現。
https://jolokia.org/reference/html/index.html
Telegraf: Telegraf支持通過整合Jolokia來集成JMX數據的收集。它有一個預製的輸入插件,它是開箱即用的。不需要任何額外的實現。只需要做一些配置即可。
InfluxDB: InfluxDB通過 輸出插件從Telegraf接收指標數據,它是開箱即用的,不需要任何額外的實現。
Grafana: Grafana通過連接InfluxDB作為數據源來渲染圖標。它是開箱即用的,不需要額外的實現。
我們也可以使用InfluxDB官方的方案:
1, Spring boot 配置:
endpoints.jolokia.enabled=true
management.security.enabled=false
management.port=8088
management.context-path=/monitor
pom配置:
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
2,telegraf --config telegraf.conf
配置telegraf.conf
3,./influxd
啟動influxdb
4,./chronograf
啟動chronograf
Prometheus
Prometheus 也是用go開發的方案。
啟動prometheus
./prometheus --config.file=prometheus.yml
prometheus.yml配置:
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first.rules"
# - "second.rules"
scrape_configs:
# - job_name: prometheus
# static_configs:
# - targets: ['localhost:9090']
- job_name: spring-boot
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /monitor/prometheus
scheme: http
static_configs:
- targets:
- 127.0.0.1:8088 #此處填寫 Spring Boot 應用的 IP + 埠號
應用啟動代碼:
@SpringBootApplication
@EnablePrometheusEndpoint
@EnableSpringBootMetricsCollector
public class Application {
public static void main(String[] args) {
SpringApplication app = new SpringApplicationBuilder(Application.class).web(true).application();
app.run(args);
}
}
pom依賴:
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_spring_boot</artifactId>
<version>0.4.0</version>
</dependency>