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等)

相关推荐
小翰子_10 分钟前
Spring Boot整合Sharding-JDBC实现日志表按月按周分表实战
java·spring boot·后端
踏浪无痕1 小时前
SQLInsight:从JDBC底层到API调用的零侵入SQL监控方案
数据库·后端·开源
superman超哥2 小时前
Rust HashSet与BTreeSet的实现细节:集合类型的底层逻辑
开发语言·后端·rust·编程语言·rust hashset·rust btreeset·集合类型
superman超哥3 小时前
Rust String与&str的内部实现差异:所有权与借用的典型案例
开发语言·后端·rust·rust string·string与str·内部实现·所有权与借用
愈努力俞幸运3 小时前
rust安装
开发语言·后端·rust
踏浪无痕3 小时前
JobFlow 负载感知调度:把任务分给最闲的机器
后端·架构·开源
UrbanJazzerati3 小时前
Python自动化统计工具实战:Python批量分析Salesforce DML操作与错误处理
后端·面试
我爱娃哈哈3 小时前
SpringBoot + Seata + Nacos:分布式事务落地实战,订单-库存一致性全解析
spring boot·分布式·后端
nil4 小时前
记录protoc生成代码将optional改成omitepty问题
后端·go·protobuf
superman超哥4 小时前
Rust 范围模式(Range Patterns):边界检查的优雅表达
开发语言·后端·rust·编程语言·rust范围模式·range patterns·边界检查