侧边栏壁纸
博主头像
小周的知识站 博主等级

行动起来,活在当下

  • 累计撰写 80 篇文章
  • 累计创建 12 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

Docker部署Prometheus

Administrator
2024-08-14 / 0 评论 / 0 点赞 / 37 阅读 / 0 字

1 Prometheus概述

Prometheus概述

Prometheus(普罗米修斯)基于Go语言开发,是一套开源且免费的监控系统。

Prometheus于2016年加入CNCF(云原生基金会)成为继Kubernetes之后的第二个托管项目,目前主要应用在云原生与容器领域的监控解决方案。

Prometheus使用时序数据库TSDB(Time Series Database)存储指标数据,既指标信息与记录的时间戳一起存储的特点。

官网地址:https://Prometheus.io

项目托管:https://github.com/prometheus

2 Prometheus特点

作为新一代的监控系统框架,Prometheus具备以下特点:

  • 基于HTTP的 pull(拉取)方式采集指标数据,利用TSDB(时序数据库)存储指标数据

  • PromQL 作为TSDB数据库的灵活查询语言,可完成复杂的查询操作

  • PushGateway作为Prometheus的代理节点,可用于分布式监控

  • 可通过配置文件与动态发现规则发现监控目标

  • 提供web界面图形化数据展示,支持第三方数据展示(如:Grafana)

3 Prometheus架构

4 Prometheus部署

4.1 下载Prometheus镜像

[root@localhost ~]# docker search prometheus
[root@localhost ~]# docker pull prom/prometheus

4.2 创建数据卷目录

[root@localhost ~]# mkdir /prom

4.3 创建容器拷贝Prometheus配置文件

[root@localhost ~]# docker run -id --name=prom prom/prometheus
[root@localhost ~]# docker cp prom:/etc/prometheus/prometheus.yml /prom

4.4 删除容器

[root@localhost ~]# docker rm -f prom

4.5 创建Prometheus容器并挂载数据卷

[root@localhost ~]# docker run -id --name=prom -p 9090:9090 \
-v /prom/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus

浏览器访问Prometheus:http://本机IP地址:9090

4..6 下载node-exporter用于获取主机指标数据

[root@localhost ~]# docker pull prom/node-exporter

创建node-exporter容器

[root@localhost ~]# docker run -id --name=node-export -p 9100:9100 prom/node-exporter

4.7 修改Prometheus.yml配置文件定义监控对象

[root@localhost ~]# vim /prom/prometheus.yml 
...
  - job_name: "node-exporter"
    static_configs:
      - targets: ["192.168.0.24:9100"]

重启Prometheus

[root@localhost ~]# docker restart prom

重启后通过Web页面查看监控对象是否加入监控。

5 Docker部署Grafana

5.1 Grafana介绍

Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计 ,并带有报警功能。

官网: https://grafana.com

5.2 Grafana特点

可视化:快速和灵活的客户端图形具有多种选项。面板插件为许多不同的方式可视化指标和日志。

报警:可视化地为最重要的指标定义警报规则。Grafana将持续评估它们,并发送通知。

通知:警报更改状态时,它会发出通知。接收电子邮件通知。

动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。

混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。

注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。

过滤器:过滤器允许您动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。


5.3 Grafana部署

创建grafana容器

[root@localhost ~]# docker run -id --name=grafana -p 3000:3000 grafana/grafana

访问grafana添加数据源与监控模板:http://本机IP地址:3000

6 Docker部署Cadvisor

Cadvisor是由Google(谷歌)公司开发的一款开源的容器度量和指标数据可视化系统,专门用于获取容器内的指标数据,它被内嵌到k8s中作为k8s的监控组件。

具体部署可参考:https://github.com/google/cadvisor

下载cadvisor镜像

[root@localhost ~]# docker pull google/cadvisor

创建cadvisor容器

[root@localhost ~]# docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8888:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor

Cadvisor为prometheus提供了时序数据格式,该格式为prometheus识别的格式。

访问cadvisor:http://本地IP地址:8888

修改promethes.yml文件添加cadvisor为监控对象

[root@localhost ~]# vim /prom/prometheus.yml
...
​
  - job_name: "docker"
    static_configs:
      - targets: ["192.168.0.24:8888"]

重启prometheus容器

[root@localhost ~]# docker restart prom

为grafana导入容器监控模板,具体模板可参考地址:https://grafana.com/grafana/dashboards/?search=docker

7 如何监控其它主机的数据?

和监控本机的策略一样,我们只需要在Prometheus的配置文件中添加需要监控的主机的IP地址+端口号即可,然后重启Prometheus容器。

如下图所示:

1、容器数据面板

2、节点数据面板

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区