首页 > 其他分享 >prometheus学习笔记之简介与安装

prometheus学习笔记之简介与安装

时间:2024-09-25 18:56:43浏览次数:9  
标签:node exporter 部署 简介 Prometheus 笔记 prometheus usr

一、prometheus 简介

1.简介

Prometheus是基于go语⾔开发的⼀套开源的监控、报警和时间序列数据库的组合,是由SoundCloud公司开发的开源监控系统, Prometheus于2016年加⼊CNCF(Cloud Native Computing Foundation,
云原⽣计算基⾦会) ,2018年8⽉9⽇prometheus成为CNCF继kubernetes 之后毕业的第⼆个项⽬,prometheus在容器和微服务领域中得到了⼴泛的应⽤,其特点主要如下:
  使⽤key-value的多维度(多个⻆度,多个层⾯,多个⽅⾯)格式保存数据
  数据不使⽤MySQL这样的传统数据库,⽽是使⽤时序数据库,⽬前是使⽤的TSDB
  ⽀持第三⽅dashboard实现更绚丽的图形界⾯,如grafana(Grafana 2.5.0版本及以上)
  组件模块化
  不需要依赖存储,数据可以本地保存也可以远程保存
  平均每个采样点仅占3.5 bytes,且⼀个Prometheus server可以处理数百万级别的的metrics指标数据。
  ⽀持服务⾃动化发现(基于consul等⽅式动态发现被监控的⽬标服务)
  强⼤的数据查询语句功(PromQL,Prometheus Query Language)
  数据可以直接进⾏算术运算
  易于横向伸缩
  众多官⽅和第三⽅的exporter实现不同的指标数据收集

2.为什么使⽤Prometheus

容器监控的实现⽅对⽐虚拟机或者物理机来说⽐⼤的区别,⽐如容器在k8s环境中可以任意横向扩容与缩容,那么就需要监控服务能够⾃动对新创建的容器进⾏监控,当容器删除后⼜能够及时的从监控服务
中删除,⽽传统的zabbix的监控⽅式需要在每⼀个容器中安装启动agent,并且在容器⾃动发现注册及模板关联⽅⾯并没有⽐较好的实现⽅式。

3.Prometheus 架构图

prometheus server:主服务,接受外部http请求,收集、存储与查询数据等
prometheus targets: 静态收集的⽬标服务数据
service discovery:动态发现服务
prometheus alerting:报警通知
push gateway:数据收集代理服务器(类似于zabbix proxy)
data visualization and export: 数据可视化与数据导出(访问客户端)

prometheus学习笔记之简介与安装_数据

二、 部署Prometheus Server 方式

可以通过不同的⽅式安装部署prometheus监控环境,虽然以下的多种安装⽅式演示了不同的部署⽅式,但是实际⽣产环境只需要根据实际需求选择其中⼀种⽅式部署即可,不过⽆论是使⽤哪⼀种⽅式安装部署的prometheus server,以后的使⽤都是⼀样的,为了更好的学习后续的笔记⼤部分以⼆进制安装环境为例,其它会做简单的对应介绍,目前主要有以下的安装方式:
1.docker-compose部署
2.Operator 部署
3.Helm部署
4.二进制部署

1.docker-compose部署

vim .env
ADMIN_USER=admin  
ADMIN_PASSWORD=admin

git clone https://github.com/Einsteinish/Docker-Compose-Prometheus-and-Grafana.git #同时部署了grafana
cd Docker-Compose-Prometheus-and-Grafana
docker-compose up -d #相关配置自行修改,启动后访问本机9090端口

2.Operator 部署

Operator部署器是基于已经编写好的yaml⽂件,可以将prometheus server、 alertmanager、grafana、 node-exporter等组件⼀键批量部署,相关配置自行修改

git clone -b v0.10.0 https://github.com/prometheus-operator/kubeprometheus.git
cd kube-prometheus/
vim manifests/prometheus-service.yaml
spec:
type: NodePort #修改为NodePort便于访问,或者通过ingress

