Prometheus-普罗米修斯

Prometheus

  • Prometheus简介

    • 什么是普罗米修斯?
  • prometheus的特征

  • prometheus的组件

  • Prometheus的配置

  • prometheus的架构

  • Prometheus部署

    • Prometheus
  • node_exporter

  • grafana

Prometheus简介

===========================================================================

什么是普罗米修斯?


  • Prometheus是一个开源的系统监控工具。根据配置的任务(job)以http/s周期性的收刮scrape/pull)指定目标(target)上的指标(metric)。目标(target)可以以静态方式或者自动发现方式指定。Prometheus将收刮(scrape)的指标(metric)保存在本地或者远程存储上

  • Prometheus以pull方式来收集指标。对比push方式,pull可以集中配置、针对不同的视角搭建不同的监控系统;

  • Prometheus于2016年加入CNCF,是继kubernetes之后,第二个加入CNCF的开源项目!

Prometheus官网

prometheus的特征


  • 提供多维度数据模型,使用指标名称和键值对标识的时间序列数据

  • 提供灵活的PromQL查询方式,还提供了HTTP查询接口,可以很方便地结合Grafana等组件展示数据。

  • 不依赖外部存储,支持单节点的本地存储。通过Prometheus自带的时序数据库,可以完成每秒百万及的数据存储,如果需要存储大量历史数据,还可以对接第三方的时序数据库。

  • 时间序列收集通过HTTP的拉取方式进行,并提供了开放的指标数据标准。

  • 支持向中间网关推送时序数据,可以更加灵活地适用于多种监控场景。

  • 支持通过动态服务发现和静态文件配置获取监控对象,目前已支持Kubernetes、Etcd、Consul等多种服务发现机制。

  • 支持多种模式的图形展示和仪表盘。

  • 大多数Prometheus的组件都是使用Go语言编写的,这使得它们很容易以二进制文件的形式构建和部署。

prometheus的组件


  • Prometheus Server:用于收集、存储和查询时间序列数据。通过静态配置文件管理监控目标,也可以配合使用动态服务发现的方式动态管理监控目标,并从这些监控目标中获取数据。它将采集到的数据按照时间序列的方式存储在本地磁盘当中或者外部的时序数据库中,可通过PromQL语言对数据的查询以及分析。

  • Client Library:为被监控的应用生成相应的指标(Metric)数据并暴露给Prometheus Server。当Prometheus Server 来拉取时,直接返回实时状态的指标数据。

  • Push Gateway:主要用于短期存在的Jobs。由于这类Jobs存在时间较短,可能在Prometheus Server来拉取数据之前就消失了。所以,Jobs可以直接向Push Gateway推送它们的指标数据,然后Prometheus Server再从Push Gateway拉取。

  • Exporters:用于暴露已有的第三方服务的指标数据通过HTTP服务的形式暴露给Prometheus Server,比如HAProxy、StatsD、Graphite等等。Prometheus Server通过访问该Exporter提供的Endpoint,即可获取到需要采集的监控数据。

  • Alertmanager:从Prometheus Server接收到告警后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。Alertmanager的告警方式非常灵活,支持通过邮件、slack或钉钉等多种途径发出告警。

Prometheus的配置


配置共分为三部分,分别是全局配置、告警配置、收集数据配置

vim /usr/local/prometheus/prometheus.yml

#全局配置

global:

scrape_interval: 15s #每隔15秒向目标抓取一次数,默认为一分钟

evaluation_interval: 15s #每隔15秒执行一次告警规则,默认为一分钟

scrape_timeout: 600s #抓取数据的超时时间,默认为10s

#告警配置

alerting:

alertmanagers:

  • static_configs:

  • targets:

- alertmanager:9093 #alertmanager所部署机器的ip和端口

#定义告警规则和阈值的yml文件

rule_files:

- “first_rules.yml”

- “second_rules.yml”

#收集数据配置

#以下是Prometheus自身的一个配置.

scrape_configs:

#这个配置是表示在这个配置内的时间序例,每一条都会自动添加上这个{job_name:“prometheus”}的标签.

  • job_name: “prometheus”

metrics_path defaults to ‘/metrics’

scheme defaults to ‘http’.

static_configs: #静态配置

  • targets: [“localhost:9090”]

prometheus的架构


在这里插入图片描述

工作流程

  • Prometheus Server直接从HTTP接口或者Push Gateway拉取指标(Metric)数据。

  • Prometheus Server在本地存储所有采集的指标(Metric)数据,并在这些数据上运行规则,从现有数据中聚合和记录新的时间序列,或者生成告警。

  • Alertmanager根据配置文件,对接收到的告警进行处理,发出报警。

  • 在Grafana或其他API客户端中,可视化收集的数据。

Prometheus部署

===========================================================================

环境说明

| 主机 | IP |

| — | — |

| master | 192.168.129.135 |

| slave | 192.168.129.136 |

提供安装包

https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz

Prometheus


//安装go语言

[root@master ~]# yum -y install go

[root@master ~]# go version

go version go1.16.7 linux/amd64

//解压

[root@master src]# ls

debug kernels

[root@master src]# ls

debug kernels prometheus-2.31.1.linux-amd64.tar.gz

[root@master src]# tar xf prometheus-2.31.1.linux-amd64.tar.gz -C /usr/local/

[root@master src]# ls /usr/local/

bin etc games include lib lib64 libexec prometheus-2.31.1.linux-amd64 sbin share src

