说明:
Prometheus:
是一个服务监控系统。它可以在给定的时间间隔从配置的目标收集监控指标,并在观察到指定条件时触发警报;
Grafana:
一个将监控的各项指标可视化的工具,其中有很多dashbord,即仪表盘,用来展示监控的各项指标数据;
下载地址:
Prometheus:https://prometheus.io/download/
Grafana:https://grafana.com/grafana/download
主要实现:(均已测试)
1:SpringBoot集成Prometheus,监控Java项目运行;
2:Prometheus监控Tomcat;
3:Prometheus监控Windows服务器(开发环境监控Windows10;生成环境监控Windows Server
2008均已测试);
一:
SpringBoot集成Prometheus监控Java项目:
准备工作:
自行下载Prometheus及Grafana;
步骤:
1:下载好的Prometheus及Grafana;
2:SpringBoot项目集成监控
依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--监控报警-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
</dependencies>
application.yml配置:
server:
port: 80
# JVM监控
management:
endpoints:
web:
exposure:
include: '*'
base-path: /actuator # 默认actuator
metrics:
tags:
application: App # 启动类名称
配置文件:
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MicrometerConfiguration {
@Bean
MeterRegistryCustomizer meterRegistryCustomizer(MeterRegistry meterRegistry) {
return meterRegistry1 -> {
meterRegistry.config() // 注册
.commonTags("application", "App"); // App:为启动类名称
};
}
}
3:修改Prometheus中的prometheus.yml文件,指定监控对象:
# 此处只贴了配置部分,该配置文件其它部分不需要动
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: 'manager-api'
scrape_interval: 5s
metrics_path: '/actuator/prometheus' # 指标获取路径
static_configs:
- targets: ["IP地址:80"] # 80 为你Java项目的启动端口
4:启动Prometheus&Grafana&Java项目
Prometheus(启动时默认读取prometheus.yml文件,默认端口9090)
安装目录->prometheus.exe
Grafana(默认端口3000)
安装目录->bin->grafana-server.exe
5:查看监控节点启动情况:
6:到Grafana配置数据源及选择合适的dashboard
第一次访问需要你输入账户/密码,默认账户/密码(admin/admin)
①:添加数据源
②:选择并配置数据源
③:测试通过后选择dashboard
完成:
更多dashboard地址:
https://grafana.com/grafana/dashboards/
二:
Prometheus监控Tomcat
准备:
1:tomcat
2:jmx_prometheus_javaagent-0.3.1.jar(自行下载)
3:tomcat.yml(自行新建)
步骤:
1:tomcat.yml内容:(不同的dashboard可能略有不同,详情参考官网)
---
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem", "Catalina:*"]
blacklistObjectNames: []
rules:
- pattern: 'Catalina<type=Server><>serverInfo: (.+)'
name: tomcat_serverinfo
value: 1
labels:
serverInfo: "$1"
type: COUNTER
- pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):'
name: tomcat_$3_total
labels:
port: "$2"
protocol: "$1"
help: Tomcat global $3
type: COUNTER
- pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|processingTime|errorCount):'
name: tomcat_servlet_$3_total
labels:
module: "$1"
servlet: "$2"
help: Tomcat servlet $3 total
type: COUNTER
- pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|connectionCount|acceptCount|acceptorThreadCount|pollerThreadCount|maxThreads|minSpareThreads):'
name: tomcat_threadpool_$3
labels:
port: "$2"
protocol: "$1"
help: Tomcat threadpool $3
type: GAUGE
- pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions):'
name: tomcat_session_$3_total
labels:
context: "$2"
host: "$1"
help: Tomcat session $3 total
type: COUNTER
2:将tomcat.yml和jmx_prometheus_javaagent-0.3.1.jar放置于tomcat的bin目录中(无硬性要求只
是在配置catalina.bat时更方便一些)
3:修改tomcat的catalina.bat文件
set "JAVA_OPTS=%JAVA_OPTS% -javaagent:.\jmx_prometheus_javaagent-0.3.1.jar=9000:.\tomcat.yml"
4:在Prometheus的安装目录中额外再新增tomcat.yml并修改prometheus.yml文件:
新增tomcat.yml文件:
- targets:
- localhost:9000 # catalina.bat中配置的指标收集器端口
labels:
idc: js_company
service: tomcat
修改prometheus.yml文件:
在prometheus.yml中添加关于监控的tomcat的配置;
- job_name: 'tomcat'
file_sd_configs:
- files: ['./tomcat.yml']
refresh_interval: 180s
5:启动tomcat&查看Prometheus中关于tomcat节点的情况&在Grafana中配置数据源并选择Tomcat
的dashboard;
6:tomcat(dashboard ID:8704)
7:完成:
三:
Prometheus监控Windows服务器
准备:
windows_exporter-0.16.0-amd64.exe(自行安装,默认端口9182)
步骤:
1:启动 windows_exporter-0.16.0-amd64.exe
查看启动情况:
2:配置prometheus.yml文件,增加对Windows的监听
- job_name: 'windows'
scrape_interval: 10s
scrape_timeout: 10s
static_configs:
- targets: ['localhost:9182']
3:查看该节点状态:
4:在Grafana中配置数据源&选择合适的dashboard:(Windows dashboardID:10467)
5:完成
路漫漫其修远兮,吾将上下而求索;