开始搭建之前先来一张prometneus生态的官方架构图
官方文档:Prometheus
提前是机器已经装好Docker服务,安装有docker-compose编排工具
IP:10.28.19.214
项目中配置prometheus, pom.xml中引入jar
springboot版本号为2.5.14,与prometheus下面的版本号是OK的。
<dependency>
<groupId>io.micrometergroupId>
<artifactId>micrometer-registry-prometheusartifactId>
<version>1.7.12version>
dependency>
<dependency>
<groupId>io.github.mweirauchgroupId>
<artifactId>micrometer-jvm-extrasartifactId>
<version>0.2.0version>
dependency>
服务的配置文件里增加开启springboot admin监控的配置,如下:
management:
endpoints:
web:
exposure:
include: "*"
metrics:
tags:
application: ${spring.application.name}
设置http请求免鉴权认证,这里集成的是security
修改WebSecurityConfig.java
中configure
方法,添加/actuator/**
地址,设置为白名单
@Override
public void configure(WebSecurity web) {
web
.ignoring()
.antMatchers(
"/doc.html",
"/swagger-resources/configuration/ui",
"/swagger*",
"/favicon.ico",
"/**/*.css",
"/**/*.js",
"/**/*.png",
"/**/*.gif",
"/v2/**",
"/**/*.ttf",
"/actuator/**"
);
}
prometheus
、grafana
规划安装在/opt/monitor
目录下
创建安装目录:
mkdir -p /opt/monitor/{prometheus,grafana}
mkdir -p /opt/monitor/grafana/{config,provisioning/datasources}
创建好的目录结构如下:
/opt/monitor/
├── grafana
│ ├── config
│ └── provisioning
│ └── datasources
└── prometheus
创建docker编排文件:
在/opt
目录下创建prometheus、grafana的安装的docker compose编排文件
(直接执行下面命令)
cat << \EOF > /opt/monitor/prometheus-compose.yml
version: "2"
services:
prometheus:
image: prom/prometheus:v2.42.0
container_name: 'prometheus'
environment:
- TZ=Asia/Shanghai
ports:
- '9090:9090'
volumes:
# 映射prometheus的配置文件
- /opt/monitor/prometheus/:/etc/prometheus/
# 同步容器与宿主机的时间,这个非常重要,如果时间不一致,会导致prometheus抓不到数据
- /etc/localtime:/etc/localtime:ro
grafana:
image: grafana/grafana:9.3.6
container_name: 'grafana'
ports:
- '3000:3000'
volumes:
# grafana报警邮件配置
- /opt/monitor/grafana/config/grafana.ini:/etc/grafana/grafana.ini
# 配置grafana的prometheus数据源
- /opt/monitor/grafana/provisioning/:/etc/grafana/provisioning/
- /etc/localtime:/etc/localtime:ro
env_file:
# grafana登录配置
- /opt/monitor/grafana/config.monitoring
depends_on:
# grafana需要在prometheus之后启动
- prometheus
EOF
创建prometheus配置文件:
prometheus.yml
,内容如下:
cat << \EOF > /opt/monitor/prometheus/prometheus.yml
global: #全局配置
scrape_interval: 10s #全局定时任务抓取性能数据间隔
scrape_configs: #抓取性能数据任务配置
- job_name: 'aplus-profile' #抓取订单服务性能指标数据任务,一个job下可以配置多个抓紧的targets,多个实例机器
scrape_interval: 5s #每5s抓取一次
metrics_path: '/aplus-profile/actuator/prometheus' #抓取的数据url
static_configs:
- targets: ['10.6.1.163:18095','10.6.1.163:28095'] #抓取的服务器地址
labels:
application: 'aplus-profile-label' #抓取任务标签
- job_name: 'prometheus' #抓取prometheus自身性能指标数据任务
scrape_interval: 5s
static_configs:
- targets: ['10.28.19.214:9090']
EOF
prometheus.yml
中的metrics_path
参数要注意 ,如果应用有上下文地址,一定要加上。
注意个细节,这里一定要先验证一下节点的监控是否真的已开启
http://10.6.1.163:18095/aplus-profile/actuator/prometheus
http://10.6.1.163:28095/aplus-profile/actuator/prometheus
创建grafana config.monitoring文件:
创建grafana config.monitoring
文件,内容如下:
(直接执行下面命令)
cat << \EOF > /opt/monitor/grafana/config.monitoring
GF_SECURITY_ADMIN_PASSWORD=admin
GF_USERS_ALLOW_SIGN_UP=false
EOF
GF_SECURITY_ADMIN_PASSWORD
是grafana管理界面的登录用户密码,用户名是admin;
GF_USERS_ALLOW_SIGN_UP
代表grafana管理界面是否允许注册,默认不允许;
创建数据库文件:
在/opt/grafana/provisioning/datasources
目录下新建文件datasource.yml
,内容如下:
(直接执行下面命令)
cat << \EOF > /opt/monitor/grafana/provisioning/datasources/datasource.yml
# config file version
apiVersion: 1
deleteDatasources: #如果之前存在name为Prometheus,orgId为1的数据源先删除
- name: Prometheus
orgId: 1
datasources: #配置Prometheus的数据源
- name: Prometheus
type: prometheus
access: proxy
orgId: 1
url: http://10.28.19.214:9090 #在相同的docker compose下,可以直接用prometheus服务名直接访问
basicAuth: false
isDefault: true
version: 1
editable: true
EOF
** 创建grafana.ini文件:**
在/opt/monitor/grafana/config
目录下创建文件grafana.ini
,内容如下:
cat << \EOF > /opt/monitor/grafana/config/grafana.ini
#################################### SMTP / Emailing ##########################
# 配置邮件服务器
[smtp]
enabled = true
# 发件服务器
host = smtp.sina.com:25
# smtp账号
user = [email protected]
# smtp 授权码,授权码获取请参看课上视频演示
password = xxx
# 发信邮箱
from_address = [email protected]
# 发信人
from_name = message_notice # 注意此处不能是中文,否则报错,应该有配置编码的地方,目前没发现
EOF
用docker compose启动grafana:
docker-compose -f /opt/monitor/prometheus-compose.yml up -d
访问 prometheus页面:http://10.28.19.214:9090/targets,查看aplus-profile
的State,为UP
则 代表正常。
访问grafana页面:http://10.28.19.214:3000 用户名为admin,密码为admin。
首次登录会提示修改密码,密码不要修改成admin,否则视为没有修改密码,下次登录还会提示修改密码。
如果忘记grafana登录密码怎么办?
grafana有方法重置密码,步骤如下:
先进入grafana容器内
docker exec -it grafana bash
进入指定位置,将admin
账号重置密码为admin
cd /usr/share/grafana/bin
./grafana-cli admin reset-admin-password admin
Grafana官方Dashboard模板
登录grafana后
依次按下面步骤配置
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
CentOS8搭建nfs服务
k8s一键安装redis单机版
k8s一键安装mysql8单机版
Docker制作springboot运行应用镜像
k8s部署springboot应用
zookeeper集群安装
Nginx日志切割
Elasticsearch单机版本安装
Elasticsearch集群安装
springboot集成prometheus+grafana
安装Docker及学习
RabbitMQ集群安装