写点什么

Prometheus 实战 - 从 0 构建高可用监控平台(二)

  • 2023-04-25
    广东
  • 本文字数:2094 字

    阅读完需:约 7 分钟

当今的互联网应用系统越来越复杂,其中涉及的组件和服务越来越多,需要进行高效、可靠的监控,以保证系统的稳定性和性能。Prometheus 是一款功能强大的开源监控系统,可以实时监控多个维度的指标数据,并支持强大的查询语言和告警机制,是目前广泛使用的云原生应用监控系统之一。


本文档合集《Prometheus 实战:从 0 构建高可用监控平台》将从零开始,手把手教您如何构建一套高可用的 Prometheus 监控平台,涵盖了以下内容:


  1. Prometheus 集群搭建:实现高可用和可扩展的监控系统

  2. 动态监控指标:自动发现和注册要监控的目标

  3. 告警机制配置:灵活配置告警规则、分组、过滤、抑制,实时通知异常情况

  4. Grafana 可视化展示:直观了解系统运行状态和趋势


本文档合集的目标读者是具有一定 Linux 系统和网络知识的系统管理员和 DevOps 工程师。通过本文档合集的学习,您将掌握 Prometheus 的核心概念和实践技巧,能够快速搭建一套高效、可靠的监控平台,帮助您更好地管理和维护复杂的互联网应用系统。


本文内容是基于 Thanos 安装一个高可用和可扩展的 Prometheus 集群。


基础信息见上一篇文章,这篇主要介绍 Prometheus 集群搭建和配置注意事项

Prometheus 全家桶

如之前规划,node2 和 node3 都安装 Prometheus , Alertmanager, PrometheusAlert.

Prometheus 集群安装

node2 node3 都执行以下安装内容


cd /usr/local/src/wget https://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gztar xf prometheus-2.37.0.linux-amd64.tar.gz -C /usr/localln -sv /usr/local/prometheus-2.37.0.linux-amd64 /usr/local/prometheus
groupadd -r prometheususeradd -r -g prometheus -s /sbin/nologin -c "prometheus Daemons" prometheus
mkdir /data/prometheuschown -R prometheus. /data/prometheuschown prometheus:prometheus /usr/local/prometheus/ -R

cat > /etc/systemd/system/prometheus.service <<EOF[Unit]Description=prometheusAfter=network.target[Service]Type=simpleUser=prometheusExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-admin-api --web.enable-lifecycle --storage.tsdb.path=/data/prometheus --storage.tsdb.retention=15dExecReload=/bin/kill -HUP $MAINPIDRestart=on-failureLimitNOFILE=655350LimitNPROC=655350LimitCORE=infinity[Install]WantedBy=multi-user.targetEOF
systemctl daemon-reloadsystemctl start prometheussystemctl enable prometheus
复制代码


允许用户通过 HTTP 请求来查询、配置和管理 Prometheus 实例。


// 启动时候添加参数--web.enable-admin-api/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-admin-api --storage.tsdb.path=/data/prometheus
curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={job="JMX"}'
复制代码

Config

上面设置好就可以配置采集节点和告警规则。具体见后面文章


mkdir /usr/local/prometheus/{rules,targets}
复制代码


Prometheus 配置文件


global:  external_labels:    region: "fb"alerting:  alertmanagers:    - static_configs:      - targets:        - 10.2.0.27:19093rule_files:  - "rules/*.yml"scrape_configs:  - job_name: 'consul-exporter'    metrics_path: /metrics    scheme: http    consul_sd_configs:      - server: localhost:8500        token: 'xxxxxxxx'        services: ['consul_exporter']    relabel_configs:      - regex: __meta_consul_service_metadata_(.+)        action: labelmap    - job_name: "prometheus"    static_configs:      - targets:        - '10.2.0.10:9090'        - '10.2.0.41:9090'  - job_name: "alertmanager"    static_configs:      - targets:        - '10.2.0.10:9093'        - '10.2.0.41:9093'remote_write:  - url: http://10.2.0.6:10908/api/v1/receive    headers:      THANOS-TENANT: fb  - url: http://10.2.0.10:10908/api/v1/receive    headers:      THANOS-TENANT: fb  - url: http://10.2.0.41:10908/api/v1/receive    headers:      THANOS-TENANT: fb
复制代码


注意点:


  1. node2 和 node3 是同一业务线的高可用的 Prometheus 集群,故两个节点配置一样。同其他业务线区别使用 external_labels(这个配置项也是 thanos 做数据去重的重要依据), 如:


global:  external_labels:    region: "bf"
复制代码


  1. 安装之前的规划,Alertmanager 是主备模式,这个地方填的是 keepalived 配置的 vip (haproxy),见下一篇文章。

  2. 这里配置了一个 consul_sd_configs,方便动态添加收集节点 , token 对应上篇文章 cosul 安装的时候生成的 token。


添加服务的功能脚本见: https://mp.weixin.qq.com/s/rXMsnY-j_xQj9JiKhllOqQ
复制代码


  1. 由于 prometheus 和 alertmanager 一般不会变,这里使用了 static_configs 收集相关服务的指标数据。

  2. remote_write 对应 上篇文章 -- Receive 配置。

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2018-12-12 加入

还未添加个人简介

评论

发布
暂无评论
Prometheus实战-从0构建高可用监控平台(二)_Linux_小毛驴的烂笔头_InfoQ写作社区