kubectl apply --server-side -f manifests/setup
kubectl apply -f manifests/ #有些镜像⽆法下载需要⾃⾏解决
kubectl get pods -n monitoring #正常后访问节点IP:prometheus svc nodeport端口

3.helm部署

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm search repo prometheus-community
kubectl create ns monitoring
helm install prometheus-operator --set rbacEnable=true --namespace=monitoring  --wait prometheus-community/prometheus-operator #相关配置自行修改

#修改svc类型或者直接使用ingress
kubectl -n monitoring patch svc prometheus-operator-grafana -p '{"spec":{"type":"NodePort"}}'
kubectl -n monitoring patch svc prometheus-operator-prometheus -p '{"spec":{"type":"NodePort"}}'
获取grafana admin用户密码
kubectl  -n monitoring get secrets |grep Opaque|grep grafana|awk '{print $1}'|xargs kubectl -n monitoring get secrets -o yaml|grep admin-password|grep -v f:|awk -F "admin-password: " '{print $2}'|base64 -d

4.二进制部署

wget https://github.com/prometheus/prometheus/releases/download/v2.36.0/prometheus-2.36.0.linux-amd64.tar.gz
tar xf prometheus-2.36.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local
ln -sv prometheus-2.36.0.linux-amd64 prometheus

vim /usr/lib/systemd/system/prometheus.service #二进制和配置文件根据实际情况替换,命令行参数通过命令帮助获取
[Unit]
Description=prometheus
[Service]
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSecs=5s
SuccessExitStatus=0
LimitNOFILE=655360
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=prometheus
[Install]
WantedBy=multi-user.target

systemctl   daemon-reload
systemctl   start prometheus.service
systemctl  enable prometheus.service
netstat -tnlp #访问本机9090端口

三、二进制安装node-export并配置prometheus抓取数据

k8s各node节点使⽤⼆进制或者daemonset⽅式安装node_exporter,⽤于收集各k8s node节点宿主机的监控指标数据,默认监听端⼝为9100

1.安装node-export

wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local
cd /usr/local/
ln -sv node_exporter-1.3.1.linux-amd64/ node_exporter

vim /usr/lib/systemd/system/node-exporter.service #没什么配置参数
[Unit]
Description=Prometheus Node Exporter
After=network.target

[Service]
ExecStart=/usr/local/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

systemctl   daemon-reload &&  systemctl  restart node-exporter
systemctl  enable  node-exporter
netstat -tnlp #默认9100

2.访问node exporter web界⾯验证安装

访问地址:节点ip:9100/metrics,正常情况下会显示当前节点信息

prometheus学习笔记之简介与安装_github_02

node-exporter常⻅指标

node_boot_time:系统⾃启动以后的总结时间
node_cpu:系统CPU使⽤量
node_disk*:磁盘IO
node_filesystem*:系统⽂件系统⽤量
node_load1:系统CPU负载
node_memeory*:内存使⽤量
node_network*:⽹络带宽指标
node_time:当前系统时间
go_*: node exporter中go相关指标
process_*: node exporter⾃身进程相关运⾏指标

3.配置prometheus server收集node-exporter指标数据

1.修改prometheus配置文件
vim /usr/local/prometheus/prometheus.yml
#在proemtheus job下添加需要抓取的target的,根据实际情况修改
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090","192.168.100.131:9100","192.168.100.132:9100"]


2.更新配置
curl -X POST http://127.0.0.1:9090/-/reload  #启动时需要添加开启热更新参数

4.验证node数据抓取

prometheus学习笔记之简介与安装_linux_03

prometheus学习笔记之简介与安装_linux_04

prometheus图形数据展示

prometheus学习笔记之简介与安装_数据_05

 参考文档:

https://prometheus.io/

https://github.com/prometheus/prometheus

https://github.com/prometheus/node_exporter

"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少



标签:node,exporter,部署,简介,Prometheus,笔记,prometheus,usr
From: https://blog.51cto.com/u_8901540/12111430

