Linux进阶 | Docker Swarm+Prometheus+Grafana实现web服务集群的监控

 创作不易,来了的客官点点关注,收藏,订阅一键三连❤😜  



前言

运维之基础——Linux。我是一个即将毕业的大学生,超超。如果你也在学习Linux,不妨跟着萌新超超一起学习Linux,拿下Linux,一起加油,共同努力,拿到理想offer!


系列文章

Linux进阶 | 实现负载均衡高可用(LB+HA)Web服务 

Linux进阶 | ❤Docker+NFS+Volume实现数据一致性❤

Linux进阶 | 超详细全方面的Docker Swarm Web集群介绍与部署!



概述

本期内容为Docker第八期,通过本期内容将会掌握Prometheus的基本架构的使用以及grafana的简单使用。


目录

前言

系列文章

概述

超超Docker学习思维导图

 何为Prometheus

Prometheus的定义

Prometheus的主要特点

Prometheus的组成

Prometheus的架构

Prometheus适用场景

Prometheus不适用场景

Prometheus的使用

方法一:使用容器安装

方式二:源码安装

在被监控的客户机上安装exporter

什么是exporter

以node_exporter的安装部署为例

grafana的使用

grafana是什么

grafana的安装部署


超超Docker学习思维导图

 何为Prometheus

Prometheus的定义

Prometheus 属于一站式监控告警平台,依赖少,功能齐全。 Prometheus 支持对云的或容器的监控,其他系统主要对主机监控。 Prometheus 数据查询语句表现力更强大,内置更强大的统计函数。 Prometheus 在数据存储扩展性以及持久性上没有 InfluxDB,OpenTSDB,Sensu 好。

Prometheus服务,可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并对这些数据运行规则,以汇总和记录现有数据中的新时间序列,或生成警报Grafana或其他API使用者可用于可视化收集的数据。

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

Prometheus的主要特点

  • 一个多维数据模型,具有由指标名称和键/值对标识的时间序列数据
  • PromQL,一种利用这种维度的灵活查询语言
  • 不依赖分布式存储;单个服务器节点是自治的
  • 时间序列收集通过 HTTP 上的拉模型发生
  • 通过中间网关支持推送时间序列
  • 通过服务发现或静态配置发现目标
  • 多种图形和仪表板支持模式

Prometheus的组成

Prometheus 生态系统由多个组件组成,其中许多是可选的:

  • 抓取和存储时间序列数据的主要Prometheus服务器
  • 用于检测应用程序代码的客户端库
  • 支持短期工作的推送网关
  • HAProxy、StatsD、Graphite 等服务的专用出口商。
  • 一个警报管理器来处理警报
  • 各种支持工具

大多数 Prometheus 组件都是用Go编写的,这使得它们易于构建和部署为静态二进制文件。

Prometheus的架构

exporter可以理解为客户机的一个程序,用来专门收集客户机的数据,发送给Prometheus服务器

pull metrics拉取数据,Prometheus server拉取数据

TSDB时间序列数据库

short-lived jobs短时间任务

Pushgateway短时间运行的程序可以主动将自己的数据push到pushgateway里存放,Prometheus server会在pushgateway拉取数据。

service discovery

PromQL:Prometheus Query language,Prometheus时序数据据库里的查询语言。

Grafana:一个图形绘制工具

pullpush哪个好点?

对于数据实时性,push方式更好地获取实时数据

服务器和网络的负载,可控性而言,pull更好

Prometheus适用场景

Prometheus非常适合记录任何纯数字时间序列。它既适用于面向服务器等硬件指标的监控,也适合于高度动态的面向服务的体系结构的监视。 在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。

Prometheus的设计旨在提

  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
要使用 `docker_sd_config` 监控 Docker 集群,需要在 Prometheus 的配置文件中设置相应的服务发现规则。以下是一个示例配置文件,用于监控运行在 Docker 集群中的 Node.js 应用程序: ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'nodejs-app' metrics_path: '/metrics' file_sd_configs: - files: - /etc/prometheus/targets.json refresh_interval: 5m relabel_configs: - source_labels: [__meta_docker_container_label_com_docker_swarm_service_name] regex: '(.+)' target_label: job replacement: '$1' - source_labels: [__meta_docker_container_label_com_docker_swarm_task_id] regex: '(.+)' target_label: instance replacement: '$1' - source_labels: [__address__, __meta_docker_container_label_com_docker_swarm_task_id] regex: '([^:]+)(?::\d+)?' target_label: __address__ replacement: '$1:3000' - source_labels: [__meta_docker_container_label_com_docker_swarm_service_name] regex: '(.+)' target_label: service replacement: '$1' ``` 在上面的配置文件中,`job_name` 是 Prometheus 的作业名称,`metrics_path` 是应用程序的指标路径。`file_sd_configs` 是文件服务发现配置,指定了用于存储应用程序地址信息的 JSON 文件路径。`relabel_configs` 是标签重写配置,用于将 Docker 元数据转换为 Prometheus 标签。 注意,上面的示例配置文件假设 Node.js 应用程序运行在容器的 3000 端口上。如果你的应用程序运行在不同的端口上,请相应地更改标签重写配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chaochao️

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

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

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

打赏作者

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

抵扣说明:

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

余额充值