搭建Prometheus+Grafana监控系统主要包括以下几个步骤:
1. **安装Prometheus**
2. **安装Grafana**
3. **配置Prometheus监控目标**
4. **导入Grafana中的Dashboard**
5. **设置Prometheus服务发现**6. **实现服务监控**
步骤1: 安装Prometheus
**以下安装步骤假设使用的是Linux系统。**
1.1 下载最新版的Prometheus:
wget https://github.com/prometheus/prometheus/releases/download/v<version>/prometheus-<version>.linux-amd64.tar.gz
请将`<version>`替换为实际的版本号。
1.2 解压下载的文件:
tar xfz prometheus-<version>.linux-amd64.tar.gz
cd prometheus-<version>.linux-amd64
1.3 配置Prometheus。
编辑`prometheus.yml`文件,添加你的监控目标。最初的配置可能看起来像这样:
global:
scrape_interval: 15s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
1.4 启动Prometheus:
./prometheus --config.file=prometheus.yml
Prometheus服务器现在应该已经在`http://localhost:9090`运行。
步骤2: 安装Grafana
2.1 添加Grafana的仓库:
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
2.2 添加GPG密钥:
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
2.3 更新apt并安装Grafana:
sudo apt-get update
sudo apt-get install grafana
2.4 启动Grafana服务:
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Grafana现在应该在`http://localhost:3000`运行(默认用户名和密码都是`admin`)。
步骤3: 配置Prometheus监控目标
3.1 监控Linux服务器基础信息使用Prometheus Node Exporter:
# 查找最新版本并下载node exporter
wget https://github.com/prometheus/node_exporter/releases/download/v<version>/node_exporter-<version>.linux-amd64.tar.gz
# 解压并启动Node Exporter
tar xvfz node_exporter-*.*-amd64.tar.gz
cd node_exporter-*.*-amd64/
./node_exporter
3.2 更新`prometheus.yml`添加Node Exporter作为监控目标:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['<server-IP>:9100']
3.3 监控关键中间件例如Redis、MySQL等,
你需要使用例如`redis_exporter`、`mysqld_exporter`等Exporter,安装并配置与Node Exporter类似。
例:mysql监控(这里演示通过docker拉取exporter镜像并启动)
1、mysql用户赋权
mysql -u用户名 -p密码
create user 'exporter'@'%' identified by '123456' with MAX_USER_CONNECTIONS 3 ;
grant process,replication client,select on *.* to 'exporter'@'%';
flush privileges
2、拉取镜像
docker pull prom/mysqld-exporter
3、启动容器
docker run -d --name mysqld_exporter \
-p 9104:9104 \
-e DATA_SOURCE_NAME="用户名:密码@(127.0.0.1:3306)/" \
prom/mysqld-exporter
4、prometheus.yml中添加配置
- job_name: mysql-11.12
static_configs:
- targets: ['host:9104']
labels:
instance: mysql-11.12
注:host替换为安装mysql_exporter的服务主机地址
5、grafana中配置mysql大盘


步骤4: 导入Grafana中的Dashboard
4.1 登录Grafana,在左侧菜单中选择“+” -> “Import”。
4.2 你可以在[Grafana Dashboards](https://grafana.com/grafana/dashboards)上找到各种资源的仪表盘,输入相应的Dashboard ID即可导入。
步餘5: 设置Prometheus服务发现
Prometheus支持多种服务发现机制,例如Kubernetes、Consul等。如果你希望对接入网络的设备进行自动发现,你需要配置相应服务发现的方式。例如:
scrape_configs:
- job_name: 'my-service-discovery'
consul_sd_configs:
- server: 'localhost:8500'
services: ['web', 'db']
上面是使用Consul作为服务发现的例子,具体配置将取决于你正在使用的服务发现工具。
步骤6:实现服务监控
一、springboot 监控 Actuator
Actuator介绍
Actuator是Spring Boot提供的应用系统监控的开源框架,它是Spring Boot体系中非常重要的组件。它可以轻松实现应用程序的监控治理,支持通过众多REST接口、远程Shell和JMX收集应用的运行情况。 Actuator的核心是端点(Endpoint),它用来监视、提供应用程序的信息,Spring Boot提供的spring-boot-actuator组件中已经内置了非常多的Endpoint(health、info、beans、metrics、httptrace、shutdown等),每个端点都可以启用和禁用。 Actuator也允许我们扩展自己的端点。通过JMX或HTTP的形式暴露自定义端点,Actuator会将自定义端点的ID默认映射到一个带/actuator前缀的URL。比如,health端点默认映射到/actuator/health。这样就可以通过HTTP的形式获取自定义端点的数据
1、项目中添加依赖(根据需求选择版本)
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
2、项目的配置文件中加入配置,暴露端点
# Actuator 管理端口
management:
endpoints:
web:
exposure:
include: "*"
注:此处可根据需求配置不同的暴露规则
# Actuator 管理端口
management.server.port=8000
#暴露 有端
management.endpoints.web.exposure.include =女
#默认情况下 有端点都不启用,此时需要按需启用端点
management.endpoints.enabled-by-default=false
#启用端点 info
management.endpoint.info.enabled=true
#启用端点 beans
management.endpoint.beans.enabled=true
#启用端点 configprops
management.endpoint.configprops.enabled=true
#启用端点 env
management.endpont.env.enabled=true
#启用端点 health
management.endpoint.health.enabled=true
#启用端点 mappings
management.endpont.mappings.enabed=true
#启用端点 shutdown
management.endpoint.shutdown.enabled=true
# Actuator 端点前缀
management.endpoints.web.base -path=/manage
#将原来的 mappings 端点的请求路径修改为 urlMappings
management.endpoints.web.path-mapping.mappings=request_mappings
# Spring MVC 视图解析器配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.Jsp
3、jenkins实现自动导入配置到prometheus.yml(借助jekins的流水线脚本实现)
略
完成以上步骤后,一个基本的Prometheus + Grafana监控系统已经完成了,可以监控服务器的基础信息和关键中间件,以及项目的运行情况,并且具有服务发现的功能。需要根据自己的需求调整配置脚本和参数,以及可能的安全设置(如防火墙和TLS设置)来确保其充分满足项目中的监控需要。
搭建Prometheus+Grafana监控系统全攻略
1385





