精华内容
下载资源
问答
  • Kubernetes集群:监控Kubernetes集群本身的关键指标Kubernetes集群上部署的应用:监控部署在Kubernetes集群上的应用其中基础设施层监控指标的拉取肯定是来在Prometheus的node_exporter,因为我们要监控的服务器节点...
  • prometheus是基于metric采样的监控,可以自定义监控指标,如:服务每秒请求数、请求失败数、请求执行时间等,每经过一个时间间隔,数据都会从运行的服务中流出,存储到一个时间序列数据库中,之后可通过PromQL语法...
  • Prometheus 监控

    2018-09-04 21:09:25
    prometheus-2.3.2.linux-amd64.tar.gz 普罗米修斯,监控
  • prometheus:用于Prometheus监控的docker-compose堆栈
  • zabbix4.2版本prometheus监控模板,实现prometheus数据进行监控告警。主要监控数据集有:CPU Filesystems Memory NetworkInterfaces Processes Security等。
  • prometheus监控.ppt

    2019-06-16 09:23:18
    分享Prometheus监控,讲讲入门安装,服务器监控,容器监控,k8s监控等等,有兴趣可以下载
  • Prometheus(也叫普罗米修斯)官网:https://prometheus.io/docs/introduction/overview/ Grafana官网:https://grafana.com/enterprise 特征 普罗米修斯的主要特点是: 具有由度量名称和键/值对标识的时间序列数据...
  • Prometheus OpenStack导出器 向公开高级指标。 可以使用和可视化数据 部署方式 要求 sudo apt-get install python-neutronclient python-novaclient python-keystoneclient python-netaddr python-cinderclient ...
  • prometheus监控概述

    2021-02-23 22:55:24
    监控系统在这里特指对数据中心的监控,主要针对数据中心内的硬件和软件进行监控和告警。企业的IT架构逐步从传统的物理服务器,迁移到以虚拟机为主导的IaaS云。无论基础架构如何调整,都离不开监控系统的支持。不仅...
  • prometheus监控HAProxy

    2021-01-07 19:12:40
    Prometheus官方网站可以看到,官方网站已经有支持对HAProxy软件的exporter,我们从官方网站下载下来进行使用,也可以通过下载HAProxy的项目地址,通过编译进行部署。 github项目地址 ...
  • 要使用python编写Prometheus监控,需要你先开启Prometheus集群。可以参考//www.jb51.net/article/148895.htm 安装。在python中实现服务器端。在Prometheus中配置请求网址,Prometheus会定期向该网址发起申请获取你想...
  • prometheus监控linux.zip

    2021-02-04 12:15:08
    prometheus监控linux 最常见的两个模板
  • Docker 的 Prometheus 监控 使用 Prometheus 和 fig 监控 Docker 主机。 要求 码头工人 图 安装 此存储库包含参考存储库作为子模块。 要使用子模块下载此存储库,您必须使用 git clone命令的--recursive标志: git...
  • 主要介绍了prometheus监控springboot应用简单使用介绍详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是GoogleBorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗下的原生云基金会...
  • Prometheus监控系统.pdf

    2021-07-26 22:31:12
    Prometheus监控系统.pdf
  • Prometheus监控系统最佳实践与常见陷阱(英文演讲).pdf
  • prometheus, Prometheus监控系统与时间序列数据库 访问 prometheus.io 以获得完整的文档,示例和指南。Prometheus是一个云本地计算基金会项目,是一个系统和服务监控系统。 在给定的时间间隔内收集来自配置目标的...
  • 基于Prometheus 2.3.0的版本,Prometheus监控配置
  • 之前公司用的是zabbix监控,说实话zabbix监控的挺全面的,就是配置管理不是很简单,prometheus监控配置简单,易于管理,占用】资源少,主要是配合grafana图像简直完美,已实践!
  • prometheus 监控 Prometheus是用于容器和微服务的开源监视和警报工具包。 该项目受到许多不同组织的欢迎,无论它们的规模或行业如何。 该工具包是高度可定制的,旨在提供丰富的指标,而不会影响系统性能。 基于已...

    prometheus 监控

    Prometheus是用于容器和微服务的开源监视和警报工具包。 该项目受到许多不同组织的欢迎,无论它们的规模或行业如何。 该工具包是高度可定制的,旨在提供丰富的指标,而不会影响系统性能。 基于已采用它的组织, Prometheus已成为那些严重依赖容器和微服务的人选择的主流开源监视工具。

    Prometheus于2012年在SoundCloud上构思,并于2016年成为Cloud Native Computing Foundation(CNCF)的一部分,并于2018年8月宣布Prometheus是该组织历史上的第二个“已毕业”项目

    Prometheus为现代DevOps工作流提供了关键组件:监视云本地应用程序和基础架构,包括另一个受欢迎的CNCF项目Kubernetes

    以下是一些DevOps组织如何将Prometheus的开源监视变成运营优势。

    依靠普罗米修斯

    该公司的架构师和运营商Alan Strader表示,金融服务巨头Northern Trust于2017年6月选择Prometheus,不是为了进行应用程序监视,而是为了更好地了解其某些硬件。 他在演讲中解释说:“我们还会获得容量和性能报告,以告诉我们何时遇到问题,并将其用于预测和增加硬件。”

    虽然Northern Trust喜欢Prometheus的灵活性和粒度,但Strader承认其“相当陡峭的学习曲线”和高昂的前期成本,以向团队介绍该工具包。 Strader说:“但是我们认为它比商业解决方案便宜得多,因为不必再为每月或每年的服务支付硬性费用。” 他说,Northern Trust使用Prometheus监控其平台上的750多种微服务。

    对抗机敏疲劳

    当您的内容交付网络(CDN)由遍布全球的116个数据中心组成时,您需要随时注意事项-尤其是平均每秒500万个HTTP请求时。 Cloudflare为超过600万个网站提供DNS和DDoS缓解服务。 与Cloudflare平台运营团队合作的Matt Bostock说,它需要监视帮助,尤其是在开始出现“ 警报疲劳 ”的情况下。

    Cloudflare在全球范围内使用188台Prometheus服务器以及四台顶级Prometheus服务器,以在关键生产问题,事件响应,事后分析和指标方面发出警报。

    Bostock说,部署使用了Prometheus Alertmanager ,它可以对Prometheus警报进行重复数据删除。 他解释说:“ Alertmanager按POP和警报名称对传入的警报进行分组,这有助于我们减少收到的警报噪声。” Cloudflare还为症状而不是原因设置警报,Bostock说这将减少整体警报量,并使组织更加主动。 他警告说:“如果您在机器或原因上设置警报,您将收到很多警报。”

    简化一项服务以全部统治

    L'Atelier Animation指出了四个关键特征后,选择了Prometheus:可以自定义其Node Exporter以从客户端获取任何数据; SNMP支持消除了对第三方服务的需求; 其警报系统优于Nagios; 史蒂文斯说 ,它拥有Grafana的支持。

    升级使动画工作室有机会更改其监视所有内容的方式,并启发了从Prometheus数据派生的新自定义楼层地图的创建。 史蒂文斯说:“通过一项服务将它们全部统治,设置起来要简单得多。” L'Atelier Animation还与Prometheus集成了软件许可。 史蒂文斯补充说:“这些信息将使艺术家更好地了解谁在什么地方使用什么东西。”

    推动更好的见解

    Life360是一款用于定位,行车安全和家庭成员之间共享信息的移动应用程序,可管理生产中的大约20项服务,其中大部分来自移动客户端的定位请求,最多可达到150多个实例。

    Life360基础架构工程师Daniel Ben Yosef说: “我们主要使用MySQL,NSQ和HAProxy,并且发现(先前使用的)所有监视解决方案都是非常局部的,需要大量定制才能真正使所有组件协同工作。”

    该公司需要一种更好的方法来监视其MySQL多主群集和一个12节点的Cassandra环,该环可容纳约4TB的数据。 普罗米修斯在初步测试中表现良好。 “ [概念验证]结果令人难以置信。” 本·约瑟夫(Ben Yosef)说。 “ MySQL的监视范围非常出色,我们也非常喜欢对Cassandra的JMX监视,这是非常缺乏的。”

    在Prometheus的有限部署之后,Life360报告了可见性和仪器方面的巨大进步,并设想在其数据中心基础架构的其他部分中使用它。 Ben Yosef补充说:“随着我们构建新服务,Prometheus将成为我们进行仪器安装的必经之路,并将帮助我们获得有关我们基础设施的极其有意义的警报和统计信息。”

    给容器做检查

    作为一家致力于改善癌症患者生活的数据公司,Cota Healthcare丰富了病历以创建研究级数据,并将其与一整套分析,可视化和管理工具结合在一起。 拥有数以百万计的患者病历,可见性和安全性对其业务至关重要。 当Cota迁移到云中的Kubernetes时,该公司意识到需要监视和保护其容器环境。

    “我们也知道我们需要了解所有内容,” Cota基础架构副总裁Ashley Penney说。 “您无法在一个不知道发生了什么的系统上运行-那是行不通的。” 为了获得有关其应用程序性能和行为的更深入的信息,Cota选择通过Sysdig来利用Prometheus指标, Sysdig是一种性能和安全性监视解决方案,利用Prometheus的自定义指标来进行监视,警报和故障排除。

    彭尼说:“从基础架构团队的角度来看,很高兴我们可以告诉开发人员'使用Prometheus发出指标,然后我们将使用我们的监控工具来获取它们。” “我们使用Prometheus为Stackdriver甚至Google Cloud生成指标。还有很多其他Prometheus出口商可以使用。”

    翻译自: https://opensource.com/article/18/9/prometheus-operational-advantage

    prometheus 监控

    展开全文
  • Prometheus监控系统

    2020-09-24 22:00:52
    Prometheus 是一个开源的服务监控系统和时间序列数据库,为解决监控容器的问题,引入了prometheus技术。


    学习目标

    • 能够安装prometheus服务器
    • 能够通过安装node_exporter监控远程linux
    • 能够通过安装mysqld_exporter监控远程mysql数据库
    • 能够安装grafana
    • 能够在grafana添加prometheus数据源
    • 能够在grafana添加监控cpu负载的图形
    • 能够在grafana图形显示mysq监控数据
    • 能够通过grafana+onealert实现报警

    任务背景
    某某某公司是一家电商网站,由于公司的业务快速发展,公司要求对现有机器进行业务监控,责成运维部门来实施这个项目。

    任务要求
    1)部署监控服务器,实现7X24实时监控
    2)针对公司的业务及研发部门设计监控系统,对监控项和触发器拿出合理意见
    3)做好问题预警机制,对可能出现的问题要及时告警并形成严格的处理机制
    4)做好监控告警系统,要求可以实现告警分级
    一级报警电话通知
    二级报警微信通知
    三级报警邮件通知
    5)处理好公司服务器异地集中监控问题

    任务分析
    为什么要监控?
    答:实时收集数据,通过报警及时发现问题,及时处理。数据为优化也可以提供依据。
    监控四要素:

    • 监控对象 [主机状态服务资源页面,ur]
    • 用什么监控 [zabbix-server zabbix-agent]
    • 什么时间监控 [7x24 5×8]
    • 报警给谁 [管理员]

    项目选型:

    • zabbix 跨平台,画图,多条件告警,多种API接口。使用基数特别大
    • prometheus 基于时间序列的数值数据的容器监控解决方案

    一、普罗米修斯概述

    Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。
    https://prometheus.io/docs/introduction/overview/
    在这里插入图片描述

    二、时间序列

    1、什么是序列数据

    时间序列数据(Timeseries Data):按照时间顺序记录系统、设备状态变化的数据被称为时序数据。
    应用的场景很多,如:

    • 无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距离等等。每时每刻都要将数据记录下来做分析。
    • 某一个地区的各车辆的行驶轨迹数据
    • 传统证券行业实时交易数据
    • 实时运维监控数据等

    2、基于时间序列数据特点

    • 性能好
      关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理大规模数据,让依然比不上时间序列数据库。
    • 存储成本低
      高效的压缩算法,节省存储空间,有效降低1OT Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(来自官方数据)

    3、普罗米修斯特征

    • 多维度数据模型
    • 灵活的查询语言
    • 不依赖分布式存储,单个服务器节点是自主的
    • 以HTTP方式,通过pul模型拉去时间序列数据
    • 也可以通过中间网关支持push模型
    • 通过服务发现或者静态配置,来发现目标服务对象
    • 支持多种多样的图表和界面展示

    4、普罗米修斯原理架构图

    在这里插入图片描述
    Prometheus 数据采集方式也非常灵活。要采集目标的监控数据,首先需要在目标处安装数据采集组件,这被称之为 Exporter,它会在目标处收集监控数据,并暴露出一个 HTTP 接口供 Prometheus 查询,Prometheus 通过 Pull 的方式来采集数据,这和传统的 Push 模式不同。

    不过 Prometheus 也提供了一种方式来支持 Push 模式,你可以将你的数据推送到 Push Gateway,Prometheus 通过 Pull 的方式从 Push Gateway 获取数据。目前的 Exporter 已经可以采集绝大多数的第三方数据,比如 Docker、HAProxy、StatsD、JMX 等等,官网有一份 Exporter 的列表。

    三、实验环境准备

    grafana服务器 10.0.100.128
    Prometheus服务器 10.0.100.129
    被监控服务器 10.0.100.130

    编号主机名称主机IP地址角色
    1grafana.cluster.com10.0.100.128grafana
    2prometheus.cluster.com10.0.100.129prometheus
    3agent.cluster.com10.0.100.130agent

    ①Promethus服务器
    ②被监控服务器(LB、Web01/Web0/、MyCAT、MySQL01/MySQL02)
    ③Grafana服务器(运维成像)

    1.配置主机名

    各配置好主机名
    # hostnamectl set-hostname --static prometheus.cluster.com
    三台都互相绑定IP与主机名
    # vim /etc/hosts
    10.0.100.128 grafana.cluster.com
    10.0.100.129 prometheus.cluster.com
    10.0.100.130 agent.cluster.com
    

    2.时间同步

    yum install ntpdate -y
    ntpdate cn.ntp.org.cn
    

    3.关闭防火墙,selinux

    systemctl stop firewalld
    systemctl disable firewalld
    iptables -F
    

     

    四、安装普罗米修斯

    1、下载软件

    https://prometheus.io/download/
    https://github.com/prometheus/prometheus/releases/download/v2.21.0/prometheus-2.21.0.linux-amd64.tar.gz

    2、安装普罗米修斯软件

    第一步:上传到Linux服务器
    第二步:解压并安装软件

    # tar xf prometheus-2.21.0.linux-amd64.tar.gz -C /usr/local/
    # mv /usr/local/prometheus-2.21.0.linux-amd64  /usr/local/prometheus
    

    第三步:启动普罗米修斯软件

    # /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
    
    注释:&连接符代表后台运行,不占用终端窗口
    

    在这里插入图片描述

    测试9090端口占用情况(判断是否真正的启动了)
    确认端口(9090)
    lsof -i:9090
    ss -naltp | grep 9090

    3、普罗米修斯软件界面(Web)

    通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面
    在这里插入图片描述
    系统默认监控了自己的主机信息,监控接口:通过http://服务器IP:9090/metrics可以查看到监控的数据 (开发可进行二次调用)

    在web主界面可以通过关键字查询自带的监控项
    在这里插入图片描述

    五、监控远程Linux主机

    监控不同需要不同的组件,mysql,haproxy组件
    1、在远程linux主机(被监控端agent)上安装node_exporter组件(这样普罗米修斯就可以接收到其收集系统)
    下载地址:https://prometheus.io/download/

    [root@agent ~]# tar xf node_exporter-1.0.1.linux-amd64.tar.gz -C /usr/local/
    [root@agent ~]# mv /usr/local/node_exporter-1.0.1.linux-amd64/ /usr/local/node_exporter
    
    里面就一个启动命令node_exporter,可以直接使用此命令启动
    [root@agent ~]# nohup /usr/local/node_exporter/node_exporter &
    
    确定端口(9100)
    [root@agent ~]# lsof -i:9100
    
    或:ss -naltp | grep 9100
    

    在这里插入图片描述
     
    2、通过浏览器访问http://被监控端IP:9100/metrics就可以查看到node_exporter在被监控端收集的监控信息
    在这里插入图片描述

    3、回到prometheus服务器的配置文件里添加被监控机器的配置段

    在主配置文件最后加上下面三行
    [root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml 
      - job_name: 'agent' #取一个job名称来代表被监控的机器
        static_configs:
        - targets: ['10.0.100.130:9100'] #这里改成被监控机器的IP,后面端口接9100
    
    改变配置文件后,重启服务
    [root@prometheus ~]# pkill prometheus
    [root@prometheus ~]# lsof -i:9090 #确定端口没有进程占用
    [root@prometheus ~]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
    [root@prometheus ~]# lsof -i:9090 #确定端口被占用,说明重启成功     
    

    4、回到web管理界面——》点Status——》点Targets——》可以看到多了一台监控目标

    在这里插入图片描述

    六、监控远程MySQL

    在node_exporter的基础上,可以根据自己的需要收集其他信息

    1、在被管理机agent上安装配置mysqld_exporter组件
    下载地址:https://prometheus.io/download/
    wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz

    安装mysqld_exporter组件
    [root@agent ~]# tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
    [root@agent ~]# mv /usr/local/mysqld_exporter-0.12.1.linux-amd64/ /usr/local/mysqld_exporter
    
    安装mariadb数据库,并授权
    [root@agent ~]# yum -y install mariadb\*
    \* 表示所有安装
    [root@agent ~]# systemctl restart mariadb
    [root@agent ~]# systemctl enable mariadb
    [root@agent ~]# mysql
    
    因为监控系统要根据账号去收集数据,所以要创建mysql账号
    MariaDB [(none)]> grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by '123';
    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    创建一个mariadb配置文件,写上连接的用户名与密码(和上面的授权的用户名和密码要对应)
    [root@agent ~]# vim /usr/local/mysqld_exporter/.my.cnf  ==>>手工创建
    [client]
    user=mysql_monitor
    password=123
    
    启动mysqld_exporter
    [root@agent ~]# nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &
    
    确认端口(9104)
    lsof -i:9104
    

    在这里插入图片描述

    2、回到prometheus服务器的配置文件里添加被监控的mariadb的配置段

    在主配置文件最后再加上下面三行
    [root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml 
      - job_name: 'agent1_mariadb' #取一个job名称来代表被监控的机器
        static_configs:
        - targets: ['10.0.100.130:9104'] #这里改成被监控机器的IP,后面端口接9104
    [root@prometheus ~]# pkill prometheus
    [root@prometheus ~]# lsof -i:9090
    [root@prometheus ~]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
    [root@prometheus ~]# lsof -i:9090
    

    3、回到web管理页面——》点Status——》点Targets——》可以看到监控mariadb了
    在这里插入图片描述

    七、为普罗米修斯添加图形图像

    1、安装Grafana可视化工具

    Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。
    网址:https://grafana.com

    ①在grafana服务器上安装grafana
    下载地址:https://grafana.com/grafana/download

    我这里选择的rpm包,下载后直接yum安装就ok
    [root@grafana ~]# wget https://dl.grafana.com/oss/release/grafana-7.2.0-1.x86_64.rpm
    [root@grafana ~]# yum -y install grafana-7.2.0-1.x86_64.rpm  
    用yum安装可以解决rpm依赖问题
    [root@grafana ~]# systemctl start grafana-server
    [root@grafana ~]# systemctl enable grafana-server
    
    确认端口(3000)
    [root@grafana ~]# lsof -i:3000
    ss -naltp | grep 3000
    

    ②通过浏览器访问http://grafana服务器IP:3000就到了登录界面,使用默认的用户名和密码
    在这里插入图片描述
    在这里插入图片描述

    2、添加数据源

    ①下面把prometheus服务器收集的数据做为一个数据源添加到grafana,让grafana可以得到prometheus的数据
    在这里插入图片描述

    ②设置数据源,数据源名称,IP,端口号,GET请求方式
    在这里插入图片描述

    普罗米修斯获取数据是基于GET方式
    在这里插入图片描述

    ③点击齿轮图表,查看已添加的数据源
    在这里插入图片描述

    3、为添加好的数据源做图形显示

    ①点击加号,单击Dashboard
    在这里插入图片描述

    ②单击Graph,增加图形
    在这里插入图片描述

    ③选择需要呈现图形的数据(小三角=》Edit编辑)
    在这里插入图片描述

    ④选择Data Source数据源,并设置好条件(如 1分钟,5分钟,15分钟的负载情况)
    在这里插入图片描述

    ⑤保存图像
    在这里插入图片描述

    扩展:⑥特定条件匹配显示
    node_load1{instance="10.0.100.130:9100"} 根据IP筛选
    node_load15{job="agent"} 根据yml文件里的job筛选
    在这里插入图片描述

    在这里插入图片描述
     

    八、Grafana图形显示MySQL监控

    ①在grafana上修改配置文件,并下载安装mysql监控的dashboard(包含相关json文件,这些json文件可以看作是开发人员开发的一个监控模板)
    参考网址:https://github.com/percona/grafana-dashboards

    在grafana配置文件里最后加上以下三行
    [root@grafana ~]# vim /etc/grafana/grafana.ini
    [dashboards.json]
    enabled=true
    path=/var/lib/grafana/dashboards
    
    [root@grafana ~]# cd /var/lib/grafana/
    [root@grafana grafana]# git clone https://github.com/percona/grafana-dashboards.git
    [root@grafana grafana]# cp -r grafana-dashboards/dashboards /var/lib/grafana/
    重启grafana服务
    [root@grafana grafana]# systemctl restart grafana-server
    

    ②在grafana图形界面导入相关json文件
    下载地址:https://github.com/percona/grafana-dashboards
    在这里插入图片描述

    ③选择MySQL.Overview,点击import导入后,Prometheus数据源
    注:如果报prometheus数据源找不到,因为这些json文件里默认要找的是叫Prometheus的数据源,按照我的做法的话,上面创建的数据源就是叫Prometheus。(如果不是请修改,第一个字母P是大写,在Configuration——》DataSource里修改Name)
    在这里插入图片描述

    ④展示结果
    在这里插入图片描述

    报错:Panel plugin not found: pmm-singlestat-panel
    文件均在上面的github可以获取到

    mv  pmm-singlestat-panel /var/lib/grafana/plugins/pmm-singlestat-panel
    
    在grafana的defaults.ini或者grafana.ini下添加这个 指定插件地址
    vim /etc/grafana/grafana.ini
    [plugin.singlestat]
    path = /var/lib/grafana/plugins/pmm-singlestat-panel
    

    九、Grafana+onealert报警

    prometheus报警需要使用alertmanager这个组件,而且报警规则需要手动编写(对运维来说不友好)。所以我这里选用grafana+onealert报警。

    注意:实现报警前把所有机器时间同步再检查一遍.

    ①先在onealert(睿象云)里添加grafana应用(申请onealert账号在zabbix已经讲过)
    在这里插入图片描述

    一、在Grafana中配置Webhook URL
    1、在Grafana中创建Notification channel,选择类型为Webhook;
    2、推荐选中Send on all alerts和Include image,Cloud Alert体验更佳;
    3、将第一步中生成的Webhook URL填入Webhook settings Url;
    URL格式:http://api.aiops.com/alert/api/event/grafana/v1/xxxxxxxxx/
    4、Http Method选择POST;
    5、Send Test&Save;
    在这里插入图片描述

    二、设置Webhook信息
    在这里插入图片描述

    三、将配置的Webhook Notification Channel添加到Grafana Alert中
    Edit——》Alert——》
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    负载大于0.5触发,在睿象云设置通知对象
    CPU负载测试:cat /dev/urandom | md5sum
    for i inseq 1 $(cat /proc/cpuinfo |grep “physical id” |wc -l); do dd if=/dev/zero of=/dev/null & done
    在这里插入图片描述

    十、学习PromQL

    Prometheus 提供了可视化的 Web UI 方便我们操作,直接访问 http://localhost:9090/ 即可,它默认会跳转到 Graph 页面:

    10.1 数据模型

    1、数据类型

    要学习 PromQL,首先我们需要了解下 Prometheus 的数据模型,一条 Prometheus 数据由一个指标名称(metric)和 N 个标签(label,N >= 0)组成的,比如下面这个例子:

    promhttp_metric_handler_requests_total{code="200",instance="192.168.0.107:9090",job="prometheus"} 106
    

    这条数据的指标名称为 promhttp_metric_handler_requests_total,并且包含三个标签 code、instance 和 job,这条记录的值为 106。

    上面说过,Prometheus 是一个时序数据库,相同指标相同标签的数据构成一条时间序列。如果以传统数据库的概念来理解时序数据库,可以把指标名当作表名标签是字段timestamp 是主键,还有一个 float64 类型的字段表示值(Prometheus 里面所有值都是按 float64 存储)。

    Prometheus 的数据分成四大类:

    • Counter
      Counter 用于计数,例如:请求次数、任务完成数、错误发生次数,这个值会一直增加,不会减少。
    • Gauge
      Gauge 就是一般的数值,可大可小,例如:温度变化、内存使用变化。
    • Histogram
      Histogram 是直方图,或称为柱状图,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供 count 和 sum 的功能。
    • Summary
      Summary 和 Histogram 十分相似,也用于跟踪事件发生的规模,不同之处是,它提供了一个 quantiles 的功能,可以按百分比划分跟踪的结果。例如:quantile 取值 0.95,表示取采样值里面的 95% 数据。

    2、选择器

    (1)Instant vector selectors
    这里不仅可以使用 = 号,还可以使用 !=、=~、!~,比如下面这样:

    up{job!="prometheus"}  
    up{job=~"server|mysql"}  
    up{job=~"192\.168\.0\.107.+"}  
    #=~ 是根据正则表达式来匹配,必须符合 RE2 的语法。
    

    (2)Range vector selectors,它可以查出一段时间内的所有数据

    http_requests_total[5m]  
    

    这条语句查出 5 分钟内所有抓取的 HTTP 请求数,注意它返回的数据类型是 Range vector,没办法在 Graph 上显示成曲线图,一般情况下,会用在 Counter 类型的指标上,并和 rate() 或 irate() 函数一起使用(注意 rate 和 irate 的区别)。

    # 计算的是每秒的平均值,适用于变化很慢的 counter  
    # per-second average rate of increase, for slow-moving counters  
    rate(http_requests_total[5m])  
       
    # 计算的是每秒瞬时增加速率,适用于变化很快的 counter  
    # per-second instant rate of increase, for volatile and fast-moving counters  
    irate(http_requests_total[5m])  
    

    此外,PromQL 还支持 count、sum、min、max、topk 等 聚合操作,还支持 rate、abs、ceil、floor 等一堆的 内置函数,更多的例子,还是上官网学习吧。如果感兴趣,我们还可以把 PromQL 和 SQL 做一个对比,会发现 PromQL 语法更简洁,查询性能也更高。

    展开全文
  • 从0开始搭建prometheus监控平台-附件资源
  • Prometheus监控Linux虚拟机

    千次阅读 2021-02-04 11:17:43
    一、概述 1.1 简介 官网地址:https://prometheus.io/ Prometheus是最初在SoundCloud上...为了强调这一点并阐明项目的治理结构,Prometheus于2016年加入了Cloud Native Computing Foundation,这是继Kubernetes之...

    一、概述

    官网地址https://prometheus.io/

    Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 于2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。

    1.1 Prometheus 的优点

    • 非常少的外部依赖,安装使用超简单
    • 已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等
    • 服务自动化发现
    • 直接集成到代码
    • 设计思想是按照分布式、微服务架构来实现的

    1.2 Prometheus 的特性

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

    1.3 Prometheus 原理架构

    下图说明了Prometheus的体系结构及其某些生态系统组件:

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

    Prometheus直接或通过中介推送网关从已检测作业中删除指标,以处理短暂的作业。它在本地存储所有报废的样本,并对这些数据运行规则,以汇总和记录现有数据中的新时间序列,或生成警报。Grafana或其他API使用者可以用来可视化收集的数据。

    1.4、Prometheus的数据模型

    Prometheus从根本上所有的存储都是按时间序列去实现的,相同的metrics(指标名称) 和label(一个或多个标签) 组成一条时间序列,不同的label表示不同的时间序列。为了支持一些查询,有时还会临时产生一些时间序列存储。

    每条时间序列是由唯一的”指标名称”和一组”标签(key=value)”的形式组成。

    指标名称:一般是给监测对像起一名字,例如http_requests_total这样,它有一些命名规则,可以包字母数字_之类的的。通常是以应用名称开头_监测对像_数值类型_单位这样。例如:push_total、userlogin_mysql_duration_seconds、app_memory_usage_bytes。

    标签:就是对一条时间序列不同维度的识别了,例如一个http请求用的是POST还是GET,它的endpoint是什么,这时候就要用标签去标记了。最终形成的标识便是这样了:http_requests_total{method=”POST”,endpoint=”/api/tracks”}。

    记住,针对http_requests_total这个metrics name无论是增加标签还是删除标签都会形成一条新的时间序列。查询语句就可以跟据上面标签的组合来查询聚合结果了。如果以传统数据库的理解来看这条语句,则可以考虑http_requests_total是表名,标签是字段,而timestamp是主键,还有一个float64字段是值了。(Prometheus里面所有值都是按float64存储)。

    参考官网:Data model | Prometheus


    1.5、Prometheus四种数据类型

    Counter

    Counter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。

    例如:http_response_total{method=”GET”,endpoint=”/api/tracks”} 100,10秒后抓取http_response_total{method=”GET”,endpoint=”/api/tracks”} 100。

    Gauge

    Gauge常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。

    例如: memory_usage_bytes{host=”master-01″} 100 < 抓取值、memory_usage_bytes{host=”master-01″} 30、memory_usage_bytes{host=”master-01″} 50、memory_usage_bytes{host=”master-01″} 80 < 抓取值。

    Histogram

    Histogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供count和sum全部值的功能。

    例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值。

    Summary

    Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。

    例如:count=7次,sum=7次的值求值。

    它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。

    参考官网:Metric types | Prometheus

    二、安装Prometheus及其组件

    2.1 安装前准备

    监控服务器 需要安装4个服务:

    1. Prometheus Server(普罗米修斯监控主服务器 ) 10.21.70.101
    2. Node Exporter (收集Host硬件和操作系统信息) 10.1.205.154
    3. cAdvisor (负责收集Host上运行的容器信息) 10.21.70.101
    4. Grafana (展示普罗米修斯监控界面) 10.21.70.101

    被监控的只有安装2个:

    1. Node Exporter (收集Host硬件和操作系统信息) 10.21.70.101
    2. cAdvisor (负责收集Host上运行的容器信息) 10.21.70.101

    Liunx安装:

    1. 时间同步
    2. 关闭防火墙和selinux
    3. 若采用容器安装需要安装Docker,也可以通过安装包解压安装(两种都会演示)

    2.2 安装Node Exporter组件(监控VM)

    所有被监控节点运行以下命令安装Node Exporter 容器

    安装命令docker pull prom/node-exporter:latest 

    制作启动脚本: vi node-export-start.sh

    docker run -d -p 9100:9100 \
    -v "/proc:/host/proc" \
    -v "/sys:/host/sys" \
    -v "/:/rootfs" \
    -v "/etc/localtime:/etc/localtime" \
    prom/node-exporter \
    --path.procfs /host/proc \
    --path.sysfs /host/sys \
    --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

    启动Node Exporter组件:./node-export-start.sh

    验证是否成功:访问网址 http://10.1.205.154:9100/metrics ,虚拟机数据上报成功!

     提供单个指标的查询接口:

     2.3 安装Prometheus主服务(监控汇总)

    主服务节点运行以下命令安装Prometheus容器

    安装命令docker pull prom/prometheus:latest

    制作启动脚本: vi prometheus-start.sh

    docker run -d -p 9090:9090 \
    -v /home/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    -v "/etc/localtime:/etc/localtime" \
    --name prometheus \
    prom/prometheus

    配置数据文件:vi prometheus.yml  

    [root@slave1 prometheus]# pwd
    /home/docker/prometheus

    # my global config
    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 is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          # - alertmanager:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    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','10.1.205.154:9100']

    启动Prometheus组件:./prometheus-start.sh

    验证是否成功:访问网址  http://10.21.70.84:9090/targets ,监控数据汇总成功!

    FAQ: 

    [root@slave1 prometheus]# ./prometheus-start.sh
    ee9f8bc4d82f3dc01f74300a0844fbf00409c9d939504b4e0fec7aa513d348f3
    docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused " process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/root/prometheus.yml\\\" to rootfs \\\"/var/lib/docker/overlay2/5ed253f82ba590d6834f5a17fb1d9c71e54d3966bfacd3b9519a6074a4350fcb/merged\\\" at \\\"/var/lib/docker/overlay2/5ed253f82ba590d6834f5a17fb1d9c71e54d3966bfacd3b9519a6074a4350fcb/merged/etc/prometheus/prometheus.yml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

    ANS: prometheus.yml 路径放置错误!

    三、安装Grafana组件(图形化展示)

    所有被监控节点运行以下命令安装Grafana容器

    安装命令docker pull grafana/grafana:latest 

    制作启动脚本: vi grafana-start.sh

    docker run -d -i -p 3000:3000 \
    -v "/etc/localtime:/etc/localtime" \
    -e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
    -e "GF_SECURITY_ADMIN_PASSWORD=admin123" \
    grafana/grafana

    启动Grafana组件:./grafana-start.sh

    验证是否成功:访问网址 http://10.21.70.84:3000/metrics 或者 登录界面 http://10.21.70.84:3000,用户名/密码:admin/admin123,登录成功!

      

    四、Grafana组件使用简介

     4.1 添加prometheus数据源

    下面我们把prometheus服务器收集的数据做为一个数据源添加到 grafana,让grafana可以得到prometheus的数据。

     4.2
    选取数据源做图形显示

    参考:Grafana三种方式导入Dashboard

    4.3 导入模板

    官网下载地址:Dashboards | Grafana Labs

     


     4.4 在dashboard可以查看到


    五、文档参考

    1. GitBook - Where software teams break knowledge silos. (Prometheus 实战) 
    2. https://github.com/1046102779/prometheus (Prometheus 非官方中文手册)
    3. 基于prometheus监控k8s集群-布布扣-bubuko.com (基于prometheus监控k8s集群)
    4. 安装prometheus+grafana监控mysql redis kubernetes等 - 思凡念真 - 博客园 (安装prometheus+grafana监控mysql redis kubernetes等,非docker安装)
    5. https://github.com/kayrus/prometheus-kubernetes (prometheus-kubernetes) 
    6. https://github.com/prometheus/node_exporter (prometheus/node_exporter)
    7. 最佳实践 | Prometheus在Kubernetes下的监控实践 - DockOne.io ( Prometheus在Kubernetes下的监控实践)
    展开全文
  • prometheus监控

    2021-01-17 14:46:41
    prometheus采用服务器端加客户端的方式实现整个监控过程,服务器端安装prometheus服务,客户端安装exporter服务,每隔指定的时间(可配置)服务器端会自动向客户端索要监控数据,然后存储到本地。 1. 下载prometheus...

    一. Prometheus安装

    监控原理:

    prometheus采用服务器端加客户端的方式实现整个监控过程,服务器端安装prometheus服务,客户端安装exporter服务,每隔指定的时间(可配置)服务器端会自动向客户端索要监控数据,然后存储到本地。

    1. 下载prometheus安装包

    下载地址

    2.安装

    将安装包上传到服务器

    tar xvfz prometheus-*.tar.gz
    cd prometheus-*
    

    3.启动prometheus

    ./prometheus --config.file=prometheus.yml 
    #如果想在后台运行可以执行nohup ./prometheus --config.file=prometheus.yml &
    

    至此已经可以访问http://192.168.101.251:9090/访问prometheus页面
    在这里插入图片描述
    选择status->targets查看当前监控了哪些目标机器,目前还没有安装exporter,但默认会监控prometheus服务器
    在这里插入图片描述
    至此prometheus服务器安装完成,想要监控其它服务器还需要在目标服务器上安装exporter客户端。

    4.exporter

    exporter安装

    在prometheus下载地址就可以找一些exporter。下载exporter然后上传到需要被监控的服务器上,比如我下载的是node_exporter,执行以下命令安装

    tar xvfz node_exporter*
    cd node_exporter*
    ./node_exporter
    #如果想在后台运行可以执行nohup ./node_exporter &
    

    在prometheus中配置exporter

    此时目标服务器的exporter服务已经启动,但prometheus还不会向这台被监控服务器索要监控数据,还需要在prometheus.yml中配置。

    A.prometheus.yml配置讲解
    # my global config
    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 is set to the global default (10s).
    # Alertmanager configuration
    alerting:
      alertmanagers:
     - static_configs:
        - targets:
          # - alertmanager:9093
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    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']
    

    以上是默认的配置文件内容,这里只介绍本文需要修改的配置,其它内容暂不详细介绍,有需要可以到网上搜索。
    global:该模块定义一些global参数
    scrape_interval:每隔多久时间向被监控服务器索要一次监控数据,这里配置是15s
    evaluation_interval:每隔多久重新扫描rule文件,也就是后面rule_files里面配置的yml文件(实验发现,修改了rule配置文件后Prometheus并不会动态刷新,重启Prometheus后才能生效,修改方法参照prometheus刷新配置
    altering:该模块定义告警方式
    rule_files:该模块定义监控告警细节
    scrape_configs:这个模块是配置需要监控哪些服务器,也就是我们新安装了exporter之后需要修改这个模块下的配置
    job_name:定义一个名字,这个名字在prometheus页面的Status->Targets里面会显示,后面会讲到
    targets:目标机器
    labels:自定义属性

    B.添加exporter信息

    比如我mysql的服务器(192.168.101.250)已经安装完exporter,接下来需要在prometheus.yml中添加以下配置

     - job_name: 'mysql_server'
        static_configs:
        - targets: ['192.168.101.250:9100']
          labels:   #添加自定义属性,用于metric查询,后面会讲到
            role: mysql #名字和值都可以随便取,但是需要满足命名规则
            server_type: linux
    

    最后我的配置文件是这样的

    global:
      scrape_interval:     15s 
      evaluation_interval: 15s 
    alerting:
      alertmanagers:
     - static_configs:
        - targets:
    rule_files:
    scrape_configs:
     - job_name: 'prometheus'
        static_configs:
        - targets: ['localhost:9090']
     - job_name: 'mysql_server'
        static_configs:
        - targets: ['192.168.101.250:9100']
          labels:
            role: mysql
            server_type: linux
    ~                              
    

    然后重启prometheus,访问prometheus页面http://192.168.101.251:9090/targets可以看到如下结果
    在这里插入图片描述
    到此这台新的mysql机器已经添加到了被监控服务器列表中,但是如果我的mysql服务器有多台,上面这种方式添加可阅读性不是很强,我们可以将这些配置写入到一个新的yml文件中,然后在prometheus.yml中指定新创建的yml文件

    创建config文件夹和mysql.yml文件
    mkdir config
    cd config
    touch mysql.yml
    
    mysql.yml文件内容如下:
    - targets:
      - 192.168.101.250:9100
      - 192.168.101.249:9100
      labels:
        role: mysql
        server_type: linux
    
    prometheus.yml修改如下
    #修改对应的mysql_server
     - job_name: 'mysql_server'
        file_sd_configs:
        - files:
          - config/mysql.yml #新创建的mysql.yml文件
    

    此时访问prometheus页面看到如下结果,因为我只是介绍这个功能,并没有在192.168.101.249这台机器上安装exporter,所以看到这台机器的状态是down
    在这里插入图片描述

    查看exporter具体监控了哪些服务器指标(metric)

    访问http://192.168.101.251:9090/graph,下面的下拉列表中的值都是监控指标,这些值也叫metric,在查询时使用
    在这里插入图片描述

    查看每个监控指标的意义

    访问http://192.168.101.251:9090/ 进入Status->Targets,然后点击Endpoint下面的链接,可以看到如下页面,该页面详细列出了所有监控指标已经他们的含义。
    在这里插入图片描述
    这些metric是由exporter决定的,安装不同类型的exporter看到的metric不同。

    查询演示

    接下来我在prometheus服务器上也安装一个exporter,然后做一些简单的查询演示
    添加新的配置后,配置如下,然后重启prometheus服务

    scrape_configs:
     - job_name: 'prometheus'
        static_configs:
        - targets: ['localhost:9090']
     - job_name: 'mysql_server'
        static_configs:
        - targets: ['192.168.101.250:9100']
          labels:
            role: mysql
            server_type: linux
     - job_name: 'nginx_server'
        static_configs:
        - targets: ['192.168.101.251:9100']
          labels:
            role: nginx
            server_type: linux
    

    查看页面显示正常
    在这里插入图片描述
    回到Graph查询页面,

    • 查询有多少被监控服务器
      查询语句:up
      在这里插入图片描述
      如果只想看总数,查询语句:count(up)或者count(up) by (instance,role)
    • 查询有多少linux机器
      查询语句:up{server_type=~“linux”}
      在这里插入图片描述
    • 查询服务器uname相关信息
      查询语句:node_uname_info
    • 查询服务器内存相关情况
      查询语句:node_memory_MemTotal_bytes

    5.告警

    前面我们已经知道了怎么将新服务器加入到监控系统中,以及怎么查看监控指标,但是还没有定义什么情况下指标异常,以及异常后怎么告警。关于告警本文暂不做介绍,有需要可以在网上查,也可以使用Grafana配置prometheus数据源实现监控和报警。

    展开全文
  • Prometheus监控Kafka集群

    2021-02-06 23:00:03
    prometheus监控kafka常见的有两种开源方案,一种是传统的部署exporter的方式,一种是通过jmx配置监控,本文将采用第二种方式进行配置。 项目地址: kafka_exporter:https://github.com/danielqsj/kafka_exporter ...
  • prometheus_client_scala:用于Prometheus监控的Scala客户端
  • Prometheus 监控 Hadoop3

    千次阅读 2020-06-03 16:39:12
    Prometheus 监控 Hadoop3 可能是全网最简洁的配置攻略 下载 jmx_exporter jmx_exporter Github地址 包含下载链接和使用说明。 我们可以看到jmx的使用方法是以java agent的形式启动,会开启一个端口供Prometheus拉数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,901
精华内容 11,560
关键字:

prometheus监控