监控-Prometheus02-安装并启动

1、使用二进制包安装Prometheus

1、部署环境

  • 系统环境
    • 10.1.1.11:CentOSLinuxrelease7.7.1908(Core),k8s-master,Prometheus
    • 10.1.1.12:CentOSLinuxrelease7.7.1908(Core),k8s-node1
    • 10.1.1.13:CentOSLinuxrelease7.7.1908(Core),k8s-node2
  • 软件版本
    • prometheus:2.36.2

2、下载Prometheus

下载地址:https://prometheus.io/download/
安装包:prometheus-2.36.2.linux-amd64.tar.gz

3、安装Prometheus

]# mkdir /apps/
]# tar zvfx prometheus-2.36.2.linux-amd64.tar.gz -C /apps/
]# ln -s /apps/prometheus-2.36.2.linux-amd64/ /apps/prometheus

]# chown -R root:root /apps/prometheus/
  • 查看prometheus目录
]# ls -l /apps/prometheus/
总用量 203048
drwxr-xr-x 2 3434 3434        38 6月  20 21:27 console_libraries
drwxr-xr-x 2 3434 3434       173 6月  20 21:27 consoles
drwxr-xr-x 4 root root        70 10月 12 14:26 data
-rw-r--r-- 1 3434 3434     11357 6月  20 21:27 LICENSE
-rw-r--r-- 1 3434 3434      3773 6月  20 21:27 NOTICE
-rwxr-xr-x 1 3434 3434 108069824 6月  20 21:24 prometheus
-rw-r--r-- 1 3434 3434       934 6月  20 21:27 prometheus.yml
-rwxr-xr-x 1 3434 3434  99826736 6月  20 21:26 promtool
  • 检查prometheus版本
]# /apps/prometheus/prometheus --version
prometheus, version 2.36.2 (branch: HEAD, revision: d7e7b8e04b5ecdc1dd153534ba376a622b72741b)
  build user:       root@f051ce0d6050
  build date:       20220620-13:21:35
  go version:       go1.18.3
  platform:         linux/amd64

