基于docker搭建Prometheus+Grafana实现可视化监控服务详解

简介:

本次主要想记录一下通过docker搭建Prometheus+Grafana的过程。测试一下监控本机linux服务器,mysql,docker各个性能运行各个指标情况。

Prometheus简述:

借用官网的介绍:
什么是普罗米修斯?
Prometheus是一个开源系统监控和警报工具包,最初由 SoundCloud构建。自 2012 年启动以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,并明确项目的治理结构,Prometheus 于 2016 年作为继Kubernetes之后的第二个托管项目加入了云原生计算基金会。

Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳以及称为标签的可选键值对一起存储。

Grafana简述:

借用官网的介绍:
为什么选择格拉法纳?
1:统一您的数据,而不是您的数据库
Grafana 不需要您将数据提取到后端存储或供应商数据库。相反,Grafana 采用独特的方法通过统一现有数据(无论其位于何处)来提供“单一管理平台”。
使用 Grafana,您可以获取任何现有数据——无论是来自 Kubernetes 集群、树莓派、不同的云服务,甚至是 Google 表格——并根据需要将其可视化,所有这些都来自一个仪表板。
2:每个人都可以看到的数据
Grafana 的构建原则是组织中的每个人都应该可以访问数据,而不仅仅是单个 Ops 人员。
通过使数据民主化,Grafana 有助于促进一种文化,在这种文化中,需要数据的人可以轻松使用和访问数据,从而有助于打破数据孤岛并赋予团队权力。
3:任何人都可以使用的仪表板
Grafana 仪表板不仅为从众多来源收集的数据赋予了深刻的意义,而且您还可以与其他团队成员共享您创建的仪表板,让您可以一起探索数据。
借助 Grafana,任何人都可以创建和共享动态仪表板以促进协作和透明度。
我们真的不是指任何人,尤其是那个谈论我们有传真机时好多了的人。
4:灵活性和多功能性
将您的任何数据转换并转换为灵活多用的仪表板。与其他工具不同,Grafana 允许您专门为您和您的团队构建仪表板。
借助高级查询和转换功能,您可以自定义面板以创建对您有实际帮助的可视化效果。

搭建前期条件:

服务器上已搭建好docker,docker-compose环境.。

最终效果:

这是最终呈现在Grafana的效果,测试了一下几个服务的呈现:本机linux,mysql,docker等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

详细搭建过程:

搭建Prometheus的目的是为了监控其他服务的运行性能各个指标情况,所以这里我们先搭建一下其他的服务。

1:搭建mysql监控

使用docker搭建mysql监控的话要拉取两个镜像,一个是mysql的镜像,另外一个是监控mysql的镜像mysqld-exporter,这个主要是用于MySQL数据库数据收集,为了搭建方便,这里我们直接使用docker-compose搭建
首先我们在服务器上指定一个文件夹,编写docker-compose.yml文件

例如:楼主在/root/data下创建docker-compose.yml文件
写入以下内容
version: '3'
services:
  mysql:
   image: mysql:5.7
   ports:
     - "3306:3306"
   environment:
     - MYSQL_ROOT_PASSWORD=123456
     - MYSQL_DATABASE=test
  mysqlexporter:
   image: prom/mysqld-exporter
   ports:
     - "9104:9104"
     environment:
     - DATA_SOURCE_NAME=root:123456@(mysql:3306)/test
这里我们可以看到指定了两个服务
第一个是mysql服务,指定了服务名称:mysql,镜像版本:mysql:5.7,
端口和宿主机映射:3306:3306,默认root用户密码:123456,创建一个测试数据库test
第二个是收集mysql数据的服务,指定了服务名称:mysqlexporter,镜像版本:
prom/mysqld-exporter,端口映射9104:9104,设置连接mysql数据库的用户名和密码root/123456连接的数据库test
保存退出,然后在当前目录下执行,即会拉取对应镜像并创建容器运行
docker-compose up -d

服务启动成功后我们可以测试一下

2:搭建本机linux服务器监控

要监控自己linux服务器的性能,要下载镜像node_exporter
拉取node_exporter 镜像

docker pull prom/node-exporter

构建容器,然后启动

docker run -d --name node-exporter  -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter

3:搭建Docker监控服务