相关文章

  • mini-lsm通关笔记Week2Overview
    Week2Overview:CompactionandPersistence在上周,您已经实现了LSM存储引擎的所有必要结构,并且您的存储引擎已经支持读写接口。在本周中,我们将深入探讨SST文件的磁盘组织,并研究在系统中实现性能和成本效益的最佳方法。我们将花4天时间学习不同的compaction策略,从最简单的到最......
  • golang学习笔记13-函数(二):init函数,匿名函数,闭包,defer
    注:本人已有C,C++,Python基础,只写本人认为的重点。这个知识点基本属于go的特性,比较重要,需要认真分析。一、init函数每个文件都可以定义init函数,它会在main函数执行前被调用,无论它的定义位置是在main后还是前。而全局变量的优先级又高于init,所以优先级是这样的:全局变量>init......
  • 如何解决win11扩展属性不一致问题(华硕天选3笔记本)
    1.笔者出现该问题的原因:今天上午笔者被迫更新win11,在更新途中,笔者突然好奇更新强制关机会有什么问题呢?这一关重新启动后就出问题了,发现的问题如下:1.1:点击这种类型(就是图标右下角有个盾牌框)的文件会卡一下然后弹出错误框(大概内容)"C:\Users\ASUS\Desktop\*******"文件扩展......
  • mongoDB 简介
    参考文档 https://www.runoob.com/mongodb/mongodb-tutorial.htmlmongoDB菜鸟教程https://mongodb.net.cn/manual/mongoDB中文官网 1. mongoDB 概述MongoDB是一个流行的开源文档型数据库,它使用类似JSON的文档模型存储数据,这使得数据......
  • 开启nginx_stub_status prometheus
    开启nginx_stub_statusprometheus要在Nginx中启用nginx_stub_status并将其数据暴露给Prometheus,你需要执行以下步骤:配置Nginx以使用stub_status。设置Prometheus的exporter来抓取nginx_stub_status页面。配置Prometheus服务来抓取exporter的数据。......
  • prometheus学习笔记之prometheus存储系统
    一、prometheus本地存储系统1.本地存储架构默认情况下,prometheus将采集到的数据存储在本地的TSDB数据库中,路径默认为prometheus安装目录的data目录,数据写入过程为先把数据写入wal日志并放在内存,然后2小时后将内存数据保存至一个新的block块,同时再把新采集......
  • docker笔记_数据卷、挂载
    docker数据存储概述数据卷(Volumes)特点操作绑定挂载(BindMounts)内存挂载(tmpfs)总结概述镜像构建过程中,所产生的layer都是只读层,只有在创建容器时才会生成一个可写的容器层(contatnerlayer)。如下图:在默认情况下,容器内部创建的所有文件都存储在可写层中。这导致:获取......
  • LoRA: Low-Rank Adaptation of Large Language Models 笔记
    问题背景⼤模型通常包含数亿甚⾄数百亿个参数,对其进⾏微调需要⼤量的计算资源和存储空间。在微调过程中,直接修改预训练模型的所有参数可能会破坏模型的原始性能。存储和部署微调后的⼤模型需要⼤量存储空间,尤其是当需要在多个应⽤场景中部署不同微调版本时。许多微调⽅法会增......
  • 【运维监控】Prometheus+grafana+blackbox_exporter+alertmanager监控业务接口异常预
    运维监控系列文章入口:【运维监控】系列文章汇总索引文章目录一、prometheus部署二、grafana部署三、blackbox_exporter部署1、下载2、解压3、启动4、验证四、prometheus集成blackbox_exporter1、添加prometheus监控规则2、添加prometheus的预警规则3、添加prometheus......
  • FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
    FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播 合集-FFmpeg开发实战(55)  ​之前的文章《利用RTMP协议构建电脑与手机的直播Demo》介绍了如何使用RTMPStreamer实现完整的RTMP直播流程,另一篇文章《利用SRT协议构建手机APP的直播Demo》介绍了如何使用SRT......