//创建软连接

[root@master src]# ln -s /usr/local/prometheus-2.31.1.linux-amd64/ prometheus

[root@master src]# ls /usr/local/

bin games lib libexec prometheus-2.31.1.linux-amd64 share

etc include lib64 prometheus sbin src

//启动

[root@master src]# /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

//设置开机自启

[root@master ~]# vim /usr/lib/systemd/system/prometheus.service

[Unit]

Description=The Prometheus Server

After=network.target

[Service]

Restart=on-failure

ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml

ExecStop=/bin/kill -HUP $MAINPID

RestartSec=15s

[Install]

WantedBy=multi-user.target

[root@master ~]# systemctl daemon-reload

[root@master ~]# systemctl enable --now prometheus

Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /usr/lib/systemd/system/prometheus.service.

[root@master ~]# ss -anlt

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 128 *:9090 :

LISTEN 0 128 [::]:22 [::]😗

验证

浏览器打开IP:9090端口即可打开普罗米修斯自带的监控页面

在这里插入图片描述

node_exporter


提供安装包

node_exporter-1.3.0.linux-amd64.tar.gz

//解压

[root@slave ~]# /usr/src/

[root@slave src]# ls

debug kernels node_exporter-1.3.0.linux-amd64.tar.gz

[root@p2 src]

tar xf node_exporter-1.3.0.linux-amd64.tar.gz -C /usr/local/

//创建软连接

[root@p2 src]# ln -s /usr/local/node_exporter-1.3.0.linux-amd64/ node_exporter

[root@p2 src]# ls /usr/local/

bin games lib libexec node_exporter-1.3.0.linux-amd64 share

etc include lib64 node_exporter sbin src

//启动

[root@slave ~]# /usr/local/node_exporter/node_exporter

ts=2021-11-25T14:30:06.826Z caller=node_exporter.go:182 level=info msg=“Starting node_exporter” version=“(version=1.3.0, branch=HEAD, revision=c65f870ef90a4088210af0319498b832360c3366)”

ts=2021-11-25T14:30:06.826Z caller=node_exporter.go:183 level=info msg=“Build context” build_context=“(go=go1.17.3, user=root@4801f8f250a6, date=20211118-16:34:14)”

//设置开机自启

[root@slave ~]# vim /etc/systemd/system/node_exporter.service

[unit]

Description=The node_exporter Server

After=network.target

[Service]

ExecStart=/usr/local/node_exporter/node_exporter

Restart=on-failure

RestartSec=15s

SyslogIdentifier=node_exporter

[Install]

WantedBy=multi-user.target

//重新加载

[root@slave ~]# systemctl daemon-reload

[root@slave ~]# systemctl enable --now node_exporter

Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service → /etc/systemd/system/node_exporter.service.

//查看状态

[root@slave ~]# systemctl status node_exporter

● node_exporter.service

Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disabled)

Active: active (running) since Thu 2021-11-25 22:34:49 CST; 1min 38s ago

Main PID: 65492 (node_exporter)

Tasks: 4 (limit: 11300)

Memory: 8.7M

CGroup: /system.slice/node_exporter.service

└─65492 /usr/local/node_exporter/node_exporter

11月 25 22:34:49 slave node_exporter[65492]: ts=2021-11-25T14:34:49.349Z caller=node_exporter.go:115>

11月 25 22:34:49 slave node_exporter[65492]: ts=2021-11-25T14:34:49.349Z caller=node_exporter.go:115>

[root@slave ~]# ss -anlt

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 128 *:9100 :

LISTEN 0 128 [::]:22 [::]😗

查看监控数据

浏览器打开IP:9090/metrics

在这里插入图片描述

修改Prometheus 配置,监控Linux机器

[root@master ~]# cat /usr/local/prometheus/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’]

  • job_name: ‘Linux’ #添加以下5行

static_configs:

  • targets: [‘192.168.129.136:9100’] #添加被控机的ip以及端口

labels:

instance: Linux

//重启

[root@master ~]# systemctl restart prometheus

在这里插入图片描述

grafana


[root@master ~]# yum -y install grafana

[root@master ~]# grafana-cli plugins install alexanderzobnin-zabbix-app

installing alexanderzobnin-zabbix-app @ 4.1.5

from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/4.1.5/download

into: /var/lib/grafana/plugins

✔ Installed alexanderzobnin-zabbix-app successfully

Restart grafana after installing plugins .

[root@master ~]# systemctl start grafana-server

[root@master ~]# ss -anlt

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 128 [::]:22 [::]😗

LISTEN 0 128 *:3000 :

LISTEN 0 128 *:9090 :

LISTEN 0 128 *:80 :

网页登录

  • 首次登陆时需要ip+端口号(默认为3000)

  • 默认账号:admin 密码:admin

在这里插入图片描述

再次输入(因为你是首次登陆)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

最后

小编这些年深知大多数初中级工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此我收集整理了一份《2024年Java全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你需要这些资料,⬅专栏获取
50,text_Q1NETiBA5LSC5KyJ5Lay,size_20,color_FFFFFF,t_70,g_se,x_16)
在这里插入图片描述

最后

小编这些年深知大多数初中级工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此我收集整理了一份《2024年Java全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-iFGuGgx7-1719522660204)]

[外链图片转存中…(img-a2ATIbqr-1719522660204)]

[外链图片转存中…(img-y8QT33Hj-1719522660205)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你需要这些资料,⬅专栏获取

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值