下载prometheus等镜像:
# prometheus镜像
docker pull docker.io/prom/prometheus
# grafana镜像
docker pull docker.io/grafana/grafana
# node-exporter:监控系统信息,这里先写下,暂时不用
docker pull docker.io/prom/node-exporter
一. Prometheus安装
1.1 编辑配置文件prometheus.yml
简单期间,本文使用Docker方式安装,其他方式安装请详见 Prometheus安装说明 。
# 第一步:建立相应文件夹
mkdir -p /opt/prometheus
mkdir -p /opt/prometheus/server
# mkdir -p /opt/prometheus/client
touch /opt/prometheus/server/rules.yml # 后面报警系统使用
chmod 777 /opt/prometheus/server/rules.yml
# 第二步:编辑配置文件prometheus.yml
cd /opt/prometheus/
vi prometheus.yml
# 第三步:prometheus.yml内容如下:
更多配置项详见 Prometheus Configuration官方文档
instance
: 收集数据的目标端点,一般对应一个进程,即指定其来源,如某个机器job
: 实现同一功能或目标的一组instance。 如一组机器的集合。
global:
# 拉取时间间隔, 默认15s
scrape_interval: 15s
# 拉取超时时间
scrape_timeout: 60s
evaluation_interval: 60s
external_labels:
monitor: 'codelab-monitor'
# 抓取对象配置
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s # 重写了全局抓取间隔时间,由15秒重写成5秒
scrape_timeout: 10s
metrics_path: '/monitor/actuator/prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: prometheus2
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['192.168.91.132:9100']
labels:
instance: localhost
- job_name: 'spring' # 任意写,建议英文,不要包含特殊字符
# 采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。
static_configs:
- targets: ['30.1.229.89:8080']
# 多久采集一次数据
scrape_interval: 15s
# 采集时的超时时间
scrape_timeout: 10s
# 采集的路径
metrics_path: '/actuator/prometheus'
# 这样配置后,Prometheus服务器就会自动每隔15秒请求 http://30.1.229.89:8080/actuator/prometheus 。
注意:修改IP地址,这里的192.168.91.132就是本机地址
如果想动态配置服务信息,可以参考如下配置:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'app-prometheus'
metrics_path: '/actuator/prometheus'
# scheme defaults to 'http'.
basic_auth:
username: 'admin'
password_file: './config/basic-auth-password'
file_sd_configs:
- files: ['/usr/local/prometheus/prometheus-2.16.0.linux-amd64/config/*.yml']
refresh_interval: 5s
# 示例: 在 prometheus.yml 中可以添加针对 Spring Boot 应用 的监控 job
- job_name: 'actuator-demo'
metrics_path: '/prometheus'
static_configs:
- targets: ['172.16.2.204:8080']
1.2 启动prometheus
# 默认
docker run -d \
--name prometheus \
--hostname prom \
-p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/server/rules.yml:/etc/prometheus/rules.yml \
prom/prometheus
# 其它参数(非必选)
--config.file=/etc/prometheus/prometheus.yml \
--web.enable-lifecycle
#=====================================================#
# docker部署
docker run -d \
--name=prometheus \
-p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus --config.file=/etc/prometheus/prometheus.yml
#=====================================================#
# docker部署(保存监控数据)
docker run -d \
--name=prometheus \
-p 9090:9090 \
-u $(id -u):$(id -g) \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/data:/prometheus \
prom/prometheus --config.file=/etc/prometheus/prometheus.yml
启动时加上--web.enable-lifecycle启用远程热加载配置文件
调用指令是curl -X POST http://localhost:9090/-/reload
访问http://{宿主机ip}:9090,看到如下界面
访问 Prometheus UI http://{宿主机ip}:9090 ,查看 targets ,可以看到 job 处于 UP 状态,说明配置成功了。
访问http://10.211.55.25:9090/metrics
我们配置了9090端口,默认prometheus会抓取自己的/metrics接口
在Graph选项已经可以看到监控的数据
二. Grafana安装
本文使用Docker方式安装,其他方式安装请详见 Grafana安装说明 。
官方网站
2.1 新建目录
mkdir /opt/grafana-storage
# 设置权限
chmod 777 -R /opt/grafana-storage
2.2 启动grafana
docker run -d \
-p 3000:3000 \
--name=grafana \
-v /opt/grafana-storage:/var/lib/grafana \
grafana/grafana
2.3 配置
-
登录:访问
http://localhost:3000/login
,初始账号/密码为:admin/admin
,登录后,即可看到类似如下的界面 -
点击
Add data source
,即可看到类似如下的界面: -
点击Prometheus,即可看到类似如下界面:
导入prometheus的模板
打开左上角选择已经导入的模板会看到已经有各种图
我们来添加一个自己的图表
指定自己想看的指标和关键字,右上角保存
看到如下数据
访问url:
http://192.168.91.132:3000/
Grafana UI http://172.16.2.101:3000,通过Grafana的 + 图标导入(Import) JVM (Micrometer) dashboard:
- grafana id = 4701
- 注意选中prometheus数据源
查看JVM (Micormeter) dashboard:
可以看到应用的 JVM 的 堆栈、 线程、 IO 等等信息。
2.4 创建监控Dashboard
-
点击导航栏上的
+
按钮,并点击Dashboard,将会看到类似如下的界面: -
点击
Add Query
,即可看到类似如下的界面:在白框标记的位置输入指标,指标的取值详见Spring Boot应用的
/actuator/prometheus
端点,例如jvm_memory_used_bytes
、jvm_threads_states_threads
、jvm_threads_live_threads
等,Grafana会给你较好的提示,并且支持较为复杂的计算,例如聚合、求和、平均等。如果想要绘制多个线条,可点击Add Query
按钮,如上图所示,笔者为图表绘制了两条线,分别代表daemon以及peak线程。 -
点击下图的按钮,并填入Title,即可设置图表标题。
-
按下图步骤操作,即可为Dashboard添加新的图表。
2.5 Dashboard市场
至此,已可用Grafana实现较为丰富的图表展示——可将关心的监控指标放置到Dashboard上,并且非常灵活!然而,这个配置的操作虽然不难,但还是挺费时间的……
那么是否有配置好的又强大、又通用、拿来即用的Dashboard呢?答案是肯定的!前往 Grafana Lab - Dashboards ,输入关键词即可搜索指定Dashboard。
如上图所示,可以找到若干款以 Prometheus
作为数据源,支持Micrometer的Dashboard!下面,来演示如何使用 JVM(Micrometer)
这个Dashboard。
其他Dashboard使用方式大同小异,建议使用前先点击了解下详情,一般Dashboard中都会有说明。
-
点击
JVM(Micrometer)
进入Dashboard详情介绍页,如下图所示:如图已详细描述了该Dashboard的特性、配置。其中的
management.metrics.tags.application
,前面已经配置过了;本例也不打算演示Process memory
特性,所以micrometer-jvm-extras
怎么用也不打算引入了(这是该Dashboard作者为Micrometer提供的增强包,有兴趣的童鞋可自行点击过去研究)。细心的童鞋会发现,该页的右上角有个
4701
这是一个非常重要的数字! -
访问
http://localhost:3000
,按下图步骤操作: -
输入后即可看到类似如下的界面,选择数据源,并点击Import。
-
此时,即可看到类似如下的界面,如图所示,我们常关心的指标该Dashboard均已支持!
2.6 比较好用的Dashboard
- JVM (Micrometer)
- JVM (Actuator)
- Spring Boot Statistics ,注:该Dashboard可能有Bug,笔者未能直接测试成功,做了一些改动后才能正常显示。
以上三款是笔者亲测较为全面、好用的Dashboard,仅供参考。
告警
Grafana支持的告警渠道非常丰富,例如邮件、钉钉、Slack、Webhook等,非常实用!比较简单,各位看官自行研究下吧。
配套代码
其中 prometheus+grafana
目录已提供Docker一键部署Prometheus + Grafana的Shell。
原文出处:http://itmuch.com/spring-boot/actuator-prometheus-grafana/
来源:oschina
链接:https://my.oschina.net/u/4274967/blog/4487067