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 镜像
在控制台输入下面的命令(默认拉取最新版)
docker pull prom/prometheus
拉取成功之后(如图)
执行下面的命令启动容器(注意: /path/prometheus 需换成实际路径)
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 容器镜像(采集物理机硬件数据)
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,说明已经启动成功
如果要监听其他服务器主机的状态也是如此操作。
安装 Grafana
首先拉取 Grafana 的镜像
docker pull grafana/grafana
启动 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
登录进去之后,点击 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 镜像
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
然后按照上述设置 Dashboard
步骤,选择设置一个 MySQL 的监控面板,如下图(ID: 14057)
监控 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)
如上,就已经完成 Prometheus + Grafana 对 MySQL 、Redis、服务器主机(Linux) 的常规指标的简单基础监控,当然,也可以诸如此类进行**“热插拔式”**的监控其他应用/服务(如Nginx等)