springboot集成prometheus+grafana

springboot集成prometheus+grafana

开始搭建之前先来一张prometneus生态的官方架构图

prometneus生态官方架构图

官方文档:Prometheus

1.环境准备

提前是机器已经装好Docker服务,安装有docker-compose编排工具

IP:10.28.19.214

2.工程配置

项目中配置prometheus, pom.xml中引入jar

springboot版本号为2.5.14,与prometheus下面的版本号是OK的。

<!-- 集成micrometer,将监控数据存储到prometheus -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.7.12</version>
</dependency>
<!-- 用于进程内存使用图表 -->
<dependency>
    <groupId>io.github.mweirauch</groupId>
    <artifactId>micrometer-jvm-extras</artifactId>
    <version>0.2.0</version>
</dependency>

服务的配置文件里增加开启springboot admin监控的配置,如下:

management:
  endpoints:
    web:
      exposure:
        include: "*"
  metrics:
    tags:
      application: ${
    
    spring.application.name}

设置http请求免鉴权认证,这里集成的是security

修改WebSecurityConfig.javaconfigure方法,添加/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/**"
        );

}

2.服务安装

prometheusgrafana规划安装在/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

3.配置Dashboard

Grafana官方Dashboard模板

登录grafana后

依次按下面步骤配置

  • 添加数据库
    grafana-1-add-database.png
    grafana-2-add-prometheus.png

  • 添加Grafana Dashboard,这里选择4701的JVM (Micrometer) 模板
    4701模板
    grafana-3-import-dashboard-template.png

  • 导入Dashboard模板后,这里一定要选择应用
    grafana-4-import-select-app.png

  • 然后就能看到Dashboard效果
    grafana-5-view.png

4.引用 Reference

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集群安装
Docker安装Mysql5.7.31
ELK安装
Docker安装ELK

猜你喜欢

转载自blog.csdn.net/wangxin_wangxin/article/details/128905651