运维监控系统实战笔记
秦晓辉
快猫星云联合创始人,Open-Falcon、Nightingale、Categraf 核心研发
9147 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
运维监控系统实战笔记
15
15
1.0x
00:00/00:00
登录|注册

04|如何快速搭建Prometheus系统?

你好,我是秦晓辉。
前面三讲我们介绍了监控系统的一些基本概念,这一讲我们开始进入实操环节,部署监控系统。业界可选的开源方案很多,随着云原生的流行,越来越多的公司开始拥抱云原生,而云原生标配的监控系统显然就是 Prometheus,而且 Prometheus 的部署非常简单,所以这一讲我们就先来自己动手搭建 Prometheus。

通用架构回顾

还记得我们上一讲介绍的监控系统通用架构吗?我们可以回顾一下。
之所以说 Prometheus 比较容易搭建,是因为它把服务端组件,包括时序库、告警引擎、数据展示三大块,整合成了一个进程,组件的数量大幅减少。Prometheus 生态的采集器就是各种 Exporter,告警发送靠的是 AlertManager 组件,下面我们先来部署 Prometheus 模块。

部署 Prometheus

因为生产环境大概率是 Linux 的,所以我们选择 Linux 下的发布包,把 Prometheus 和 Alertmanager 两个包都下载下来。
注:Prometheus 的下载地址:https://prometheus.io/download/
下载之后解压缩,使用 systemd 托管启动,你可以参考下面的命令。
mkdir -p /opt/prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.37.1/prometheus-2.37.1.linux-amd64.tar.gz
tar xf prometheus-2.37.1.linux-amd64.tar.gz
cp -far prometheus-2.37.1.linux-amd64/* /opt/prometheus/
# service
cat <<EOF >/etc/systemd/system/prometheus.service
[Unit]
Description="prometheus"
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data --web.enable-lifecycle --enable-feature=remote-write-receiver --query.lookback-delta=2m --web.enable-admin-api
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=prometheus
[Install]
WantedBy=multi-user.target
EOF
systemctl enable prometheus
systemctl start prometheus
systemctl status prometheus
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何快速搭建Prometheus系统,并包括了部署Alertmanager和Grafana的步骤。文章首先回顾了监控系统的通用架构,并指出Prometheus相对容易搭建的原因在于其将服务端组件整合成一个进程,大幅减少了组件数量。接着,文章详细介绍了如何部署Prometheus模块,包括下载、解压、配置启动参数等步骤。然后,文章讲解了如何部署Node-Exporter进行机器监控,包括下载、启动、配置到prometheus.yml中等步骤。此外,文章还介绍了配置Alertmanager的过程,包括全局SMTP配置和收件人设置。最后,文章介绍了如何部署Grafana作为数据可视化工具,并展示了如何配置数据源和导入Dashboard。整体而言,本文以实操为主,通过具体的部署和配置步骤,帮助读者快速了解了如何搭建Prometheus系统,并且展示了Prometheus生态相关组件的部署过程。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《运维监控系统实战笔记》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • 凡人
    置顶
    秦老师,你好,文章中 有两个小细节问题 1. 文章中没有提到 需要修改 prometheus.yml 中的 # - alertmanager:9093。 2. 163邮箱的smtp协议 非ssl端口号是25 (https://note.youdao.com/ynoteshare/index.html?id=f9fef46114fb922b45460f4f55d96853)

    作者回复: 👍🏻 prometheus.yml中确实需要配置alertmanager的地址,根据自己的环境的情况来配置。smtp确实也是支持ssl和非ssl。

    2023-01-29归属地:安徽
    2
    2
  • 隆哥
    置顶
    ①部署了prometheus,无法通过IP+9090访问,有可能是防火墙没有关闭,我使用的是CentOS系列 systemctl stop firewalld.service systemctl disable firewalld.service ②添加node_exporter在Status -> Targets无法查看,prometheus修改配置需要每次重新加载读取 systemctl restart prometheus ③如何添加报警规则 请在应用目录prometheus下创建一个rules文件夹,然后在文件夹中添加node_exporter.yml [root@bogon prometheus]#mkdir -p rules && cd rules && vim node_exporter.yml 添加规则内容之后,配置prometheus.yml,这样子目录更美观,新重启服务systemctl restart prometheus rule_files: - "rules/node_exporter.yml" ④为什么我grafana控制面板有时候图标会出现断层呢? 如果觉得教程麻烦,提供一键docker-compose剧本 version: '3' networks: monitor: driver: bridge services: prometheus: image: prom/prometheus container_name: prometheus hostname: prometheus restart: always volumes: - /data/prometheus/data:/prometheus - /data/prometheus/rules:/etc/prometheus/rules - /data/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" networks: - monitor alertmanager: image: prom/alertmanager container_name: alertmanager hostname: alertmanager restart: always volumes: - /data/alertmanager/config/alertmanager.yml:/etc/alertmanager/alertmanager.yml depends_on: - prometheus ports: - "9093:9093" networks: - monitor node-exporter: image: quay.io/prometheus/node-exporter container_name: node-exporter hostname: node-exporter restart: always environment: TZ: Asia/Shanghai volumes: depends_on: - prometheus ports: - "9100:9100" networks: - monitor grafana: image: grafana/grafana container_name: grafana hostname: grafana restart: always volumes: - /data/grafana/data:/var/lib/grafana depends_on: - prometheus ports: - "3000:3000" networks: - monitor

    作者回复: 👍 数据断了,可能是没有采集到,使用range query,查一下具体的指标,看看数据是否连续,比如 cpu_usage_idle[10m],使用Table视图查看,就能看到10分钟内具体的监控数据是什么,根据时间戳可以看出数据是否连续

    2023-01-16归属地:福建
    1
  • hshopeful
    置顶
    关于 pull 和 push 模式,个人的一些理解,有错误或遗漏的,希望老师指正: pull 模式的优点: 1、pull 模式很容易判断监控对象的存活性,push 模式很难 2、pull 模式的监控配置在服务端,比较容易统一控制,push 模式的监控配置在客户端,需要引入类似配置中心的组件,由客户端去拉取监控配置,从配置变更到配置生效的难易程度和时效性,pull 模式占优 3、pull 模式可以按需获取监控指标,push 模式只能被动接收监控指标,当然 push 模式也可以在服务端增加指标过滤规则 4、pull 模式下,应用与监控系统的耦合比较低,push 模式下,应用于监控系统的耦合性较高 push 模式的优点: 1、针对移动端的监控,只能使用 push 模式,不能使用 pull 模式 2、push 模式支持天然的水平扩展,pull 模式水平扩展比较复杂 3、push 模式适合短生命周期任务,pull 模式不适合 4、pull 模式依赖服务发现模块,push 模式不依赖 5、push 模式只用保证网络的正向联通(能够发送数据到服务端),比较简单,而 pull 模式需要保证网络的反向联通(服务端能够抓取多种多样的客户端暴露的接口),相对复杂 6、pull 模式需要暴露端口,安全性存在隐患,而 push 模式不存在 7、在聚合场景和告警场景下,push 模式的时效性更好

    作者回复: 挺全面的 👍 pull模式优点2,不是太准确,有的时候,即便是pull模式,很多采集配置也是需要放在采集侧的,比如mysqld_exporter,监控系统这边(prometheus.yml)中只需要配置要拉取的mysqld_exporter的地址,但是mysqld_exporter要采集mysql的指标,其实mysqld_exporter里也有不少相关的配置

    2023-01-16归属地:湖北
    2
    14
  • Amosヾ
    关于告警有一些建议和疑问: 1、告警分级(提示、严重、致命)全部邮件推送很难体现优先级,尤其是致命告警应该电话处理 2、目前社区是否有成熟的告警推送工具,比如企业微信机器人、钉钉机器人,这些需要自行编码实现?电话告警该如何实现呢?

    作者回复: 第8讲介绍的Nightingale内置钉钉,飞书,企微机器人的推送方式,好像还有个prometheus-alert工具可以去github搜一下支持挺多告警媒介。电话告警的话,一般有个电话通道API,但是不像邮件有smtp协议级别的规范,所以一般需要自定义一小段代码做电话告警

    2023-01-22归属地:江苏
    3
  • April
    Prometheus没有提供很多管理上的API,又不想引入Service Discovery, 在targets变化后直接操作prometheus.conf有什么更为简单的方式吗?

    作者回复: 使用基于文件的发现方式,然后通过配置管理工具,或者自己手撸,管理targets配置文件,targets配置文件变化之后,prometheus会自动重新加载,这种方式最为简单

    2023-01-16归属地:北京
    2
    2
  • 那时刻
    请问老师,在k8s里部署prometheus,有哪些比较好的方式呢。

    作者回复: 有这么几个方式可以看看选择一下: * https://prometheus-operator.dev/ * https://devapo.io/blog/technology/how-to-set-up-prometheus-on-kubernetes-with-helm-charts/ * https://phoenixnap.com/kb/prometheus-kubernetes

    2023-01-17归属地:北京
    1
  • 隆哥
    为啥不用docker形式来做实践呢,我觉得systemctl这种托管还是对主机入侵比较大。

    作者回复: 这都是落地细节了,其实没有那么关键,二进制的方式能够让大家了解更多细节,容器的话,很多公司其实没有在用。 通常来讲,懂得如何使用二进制部署,一般也能自行搞定容器;懂得容器部署,未必能搞定二进制方式部署。

    2023-01-16归属地:福建
    1
  • Geek_df0d4d
    请问生产上有什么prometheus的高可用方案吗

    作者回复: 国内来看,用VictoriaMetrics和Thanos作为Prometheus增强方案的居多

    2023-04-06归属地:上海
  • 孙宇翔
    老师您好,我想监控像摄像机这类设备的在线、离线,还有流量等数据,普罗米修斯是否合适,配置里面该怎么设置,完全没头绪。。。

    作者回复: 需要看看这些设备是怎么暴露监控数据的,摄像机我不知道,比如打印机是走snmp,就通过snmp的采集插件去拉数据就可以了

    2023-03-02归属地:浙江
    3
  • Matthew
    老师,文章中提到的几个软件安装包,都需要从 github 上下载,但是下载速度太慢。能否提供下国内镜像源的地址呢?

    作者回复: 国内估计没有

    2023-02-06归属地:江苏
    2
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部