4、配置unit文件

]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus server daemon
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/apps/prometheus/prometheus \
  --config.file=/apps/prometheus/prometheus.yml \
  --storage.tsdb.path=/apps/prometheus/data \
  --storage.tsdb.retention.time=15d \
  --web.console.templates=consoles \
  --web.console.libraries=console_libraries \
  --web.max-connections=512 \
  --web.external-url=http://10.1.1.11:9090 \
  --web.listen-address=0.0.0.0:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target
  • prometheus命令的参数:
    • --config.file="prometheus.yml":指定Prometheus的配置文件。
    • --web.listen-address="0.0.0.0:9090":监听UI、API和遥测的地址。
    • --web.config.file="":[EXPERIMENTAL]启用TLS或鉴权的配置文件路径。
    • --web.read-timeout=5m:在超时读取请求和关闭空闲连接之前的最大持续时间。
    • --web.max-connections=512:最大并发连接数。
    • --web.external-url=<URL>:Prometheus对外可访问的URL(例如,如果Prometheus是通过反向代理提供服务的)。用于生成与Prometheus本身的相对和绝对链接。如果URL有路径部分,它将被用于Prometheus服务的所有HTTP端点的前缀。如果省略,相关的URL组件将自动派生。
    • --web.route-prefix=<path>:web端点内部路由的前缀。默认为--web.external-url的路径。
    • --web.user-assets=<path>:静态资产目录的路径,可在/user
    • --web.enable-lifecycle:通过HTTP请求启用关机和重新加载。
    • --web.enable-admin-api:为管理控制操作启用API端点。
    • --web.enable-remote-write-receiver:启用API端点接受远程写请求。
    • --web.console.templates="consoles":控制台模板的目录,可在/consoles获得。
    • --web.console.libraries="console_libraries":控制台库的目录。
    • --web.page-title="Prometheus Time Series Collection and Processing Server" Prometheus实例的文档标题。
    • --web.cors.origin=".*":用于CORS起源的正则表达式。它是完全固定的。Example: 'https?://(domain1|domain2)\.com'
    • --storage.tsdb.path="data/":指定指标数据的存储路径。仅与服务器模式一起使用。
    • --storage.tsdb.retention.time=STORAGE.TSDB.RETENTION.TIME:历史数据最大保留时间。当这个标志被设置时,它会覆盖"storage.tsdb.retention"。如果既没有storage.tsdb.retention也没有storage.tsdb.retention.size"。保留时间默认为15d。支持单位:y, w, d, h, m, s, ms.仅与服务器模式使用。
    • --storage.tsdb.retention.size=STORAGE.TSDB.RETENTION.SIZE:块可以存储的最大字节数。需要设置单位,支持的单位有:B、KB、MB、GB、TB、PB、EB。例:“512 mb”。基于2的幂,所以1KB是1024B。仅与服务器模式一起使用。
    • --storage.tsdb.no-lockfile:不要在数据目录下创建锁文件。仅与服务器模式一起使用。
    • --storage.tsdb.allow-overlapping-blocks:允许重叠块,从而支持垂直压缩和垂直查询合并。仅与服务器模式一起使用。
    • --storage.tsdb.head-chunks-write-queue-size=0:将头块写入磁盘以进行m映射的队列的大小。为0时,完全禁用队列。实验。仅与服务器模式一起使用。
    • --storage.agent.path="data-agent/":指标存储的基本路径。仅与代理模式一起使用。
    • --storage.agent.wal-compression:压缩代理WAL。仅与代理模式一起使用。
    • --storage.agent.retention.min-time=STORAGE.AGENT.RETENTION.MIN-TIME:当WAL被截断时,在考虑删除之前可以考虑最小年龄样本。仅与代理模式使用。
    • --storage.agent.retention.max-time=STORAGE.AGENT.RETENTION.MAX-TIME:当WAL被截断时,在强制删除之前可以使用最大年龄样本。仅与代理模式使用。
    • --storage.agent.no-lockfile:不要在数据目录下创建锁文件。仅与代理模式一起使用。
    • --storage.remote.flush-deadline=<duration>:在关机或配置重新加载时,要等待多长时间冲洗样本。
    • --storage.remote.read-sample-limit=5e7:在单个查询中,通过远程读取接口返回的最大样本总数。0表示无限制。对于流响应类型,此限制将被忽略。仅与服务器模式一起使用。
    • --storage.remote.read-concurrent-limit=10:最大并发远程读调用数。0表示无限制。仅与服务器模式一起使用。
    • --storage.remote.read-max-bytes-in-frame=1048576:在编组之前,单个帧中用于流远程读响应类型的最大字节数。注意客户端可能也有帧大小的限制。默认为protobuf推荐的1MB。仅与服务器模式一起使用。
    • --rules.alert.for-outage-tolerance=1h:恢复“for”警报状态所需忍受普罗米修斯中断的最长时间。仅与服务器模式一起使用。
    • --rules.alert.for-grace-period=10m:警报和恢复“for”状态之间的最短间隔时间。仅对配置的“for”时间大于宽限期的警报进行维护。仅与服务器模式一起使用。
    • --rules.alert.resend-delay=1m:在向Alertmanager重发警报之前等待的最短时间。仅与服务器模式一起使用。
    • --alertmanager.notification-queue-capacity=10000:挂起的Alertmanager通知队列的容量。仅与服务器模式一起使用。
    • --query.lookback-delta=5m:表达式计算和联合期间检索度量的最大回看持续时间。仅与服务器模式一起使用。
    • --query.timeout=2m:查询在中止前可能需要的最长时间。仅与服务器模式一起使用。
    • --query.max-concurrency=20:并发执行的最大查询数。仅与服务器模式一起使用。
    • --query.max-samples=50000000:单个查询可以加载到内存中的最大样本数量。注意,如果查询试图将更多的样本加载到内存中,则会失败,因此这也限制了查询可以返回的样本数量。仅与服务器模式一起使用。
    • --enable-feature= ...:用逗号分隔要启用的特性名称。有效选项:agent, exemplar-storage, expand-external-labels, memory-snapshot-on-shutdown, promql-at-modifier, promql-negative-offset, promql-per-step-stats, remote-write-receiver (DEPRECATED), extra-scrape-metrics, new-service-discovery-manager, auto-gomaxprocs。See https://prometheus.io/docs/prometheus/latest/feature_flags/ for more details.
    • --log.level=info:只记录具有给定严重性或以上级别的消息。One of: [debug, info, warn, error]
    • --log.format=logfmt:日志信息的输出格式。One of: [logfmt, json]

5、启动Prometheus

//通知systemd重新加载配置文件
]# systemctl daemon-reload

]# systemctl enable prometheus.service
]# systemctl start prometheus.service

]# systemctl status prometheus.service

6、验证Prometheus是否安装成功

  • 通过浏览器使用Prometheus Web UI.
    • http://10.1.1.11:9090/
  • 打开表达式浏览器。
    • http://10.1.1.11:9090/graph
  • 查看prometheus服务器本身提供的指标(Prometheus本身是自带导出器(exporter)的,现在可以在Web UI中查看exporter采集到具体数据)。
    • http://10.1.1.11:9090/metrics
  • 查看Targets信息(默认仅对Prometheus本机进行监控)
    • http://10.1.1.11:9090/targets

2、prometheus.yml文件

2.1、配置Prometheus.yml文件

  • Prometheus通过YAML文件来配置。
  • 当运行prometheus二进制文件时,会指定一个配置文件。Prometheus自带默认的配置文件prometheus.yml(在压缩包中)。
  • 默认配置文件有4个YAML块:global、alerting、rule_files和scrape_configs。
  • 配置说明:https://prometheus.io/docs/prometheus/latest/configuration/configuration/