要监控本机Docker服务数据收集,我们要下载镜像google/cadvisor
拉取google/cadvisor镜像

docker pull google/cadvisor

构建容器并启动

docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -v /dev/disk/:/dev/disk:ro -p 8080:8080 -d --name=cadvisor  google/cadvisor:latest

4:搭建Prometheus服务

拉取Prometheus的镜像

docker pull prom/prometheus

创建挂载目录,然后启动

在服务器上指定一个目录,创建prometheus.yml文件,例如我的目录指定为
/root/data/prometheus
mkdir /root/data/prometheus/prometheus.yml
vim prometheus.yml
编辑prometheus.yml,写入以下内容
global:
  scrape_interval:     60s
  evaluation_interval: 60s

scrape_configs:

  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus

  - job_name: mysqld
    static_configs:
      - targets: ['服务器公网ip地址:9104']
        labels:
          instance: mysql-exporter

  - job_name: linux
    static_configs:
      - targets: ['服务器公网ip地址:9100']
        labels:
          instance: localhost

  - job_name: cadvisor
    static_configs:
      - targets: ['服务器公网ip地址:8080']
        labels:
          instance: cAdvisor

启动Prometheus

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

我们测试一下看服务是否启动成功,是否能监控mysql,docker,本机linux
记得这里使用docker启动的服务都要开发对应的端口,不然是看不到页面噢。
输入以下地址:
http://服务器公网ip地址:9090/targets
在这里插入图片描述
可以看到成功监控了,点击其中任意一个可以看到对应详细信息
在这里插入图片描述
在prometheus上查看各个服务监控的指标情况还是不够直观,我们还是习惯以图表的方式呈现。接下来我们来搭建Grafana服务,实现可视化界面监控。

5:搭建Grafana服务

拉取Grafana镜像

docker pull grafana/grafana

创建挂载目录,然后启动

mkdir  /root/data/grafana-storage
chmod 777 -R /root/data/grafana-storage
编辑文件夹权限,因为grafana用户会在这个目录写入文件,这里我们设置777即所有权限,
不设置后面启动Grafana会报错的显示GF_PATHS_DATA='/var/lib/grafana' is not writable.即没有写入数据的权限,所以这里我们先设置好

docker run -d --name grafana  -p 3000:3000 --name=grafana -v /root/data/grafana-storage:/var/lib/grafana grafana/grafana

启动成功后我们访问Grafana的界面
访问url:
http://服务器公网ip地址:3000/
默认会先跳转到登录页面,默认的用户名和密码都是admin
登录之后,它会要求你重置密码。
密码设置完成之后,就会跳转到首页
在这里插入图片描述
我们首先设置一下数据源
点击Setting——Add data source
在这里插入图片描述
搜索Prometheus,点击进入详情设置页面
在这里插入图片描述
在这里插入图片描述
设置Prometheus数据源,名字和对应ip,
这里ip可以使用docker对外暴露的ip,可以使用以下命令查看
docker inspect prometheus | grep IPAddress
也可以使用服务器公网ip
设置完成后点击保存
在这里插入图片描述
出现绿色显示成功。
接下来我们导入各个服务的dashboard界面源
在这里插入图片描述
输入你想监控面板的id,点击load,然后保存。
在这里插入图片描述
mysql监控模板id为7362
本机linux服务器监控面板id为8919,以相同方式导入即可
本机docker容器监控面板id为179,以相同方式导入即可
其他更多的监控面板可以去Grafana的官网上看
对应ip地址链接:https://grafana.com/grafana/dashboards
保存后我们在首页上选择某个监控面板就可以查看了。
另外服务刚开始监控时是没有很多数据显示的,你可以搭建成功后隔断时间看效果会比较明显。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:

通过Prometheus+Grafana我们基本实现了监控以上服务,而且通过上面的界面我们可以看到Grafana的监控界面还是做得比较美观的。我们还可以将我们微服务中各个服务模块的监控都以上面的方式呈现,后面我也会写一期博客记录一下。另外Prometheus,Grafana这些框架其实还有很多的功能,这个自己有兴趣的可以自己去看看。楼主这里只是简要搭建Demo测试。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zwhdlb

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

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

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

打赏作者

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

抵扣说明:

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

余额充值