YuShan's blog YuShan's blog
首页
后端
  • Linux小记

    • Linux安装docker相关脚本
    • 使用Docker轻松安装Jenkins
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Yu and Shan

代码的搬运工
首页
后端
  • Linux小记

    • Linux安装docker相关脚本
    • 使用Docker轻松安装Jenkins
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Prometheus+Grafana+Loki 实践指南:构建高效监控系统的基础篇
    • 引言
    • 一、Prometheus 基本介绍
      • 1.1 时间序列数据库的主要优点
      • 1.2 Prometheus 主要特征
      • 1.3 Prometheus 监控原理
      • 1.4 Prometheus 配置文件六个大配置段的含义
    • 二、部署 prometheus 监控平台
      • 2.1 部署 prometheus 服务
      • 2.2 测试
  • Prometheus+Grafana+Loki 实践指南:可视化监控数据的实战篇
  • 《Prometheus+Grafana+Loki 实践指南》
Shan
2023-07-13
目录

Prometheus+Grafana+Loki 实践指南:构建高效监控系统的基础篇

# 引言

当今世界,监控是企业和开发者必不可少的一项工作。随着信息技术的发展和应用场景的不断扩大,监控系统需要不断升级和优化,以满足业务需求和技术挑战。而 Prometheus+Grafana+Loki 框架作为一种新型的监控系统,正在逐渐受到关注和应用。

Prometheus+Grafana+Loki 框架是由 Prometheus、Grafana 和 Loki 三个开源项目组成的。其中,Prometheus 是一种数据存储和查询引擎,可以帮助用户收集和处理大量的时间序列数据;Grafana 是一种数据可视化和分析工具,可以帮助用户创建和定制各种监控面板;Loki 是一种分布式日志收集和查询系统,可以帮助用户快速地检索和分析大量的日志数据。

本文的目的是介绍和教授 Prometheus+Grafana+Loki 框架的使用方法和最佳实践。具体而言,我们将深入探讨 Prometheus、Grafana 和 Loki 的特点和功能,介绍如何将它们整合起来使用,并提供一些实战演练和案例分析,以帮助读者了解如何在实际工作中应用这一框架。

在本文中,我们将提供详细的指导和建议,以帮助读者掌握 Prometheus+Grafana+Loki 框架的使用方法和技巧。我们相信,通过本文的学习和实践,读者将能够更好地应用 Prometheus+Grafana+Loki 框架,提高监控系统的效率和可靠性,促进业务的发展和创新。

# 一、Prometheus 基本介绍

Prometheus(由 go 语言开发)是一套开源的监控&报警&时间序列(按照时间排序)数据库的组合。因为 kubernetes(俗称 k8s)的流行带动了 prometheus 的发展。它可以监控主机,服务,容器,支持多种 exporter 采集数据,还支持 pushgateway 进行数据上报,Prometheus 性能足够支撑上万台规模的集群。

# 1.1 时间序列数据库的主要优点

时间序列数据库是一种专门用于存储和处理时间序列数据的数据库。时间序列数据是指按照时间顺序排列的数据,例如系统指标、日志数据、传感器数据等。

时间序列数据库的主要优点包括:

  • 高效的数据存储和查询:时间序列数据库使用压缩算法和索引技术来存储和查询数据,可以大大节省存储和查询成本。
  • 灵活的数据模型:时间序列数据库通常采用标签(labels)来标识和区分不同的数据,这使得数据模型非常灵活,可以轻松地适应不同的数据类型和场景。
  • 丰富的查询和聚合功能:时间序列数据库可以支持各种查询和聚合操作,例如范围查询、聚合查询、分组查询等,可以轻松地对大量的时间序列数据进行分析和统计。

# 1.2 Prometheus 主要特征

  • 多维度数据模型:Prometheus 使用标签(labels)来标识和区分不同的数据。这使得数据模型非常灵活,可以轻松地适应不同的数据类型和场景。
  • 灵活的查询语言:PromQL 是 Prometheus 的查询语言,支持类似 SQL 的语法和操作符。它可以轻松地对系统指标进行查询和聚合。
  • 高效的存储和查询:Prometheus 使用本地时间序列数据库来存储数据,并提供高效的查询和聚合功能。
  • 多种数据源支持:Prometheus 支持从各种数据源中收集数据,包括 HTTP、PushGateway、JMX、SNMP 等。

# 1.3 Prometheus 监控原理

Prometheus 的监控原理基于 Pull 模型,即 Prometheus Server 定期从各种数据源中拉取数据,并存储在本地时间序列数据库中。Prometheus Server 还提供了查询和警报功能,可以生成图表和警报通知。

