Prometheus+Grafana基础介绍及搭建使用

Prometheus+Grafana搭建

一、Prometheus介绍

Prometheus由Go语言编写而成,采用Pull方式获取监控信息,并提供了多维度的数据模型和灵活的查询接口。Prometheus不仅可以通过静态文件配置监控对象,还支持自动发现机制,能通过Kubernetes、Consl、DNS等多种方式动态获取监控对象。在数据采集方面,借助Go语言的高并发特性,单机Prometheus可以采取数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机Prometheus每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远程存储。

Prometheus的运行原理

通过Http协议周期性抓取被监控组件的状态。输出被监控组件信息的Http接口称为exporter。

常用组件大部分都有exporter可以直接使用,比如haproxy,Nginx,MySQL,Linux系统信息(磁盘、内存、CPU、网络等)

Prometheus主要特点
  1. 一个多维数据模型(时间序列由metrics指标名字和设置key/value键/值的labels构成)
  2. 非常高效的存储,平均一个采样数据占3.5字节左右,320万的字节时件序列,每30秒采样,保持60天,消耗磁盘大概228G
  3. 一种灵活的查询语言–PromQL
  4. 无依赖存储,支持local和remote不同类型
  5. 采用http协议,使用pull模式,拉取数据
  6. 监控目标,可以采用服务器发现或静态配置的方式
  7. 多种模式的图像和仪表支持,图形化友好
  8. 通过中间网关支持推送时间
Prometheus组件

Prometheus由多个组件组成,但是其中很多组件是可选的

Prometeus Server:收集和存储时间序列数据

Client Library:客户端库,为需要监控的服务生成相应的

metrics:并暴露给Prometheus server,当Prometheus server来Pull时,直接返回实时状态的metrics

pushgateway对于短暂运行的任务,负责接受和缓存时间序列数据,同时也是一个数据源

exporter:各种exporter,面向硬件、存储、数据库、Http服务等

alertmanager:处理报警

webUI:其他各种支持的工具,本身的界面值适合用来语句查询,数据可视化,需要第三方组件,比如Granfana

在这里插入图片描述

说明:

  1. Prometheus server:服务核心组件,采用 pull 方式收集 apiserver、scheduler、controller-manager、kubelet 组件数据, 通过 http 协议传输。并存储时间序列数据
  2. Exporters/Jobs:负责收集不支持Instrumentation的目标对象(host, container…)的性能数据,并通过 HTTP 接口供 Prometheus Server 获取。
    • Node-Exporter:用于收集k8s集群中各node节点的物理指标状态数据,如平均负载、CPU、内存、磁盘、网络等资源信息的指标数据,需要部署到所有运算节点。
    • Kube-State-Metrics:为prometheus采集k8s资源数据的exporter,通过监听APIServer收集kubernetes集群内资源对象的状态指标数据,例如pod、deployment、service等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计。 需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以可以使用Prometheus来抓取这些数据然后存储,主要关注的是业务相关的一些元数据,比如Deployment、Pod、副本状态等;调度了多少个replicas?现在可用的有几个?多少个Pod是running/stopped/terminated状态?Pod重启了多少次?有多少job在运行中。
    • cadvisor:用来监控容器内部使用资源的信息,比如 CPU、内存、网络I/O、磁盘I/O。
    • blackbox-exporter:监控业务容器存活性。
  3. Service Discovery:服务发现,Prometheus支持多种服务发现机制:文件,DNS,Consul,Kubernetes,OpenStack,EC2等等。 基于服务发现的过程并不复杂,通过第三方提供的接口,Prometheus查询到需要监控的Target列表,然后轮训这些Target获取监控数据。
  4. Alertmanager:是一个独立的告警模块,从 Prometheus server 端接收到 alerts 后,会进行去重、分组, 并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉等。
  5. Pushgateway:类似一个中转站,Prometheus 的 server 端只会使用 pull 方式拉取数据,但是某些节点因为某些原因只能使用 push 方式推送数据,那么它就是用来接收 push 而来的数据并暴露给 Prometheus 的 server 拉取的中转站。 可以理解成目标主机可以上报短期任务的数据到 Pushgateway,然后 Prometheus server 统一从 Pushgateway 拉取数据
  6. Grafana:是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通知给告警接收方。其官方库中具有丰富的仪表盘插件。
    • Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。目前使用grafana的公司有很多,如paypal、ebay、intel等。
Grafana介绍

Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和说几句统计,带有告警功能。

特点
  1. 可视化:快速和灵活的客户端图形具有多种选项,面板插件为许多不同的方式可视化指标和日志。
  2. 报警:可视化地为最重要的指标定义警报规则,Granfana将持续评估他们,并发送通知。
  3. 通知:警报更改状态时,他会发出通知,接受电子邮件通知
  4. 动态仪表盘:使用模板变量创建动态和可重用的仪表盘,这些模板变量作为下拉菜单出现在仪表板顶部。
  5. 混合数据源:在同一个图中混合不同的数据源,可以根据每个查询指定数据源,这甚至适用于自定义数据源。
  6. 注释:注释来自不同数据源图标,将鼠标悬停在事件上可以显示完整的事件元数据和标记。
  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲
你!要在Linux搭建PrometheusGrafana,你可以按照以下步骤进行操作: 1. 首先,确保你已经在Linux服务器上安装了Docker和Docker Compose。如果没有安装,可以参考官方文档进行安装。 2. 创建一个新的目录来存放PrometheusGrafana的配置文件。进入该目录并创建一个名为docker-compose.yml的文件。 3. 打开docker-compose.yml文件,并添加以下内容: ```yaml version: '3' services: prometheus: image: prom/prometheus volumes: - ./prometheus:/etc/prometheus command: - --config.file=/etc/prometheus/prometheus.yml ports: - 9090:9090 grafana: image: grafana/grafana ports: - 3000:3000 ``` 上述配置将创建两个服务:PrometheusGrafanaPrometheus服务将监听9090端口,Grafana服务将监听3000端口。 4. 在同一目录下创建一个名为prometheus目录,用于存放Prometheus的配置文件。进入prometheus目录,并创建一个名为prometheus.yml的文件。 5. 打开prometheus.yml文件,并添加以下内容: ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] ``` 上述配置将告诉Prometheus每隔15秒抓取一次本地主机的metrics信息。 6. 返回到docker-compose.yml文件所在目录,并在终端中运行以下命令启动PrometheusGrafana容器: ``` docker-compose up -d ``` 这将在后台启动容器。 7. 等待一段时间,然后在浏览器中访问http://服务器IP:3000,会看到Grafana的登录页面。 8. 使用默认用户名(admin)和密码(admin)登录Grafana。 9. 在Grafana中,点击左侧面板上的"Configuration"选项,然后选择"Data Sources"。 10. 点击"Add data source"按钮,选择"Prometheus"作为数据源类型。 11. 在"HTTP"选项卡中,输入Prometheus服务的URL,即http://localhost:9090。 12. 点击"Save & Test"按钮,确保连接正常。 现在,你已经成功搭建PrometheusGrafana。你可以开始创建仪表盘和监控指标了。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值