Prometheus + Grafana 监控

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文件,并写入下面的内容

yaml 复制代码
global:
  scrape_interval: 15s  # 每15秒采集一次数据

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

拉取镜像

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

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

powershell 复制代码
docker pull prom/prometheus

拉取成功之后(如图)

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

shell 复制代码
docker run -d -p 9090:9090 --name prometheus -v /path/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

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

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

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

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

监控 Docker 自身(可选)

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

shell 复制代码
docker pull prom/node-exporter

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

shell 复制代码
docker run -d --name node-exporter -p 9100:9100 --net="host" prom/node-exporter

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

yaml 复制代码
- job_name: "docker"
  static_configs:
    - targets: ["192.168.1.11:9100"]  # 新增的监控目标

使用 Docker 重启 Prometheus 容器

shell 复制代码
docker restart prometheus

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

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

安装 Grafana

首先拉取 Grafana 的镜像

shell 复制代码
docker pull grafana/grafana

启动 Grafana 容器

shell 复制代码
docker run -d -p 3000:3000 --name=grafana grafana/grafana

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

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

shell 复制代码
docker run -d -p 3000:3000 --name=grafana -e GF_SECURITY_ADMIN_PASSWORD=password grafana/grafana

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

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

也可以直接搜索

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

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

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

设置 Dashboard

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

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

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

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

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

然后选择刚才配置好的 Prometheus

点击 import 即可

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

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

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

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

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

ID:9276

监控 MySQL(可选)

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

拉取 MySQL Exporter 镜像

shell 复制代码
docker pull prom/mysqld-exporter

创建 MySQL Exporter 容器

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

shell 复制代码
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地址)

yaml 复制代码
- job_name: "mysql"
  static_configs:
    - targets: ["192.168.1.11:9104"]  # 新增 MySQL 监控目标

重启 Prometheus

shell 复制代码
docker restart prometheus

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

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

监控 Redis(可选)

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

shell 复制代码
docker pull oliver006/redis_exporter

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

shell 复制代码
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地址)

yaml 复制代码
- job_name: "redis"
  static_configs:
    - targets: ["192.168.1.2:9121"]  # 新增 Redis 监控目标

重启 Prometheus

shell 复制代码
docker restart prometheus

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

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

相关推荐
2302_809798321 小时前
【JavaWeb】Docker项目部署
java·运维·后端·青少年编程·docker·容器
zhojiew2 小时前
关于akka官方quickstart示例程序(scala)的记录
后端·scala
sclibingqing2 小时前
SpringBoot项目接口集中测试方法及实现
java·spring boot·后端
JohnYan3 小时前
Bun技术评估 - 03 HTTP Server
javascript·后端·bun
周末程序猿3 小时前
Linux高性能网络编程十谈|C++11实现22种高并发模型
后端·面试
ZHOU_WUYI3 小时前
Flask与Celery 项目应用(shared_task使用)
后端·python·flask
冒泡的肥皂4 小时前
强大的ANTLR4语法解析器入门demo
后端·搜索引擎·编程语言
IT_陈寒5 小时前
Element Plus 2.10.0 重磅发布!新增Splitter组件
前端·人工智能·后端
有梦想的攻城狮5 小时前
spring中的@RabbitListener注解详解
java·后端·spring·rabbitlistener