Prometheus + Grafana 监控

发布于:2025-03-01 ⋅ 阅读:(14) ⋅ 点赞:(0)

Prometheus + Grafana 监控

官网介绍:Prometheus 是一个开源系统 监控和警报工具包最初由 SoundCloud 构建。自 2012 年成立以来,许多 公司和组织已经采用了 Prometheus,并且该项目具有非常 活跃的开发人员和用户社区。它现在是一个独立的开源项目 并独立于任何公司进行维护。为了强调这一点,并澄清 该项目的治理结构,Prometheus 于 2016 年加入云原生计算基金会 作为 Kubernetes 之后的第二个托管项目。

省流:Prometheus 就像小区物业的智能监控系统,能24小时盯着服务器/应用服务有没有"生病",一有问题就自动打电话通知管理员。最初是某个音乐公司开发的,现在变成全世界程序员共同维护的明星项目

Docker 安装 Prometheus

要想使用 Prometheus,首先就需要将其部署下来才行,这里选择使用部署方式是 Docker 自动化部署(默认 Docker 为安装并配置好状态,若没有配置好 Docker,请先参考文章安装好 Docker:https://blog.csdn.net/qq_73574147/article/details/133574279)

创建配置文件

创建一个 prometheus 文件夹,在其中创建一个prometheus.yml文件,并写入下面的内容

global:
  scrape_interval: 15s  # 每15秒采集一次数据

scrape_configs:
  - job_name: "prometheus"  # 监控对象名称
    static_configs:
      - targets: ["localhost:9090"]  # 监控 Prometheus 自己

拉取镜像

选择拉取官方的 prom/prometheus 镜像

image-20250227171352859

在控制台输入下面的命令(默认拉取最新版)

docker pull prom/prometheus

拉取成功之后(如图)

image-20250227171656498

执行下面的命令启动容器(注意: /path/prometheus 需换成实际路径)

docker run -d -p 9090:9090 --name prometheus -v /path/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

显示下面的界面即为创建成功

image-20250227173248199

然后用浏览器访问 http://localhost:9090,如果看到下面的 Prometheus 的 Web 界面即为启动成功

image-20250227173415855

然后点击菜单栏的 Status,再点击 Target health

image-20250227173624224

看到 Prometheus 的状态为 UP,即为正常

image-20250227173710873

监控 Docker 自身(可选)

这里需要先拉取 Node Exporter 容器镜像(采集物理机硬件数据)

docker pull prom/node-exporter

执行下面的命令启动 Node Exporter 容器

docker run -d --name node-exporter -p 9100:9100 --net="host" prom/node-exporter

在之前的 prometheus.yml 文件中添加以下内容(IP地址记得换成自己机器的IP地址)

- job_name: "docker"
  static_configs:
    - targets: ["192.168.1.11:9100"]  # 新增的监控目标

使用 Docker 重启 Prometheus 容器

docker restart prometheus

可以看到 Target Health 中 Docker 与 Prometheus 的状态都为 UP,说明已经启动成功

image-20250227210429879

如果要监听其他服务器主机的状态也是如此操作。

安装 Grafana

首先拉取 Grafana 的镜像

docker pull grafana/grafana

image-20250227211117980

启动 Grafana 容器

docker run -d -p 3000:3000 --name=grafana grafana/grafana

启动成功之后,访问地址:http://localhost:3000,用户名与密码都为 admin

如果想要单独设置密码,则在上述命令中追加一个-e GF_SECURITY_ADMIN_PASSWORD:password,password 为设置的密码

docker run -d -p 3000:3000 --name=grafana -e GF_SECURITY_ADMIN_PASSWORD=password grafana/grafana

image-20250227212115668

登录进去之后,点击 Connections->Data Source

image-20250227213603291

点击 Add data source,在里面找到 Prometheus (一般是第一个)

image-20250227213718851

也可以直接搜索

image-20250227213800115

点击 Prometheus,然后设置名称与其IP地址

image-20250227213921651

其他的配置选配(默认就行),一直往下滑,然后点击 Sava & test

image-20250227214156191

当出现下面的提示时表示已经配置完成了

image-20250227214320077

设置 Dashboard

点击右上角+号,选择Import dashboard

image-20250227221645660

关于监控面板 Dashboard 模板的素材,可以下载使用 Grafana 官方提供的,访问地址:https://grafana.com/grafana/dashboards/,通过选择对应的数据源来找到合适的面板

image-20250227221951712

因为这里使用的是 Prometheus,使用 DataSource 选择 Prometheus

然后点击 Download JSON 就会得到一个 json 文件

image-20250227223118883

然后将下载的 json 文件拖到 Import dashboard 页面中的上传框中即可

image-20250227223229585

然后选择刚才配置好的 Prometheus

image-20250227223337909

点击 import 即可

当然,如果觉得下载 JSON 文件太麻烦,并且已经注意到下载的 JSON 文件的名称,就会发现这些 dashboard 都有一个类似于 id 的标识

image-20250227223540126

这时候只需要回到Import dashboard页面,将这个“id”输入进去,点击Load就可以实现跟下载 JSON 文件一样的效果

image-20250227223653648

这里推荐几个不错的 Dashboard 模板

  • MySQL: 7362、7371、14057
  • Redis: 763、14192、14432
  • Nginx:9614、2949
  • Linux(服务器监控): 8919、9276、1860、12633

导入模板成功后效果图如下(8919):
image-20250227224027329

ID:9276

image-20250228205102887

监控 MySQL(可选)

首先执行下面的命令安装 MySQL Exporter

拉取 MySQL Exporter 镜像

docker pull prom/mysqld-exporter

创建 MySQL Exporter 容器

MySQL主机IP和MySQL账号密码需换成自己的

docker run -d -p 9104:9104 --name mysql-exporter prom/mysqld-exporter --mysqld.username=root:123456 --mysqld.address=192.168.1.11:3306

prometheus.yml 文件中添加以下内容(IP地址记得换成安装 Prometheus 机器的IP地址)

- job_name: "mysql"
  static_configs:
    - targets: ["192.168.1.11:9104"]  # 新增 MySQL 监控目标

重启 Prometheus

docker restart prometheus

打开网址 http://localhost:9090 查看 MySQL Exporter 状态是否为 UP

image-20250228205643919

然后按照上述设置 Dashboard步骤,选择设置一个 MySQL 的监控面板,如下图(ID: 14057)

image-20250228220221606

监控 Redis(可选)

跟监控 MySQL 步骤类似,先拉取 Redis Exporter 镜像

docker pull oliver006/redis_exporter

创建 Redis Exporter 容器(IP换成自己Redis主机的IP地址,密码替换为实际的密码,如果没有设置密码则把-e REDIS_PASSWORD="123456"删除即可)

docker run -d --name redis-exporter -p 9121:9121 -e REDIS_ADDR="redis://192.168.1.2:6379" -e REDIS_PASSWORD="123456" oliver006/redis_exporter

prometheus.yml 文件中添加以下内容(IP地址记得换成安装 Prometheus 机器的IP地址)

- job_name: "redis"
  static_configs:
    - targets: ["192.168.1.2:9121"]  # 新增 Redis 监控目标

重启 Prometheus

docker restart prometheus

选择设置一个 Redis 监控面板,如下图(ID: 763)

image-20250228221645983

如上,就已经完成 Prometheus + Grafana 对 MySQL 、Redis、服务器主机(Linux) 的常规指标的简单基础监控,当然,也可以诸如此类进行**“热插拔式”**的监控其他应用/服务(如Nginx等)


网站公告

今日签到

点亮在社区的每一天
去签到