首页 > 其他分享 >云原生监控|Prometheus

云原生监控|Prometheus

时间:2023-04-18 22:34:52浏览次数:41  
标签:原生 node local prometheus Prometheus 监控 root localhost

一、背景

Prometheus是由SoundCloud开发的开源监控系统的开源版本。2016年,由Google发起的Linux基金会(Cloud Native Computing Foundation,CNCF)将Prometheus纳入其第二大开源项目。Prometheus在开源社区也十分活跃,成为受欢迎度仅次于 Kubernetes 的项目

Prometheus 原理:

Prometheus 的基本原理是通过周期性地从各种目标(如应用程序、服务、数据库等)拉取指标数据,并将其存储在本地数据库中。然后,可以使用 PromQL(Prometheus 查询语言)对存储的指标数据进行查询和聚合,并设置警报规则,以便在指标超过或低于阈值时触发警报。 <br>

Prometheus 架构图与核心组件:

image.png

  • Prometheus Server:Prometheus Server 负责拉取指标数据并存储在本地的时间序列数据库中。它还处理查询和警报规则,并触发警报。
  • Exporters:Exporters 是用于从各种目标中获取指标数据的插件。Prometheus 社区提供了许多常用的 Exporters,如 Node Exporter(用于监控主机)、Blackbox Exporter(用于网络探测)等。此外,用户还可以编写自定义 Exporters 来收集自定义应用程序的指标数据。
  • Alertmanager:Alertmanager 负责处理 Prometheus Server 生成的警报,并将其发送给配置的接收器(如电子邮件、PagerDuty、Slack 等)。

除了以上核心组件外,Prometheus 还有一些其他工具,如 Grafana(用于可视化监控数据)、Pushgateway(用于推送临时性的指标数据)等。

Prometheus 的特点

普罗米修斯对传统监控告警模型进行了彻底的颠覆

  • 易于管理:核心部分只有单独二进制文件,不存在第三方依赖,只需要本地磁盘,没有级联故障风险
  • 基于Pull模型的架构模式,可以在任意地方搭建监控系统,对于一些复杂的情况,还可以使用 Prometheus 服务发现(Service Discovery)的能力动态管理监控目标。

高效 对于监控系统而言,大量的监控任务必然导致有大量的数据产生。而 Prometheus 可以高效地处理这些数据,对于单一 Prometheus Server 实例而言它可以处理:

  1. 数以百万的监控指标
  2. 每秒处理数十万的数据点

可视化

  1. Prometheus Server 中自带的 Prometheus UI,可以方便地直接对数据进行查询,并且支持直接以图形化的形式展示数据。同时 Prometheus 还提供了一个独立的基于Ruby On Rails 的 Dashboard 解决方案 Promdash。
  2. 最新的 Grafana 可视化工具也已经提供了完整的 Prometheus 支持,基于 Grafana 可以创建更加精美的监控图标。
  3. 基于 Prometheus 提供的 API 还可以实现自己的监控可视化 UI。

二、部署 Prometheus

以下部署只用到了两个组件,由于环境关系,其他组件可自行搭建学习

环境:

类型 IP 组件
服务端 192.168.100.100 prometheus
客户端 192.168.100.101 node-exporter
客户端 192.168.100.102 node-exporter

2.1 服务端配置

创建prometheus用户和用户组

[root@localhost ~]# groupadd prometheus
[root@localhost ~]# useradd prometheus -g prometheus

安装prometheus服务

#将下载好的prometheus-2.10.0.linux-amd64.tar.gz传到服务端的/usr/local/目录下
#解压源码包 
[root@localhost local]# tar -zxvf prometheus-2.10.0.linux-amd64.tar.gz
[root@localhost local]# mkdir /etc/prometheus
[root@localhost local]# cp /usr/local/prometheus-2.10.0.linux-amd64/prometheus.yml 		/etc/prometheus/prometheus.yml

创建启动文件