具体来说,Prometheus 监控的流程如下:

  1. Prometheus Server 根据配置文件中的 job 和 target 配置,向各个数据源(例如 node exporter)发送 Pull 请求。
  2. 数据源收到请求后,返回当前系统的指标数据(例如 CPU 使用率、内存使用量等)。
  3. Prometheus Server 将收集到的数据存储在本地时间序列数据库中。
  4. 用户可以使用 PromQL 查询语言,对数据进行查询和聚合,并生成图表和警报通知。

# 1.4 Prometheus 配置文件六个大配置段的含义

Prometheus 的配置文件包括以下六个大配置段:

  1. global:全局配置,包括全局的标签(labels)、规则文件路径、远程写入等。
  2. rule_files:规则文件配置,指定 Prometheus Server 要加载的规则文件路径。
  3. scrape_configs:抓取目标配置,指定 Prometheus Server 要从哪些数据源中进行数据抓取。
  4. alerting:警报配置,包括警报通知方式、接收者等。
  5. remote_write:远程写入配置,指定 Prometheus Server 要将数据写入到哪些远程存储中。
  6. remote_read:远程读取配置,指定 Prometheus Server 要从哪些远程存储中读取数据。

其中,global 配置是必需的,其他配置段可根据需要进行配置。每个配置段中都包含多个配置项,具体含义可以参考 Prometheus 官方文档中的说明。

# 全局配置段
global:
  # 采集间隔
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  # 计算报警和预聚合间隔
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # 采集超时时间
  scrape_timeout: 10s
  # 查询日志,包含各阶段耗时统计
  query_log_file: /opt/logs/prometheus_query_log
  # 全局标签组
  # 通过本实例采集的数据都会叠加下面的标签
  external_labels:
    account: "huawei-main"
    region: "node1"

# Alertmanager信息段
alerting:
  alertmanagers:
    - scheme: http
      static_configs:
        - targets:
            - "localhost:9090"

# 告警、预聚合配置文件段
rule_files:
  - /etc/prometheus/rules/record.yml
  - /etc/prometheus/rules/alert.yml

# 采集配置段
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

# 远程查询段
remote_read:
  # prometheus
  - url: http://prometheus/v1/read
    read_recent: true

  # m3db
  - url: "http://m3coordinator-read:7201/api/v1/prom/remote/read"
    read_recent: true

# 远程写入段
remote_write:
  - url: "http://m3coordinator-write:7201/api/v1/prom/remote/write"
    queue_config:
      capacity: 10000
      max_samples_per_send: 60000
    write_relabel_configs:
      - source_labels: [__name__]
        separator: ;
        # 标签key前缀匹配到的drop
        regex: "(kubelet_|apiserver_|container_fs_).*"
        replacement: $1
        action: drop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# 二、部署 prometheus 监控平台

# 2.1 部署 prometheus 服务

这边我们照例使用 docker-compose 进行部署,以下是部署脚本

# 创建文件夹并授权
mkdir -p /docker/node-exporter
mkdir -p /docker/node-exporter/proc
mkdir -p /docker/node-exporter/sys
mkdir -p /docker/prometheus/
chmod 777 /docker/node-exporter
chmod 777 /docker/node-exporter/proc
chmod 777 /docker/node-exporter/sys
chmod 777 /docker/prometheus/

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
#节点监控插件
node-exporter:
  image: prom/node-exporter:latest
  container_name: exporter
  environment:
    TZ: Asia/Shanghai
  network_mode: "host"
  volumes:
    - /docker/node-exporter/proc:/host/proc:ro
    - /docker/node-exporter/sys:/host/sys:ro
    - /docker/node-exporter/:/rootfs:ro

prometheus:
  image: prom/prometheus:latest
  container_name: prometheus
  environment:
    TZ: Asia/Shanghai
  ports:
    - "9090:9090"
  volumes:
    - /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

其中 node-exporter 是节点硬件监控插件,需要安装在需要监控的服务节点上

# 2.2 测试

访问 ip:9090 查看是否启动成功

启动成功

看到这个页面说明 prometheus 启动成功了,默认监控了自己,我们来看一下监控的机器或资源

启动成功

ok,到这里我们已经成功安装 Prometheus 监控组件了,下一篇我们来讲如何使用 Grafana 图形化界面来更清晰的查看数据

编辑 (opens new window)
#Linux#Docker#Prometheus
上次更新: 2024/02/17, 06:38:40
Prometheus+Grafana+Loki 实践指南:可视化监控数据的实战篇

Prometheus+Grafana+Loki 实践指南:可视化监控数据的实战篇→

最近更新
01
Prometheus+Grafana+Loki 实践指南:可视化监控数据的实战篇
07-13
02
饥荒联机版服务器搭建教程
07-10
03
测试
07-04
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Liang HS | MIT License|
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式