搭建Prometheus+Grafana监控系统,实现项目监控、中间件监控和自动发现等功能

搭建Prometheus+Grafana监控系统全攻略

搭建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设置)来确保其充分满足项目中的监控需要。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aLearnerForJAVA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值