[root@localhost local]# vim /etc/systemd/system/prometheus.service
[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus-2.10.0.linux-amd64/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target

启动prometheus服务

[root@localhost ~]# mkdir /data/prometheus
[root@localhost ~]# chown -R prometheus:prometheus /data/prometheus
[root@localhost ~]# chown -R prometheus:prometheus /etc/prometheus
[root@localhost ~]# systemctl start prometheus

测试

浏览器访问 http://ip:9090

2.2 客户端配置

创建prometheus用户和用户组

[root@localhost ~]# groupadd prometheus
[root@localhost ~]# useradd prometheus -g prometheus

安装node_exporter服务

#将下载好的node_exporter-0.18.1.linux-amd64.tar.gz 文件上传到客户端的/usr/local/目录下
#解压源码包 
[root@localhost local]# tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz
[root@localhost local]# vim /etc/systemd/system/node_exporter.service

配置启动文件

[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter-0.18.1.linux-amd64/node_exporter --web.listen-address=:9091
Restart=on-failure
[Install]
WantedBy=multi-user.target

启动服务

[root@localhost local]# systemctl start node_exporter.service
[root@localhost local]# systemctl enable node_exporter.service
[root@localhost local]# systemctl status node_exporter.service

2.3 服务端加入客户端

修改prometheus配置

[root@dev local]# vim /etc/prometheus/prometheus.yml
# 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: 'file_monitor'
    file_sd_configs:
      - files:
        - /etc/prometheus/file/target.json

注意!!!! 一定要注意格式,与上方的配置对齐,一旦不对齐,服务无法启动

[root@dev ~]# mkdir /etc/prometheus/file
[root@dev ~]# vim /etc/prometheus/file/target.json
[{
        "targets": ["192.168.100.101:9091"],
        "labels": {
                "instance": "192.168.100.101",
                "job": "node",
        "area":"Client"
        }
},{
        "targets": ["192.168.100.102:9091"],
        "labels": {
                "instance": "192.168.100.102",
                "job": "node",
        "area":"Client"
        }
}]

添加授权,重启prometheus

[root@localhost ~]# chown -R prometheus:prometheus /etc/prometheus
[root@localhost ~]# systemctl restart prometheus

测试访问

浏览器访问 http://ip:9090

标签:原生,node,local,prometheus,Prometheus,监控,root,localhost
From: https://blog.51cto.com/suncj/6204097

相关文章

  • MASA MAUI Plugin (十)iOS消息推送(原生APNS方式)
    MASAMAUIPlugin(十)iOS消息推送(原生APNS方式)背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAUI的补......
  • 63、Prometheus-独立部署的Prometheus监控K8S集群
    Kubernetes学习目录1、简介1.1、原因这里我们以prometheus的配置解析如获取各各所需的文件和相关的原理问题,不会细写通过标签如果去获取数据的规则,先把获取K8S的数据链路打通,有助于后面的深入。研究四五天,网上搜了,获取相关token和ca.crt文件这块都是忽略了事,踏了不少坑。1.2......
  • 云原生之在kubernetes集群下部署Mysql应用
    (云原生之在kubernetes集群下部署mysql应用)一、Mysql介绍数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而加快了访问速度并提高了灵活性。MySQL使用了标准......
  • Grafana监控OracleDB的完整过程
    Grafana监控OracleDB的完整过程背景两年前曾经写过一个进行Oracle监控的简单blog但是周天晚上尝试进行处理时发现很不完整了.很多数据获取不到.晚上又熬夜了好久进行处理.感觉还是需要总结一下,不然就忘记了获取镜像还是使用docker的方式来暴露Oracle的服务使用的......
  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅲ)
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生数据......
  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅲ)
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生数......
  • 使用强大的可视化工具redislive来监控我们的redis,别让自己死的太惨~~~
    作为玩windows的码农,在centos上面装点东西,真的会崩溃的要死,,,我想大家也知道,在centos上面,你下载的是各种源代码,需要自己编译。。。而使用yum的话,这个吊软件包有点想nuget,不过yum上面都是老的掉牙的软件。。。有时候还要升级,比如我在安装redis的另一种监控re......
  • zabbix agent自定义监控项,监控交换机vlan流量
    脚本目的:需要对华为ac中的ssid流量进行监控,但acweb页面中与snmp取值差异很大。正好ac的用户流量配置了本地转发,用户vlan的网关在一台交换机上。交换机可以配置vlanstatistic以统计vlan内的流量。但vlan流量统计后,没有对应的snmpoid,考虑使用python脚本来进行取值。在zabbix......
  • 【博云+智领云】携手云原生大数据领域,开展深度合作
    近日,博云与LinkTimeCloud智领云达成战略合作伙伴关系,基于此前坚实合作基础,全面拓宽合作广度与深度,共同推出基于Kubernetes的企业级容器云+云原生大数据技术融合的新型数字化IT底座,并且在某国家级创新中心首次落地。以Hadoop为中心的大数据生态系统从2006年开源以来,一直是大部分企......
  • zabbix 集成 prometheus 数据
    一、概述Zabbix和Prometheus都是开源监控系统,它们具有不同的特点和优势,因此很多人希望将它们集成在一起,以便充分利用它们的功能。以下是将Zabbix和Prometheus集成的一些步骤:安装和配置Prometheus:在安装和配置Prometheus之前,需要先确定您要监控的目标。可以是主机、容器、服务等......