//已从配置文件中删除了一些注释。默认文件可能会发生变化,因此与你的默认配置文件可能不完全相同。
]# cat /apps/prometheus/prometheus.yml 
global:
  scrape_interval: 15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

1、global

  • 配置文件的第一部分是global,它包含了控制Prometheus服务器行为的全局配置
  • scrape_interval:用来指定到应用程序或服务抓取数据的时间间隔(默认60s)。时间序列的颗粒度
    • 在从特定位置收集指标时,有可能会覆盖全局抓取间隔。强烈建议不要这么做!
      • 在服务器上保持一个全局抓取间隔,可以确保所有时间序列具有相同的颗粒度,并且可以组合在一起计算。
      • 如果使用了不同的数据间隔来收集数据时,则可能产生不合逻辑的结果。
    • 注意,强烈建议仅设置抓取间隔为全局参数以保持颗粒度一致
  • evaluation_interval:用来指定Prometheus评估规则的频率(默认60s)。
    • 目前主要有两种规则:记录规则(recording rule)和警报规则(alerting rule)。
      • 记录规则:允许预先计算使用频繁且开销大的表达式,并将结果保存为一个新的时间序列数据。
      • 警报规则:允许定义警报条件。

2、alerting

  • 配置文件的第二部分是alerting,它用来设置Prometheus的告警
  • 告警是由Alertmanager工具进行管理的。Alertmanager是一个可以集群化的独立告警管理工具。
  • 在默认配置中,alerting部分包含服务器的告警配置,alertmanagers块会列出Prometheus服务器使用的每个Alertmanager,static_configs块表示手动在targets数组中配置的Alertmanager。
  • Prometheus还支持Alertmanager的服务发现功能。例如,你可以通过查询外部源(如Consul服务器)来返回可用的Alertmanager列表,而不是单独指定每个Alertmanager。

3、rule_files

  • 配置文件的第三部分是rule_files,它用来指定包含记录规则或告警规则的文件列表。

4、scrape_configs

  • 配置文件的最后一部分是scrape_configs,用来指定Prometheus抓取的所有目标。
  • Prometheus将它抓取的指标的数据源称为端点(endpoint)。
    • 为了抓取这些端点的数据,Prometheus定义了一个目标(target),这个目标里包含的信息是抓取数据所必需的,比如用到的标签、建立连接所需的身份验证,或者其他定义数据抓取的信息。
    • 若干目标构成的组称为作业(job)。
      • 作业里每个目标都有一个名为实例(instance)的标签,用来唯一标识这个目标。
  • 默认配置中定义了一个作业prometheus,它的static_configs参数部分列出了抓取的目标,这些特定的目标被单独列出来,而不是通过自动服务发现。你也可以将静态配置理解为手动或人工服务发现。
  • 默认配置中,作业prometheus只有一个监控目标:Prometheus服务器自身。
    • 它从本地的9090端口抓取数据,该端口返回服务器的健康指标。
    • Prometheus默认指标将在/metrics路径上返回,因此它会到http://localhost:9090/metrics上抓取指标。
  • scrape_configs主要参数:
    • job_name:全局唯一名称。
    • scrape_interval:默认等于global内设置的参数值,设置后可以覆盖global中的值。
    • scrape_timeout:默认等于global内设置的参数值。
    • metrics_path:从targets获取metric的HTTP资源路径,默认是/metrics。
    • honor_labels:Prometheus如何处理标签之间的冲突。若设置为"true",则通过保留标签来解决标签冲突进行数据值采集。若设置为"false",则通过重命名来解决标签冲突,以exported_<original-label>格式采集数据值,例如exported_job形式,默认是"false"。
    • scheme:用于请求的协议方式,默认是http。
    • params:数据采集访问时HTTP URL设定的请求参数。
    • relabel_configs:采集数据重置标签配置。
    • metric_relabel_configs:metric重置标签配置。
    • sample_limit:对每个被已知样本(sample)数量的每次采集进行限制,如果超过限制,该数据将被视为失败。默认值为0,表示无限制。

2.2、加载prometheus.yml文件

  • 有两种方法加载prometheus文件:
    • 启动时加载
    • 动态加载

1、动态加载prometheus.yml文件

  • 动态加载prometheus.yml文件一般有两种方法:
//通过发送SIGHUP信号,重新加载配置文件但不停止服务
]# kill -HUP PID

//通过HTTP API发送post请求到/-/reload,需要在启动Prometheus服务时指定--web.enable-lifecycle参数
]# curl -X POST http://localhost:9090/-/reload

2、检查prometheus.yml文件

promtool check config /apps/prometheus/prometheus.yml

1

#                                                                                                                        #
posted @ 2022-06-23 15:48  麦恒  阅读(196)  评论(0编辑  收藏  举报