prometheus +pushgatewa +grafana的安装部署与测试

news/2024/4/26 21:41:10/文章来源:https://blog.csdn.net/zjlgdxzzw/article/details/129158345

# prometheus搭建教程

## 主要概念

prometheus 主要功能是负责数据的手机存储, 手机的来源是各种exporter。 比如mysql 有mysql exporter ,服务器性能指标的exporter 等等。

因此为了能够监控到某些东西,如主机的CPU 使用率,我们需要使用到 Exporter。Prometheus 周期性的从 Exporter 暴露的HTTP 服务地址(通常是/metrics)拉取监控样本数据。

## prometheus安装部署

访问官网

https://prometheus.io/download/

选择linux版本下载

https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.linux-amd64.tar.gz

上传到服务器

解压

修改配置文件

prometheus.yml文件

```

my global config

global: # global是一些常规的全局配置,这里只列出了两个参数:

scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. #每15s采集一次数据

evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. #每15s做一次告警检测

# 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: # 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" #

这是prometheus本机的一个监控节点,可以继续扩展加入其它需要被监控的节点,例如:

# metrics_path defaults to '/metrics'

# scheme defaults to 'http'.

#可以看到targets可以并列写入多个节点,用逗号隔开,机器名+端口号,端口号主要是exporters的端口,在这里9100其实是node_exporter的默认端口。配置完成后,prometheus就可以通过配置文件识别监控的节点,持续开始采集数据,prometheus基础配置也就搭建好了。

static_configs:

- targets: ["localhost:9090"] # 启动的端口

```

启动命令

*nohup ./prometheus --config.file=prometheus.yml > ./prometheus.log 2>&1 &*

## exporter 安装部署

下载地址

https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz

*nohup ./node_exporter > node_exporter.log 2>&1 &*

ps -ef |grep node_exporter

检查 是否正常启动

打开网页 http://10.50.51.30:9100/metrics

配置node_exporter的自启动

```

vi /usr/lib/systemd/system/node_exporter.service

[Unit]

Description=node_export

Documentation=https://github.com/prometheus/node_exporter

After=network.target

[Service]

Type=simple

ExecStart= /usr/local/node_exporter-1.4.0/node_exporter

Restart=on-failure

[Install]

WantedBy=multi-user.target

```

## grafana安装部署

grafana官方下载地址:https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.6.linux-amd64.tar.gz

tar -zxvf grafana-enterprise-9.3.6.linux-amd64.tar.gz

参考教程

https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1

启动命令

nohup ./grafana-server &

需要配置邮箱信息

在grafana目录下创建目录config,在里面创建文件grafana.ini

```

#################################### SMTP / Emailing ##########################

# 配置邮件服务器

[smtp]

enabled = true

# 发件服务器

host = smtp.qq.com:465

# smtp账号

user = 2469278741@qq.com

# smtp 授权码

password = 123456

# 发信邮箱

from_address = 2469278741@qq.com

# 发信人

from_name = zhiweiliao

```

需要配置数据源文件 conf/ provisioning /datasource.yml

```

# config file version

apiVersion: 1

deleteDatasources: #如果之前存在name为Prometheus,orgId为1的数据源先删除

- name: Prometheus

orgId: 1

datasources: #配置Prometheus的数据源

- name: Prometheus

type: prometheus

access: proxy

orgId: 1

url: http://prometheus:9090 #在相同的docker compose下,可以直接用prometheus服务名直接访问

basicAuth: false

isDefault: true

version: 1

editable: true

```

打开页面

http://10.50.51.30:3000/

跳过用户名密码访问

添加prometheus数据源

点击右侧小齿轮图标 ==》add data source

选择prometheus 填入url http://localhost:9090 点击save&test成功

测试查询

点击explorer 小图标

选择顶部 explore 右边的 下拉框里的 prometheus

metric里选择 go_gc_duration_seconds

label filters instance

localhost:9090 点击左上角的runQuery 就有图表数据出来了

## pushgateway安装部署

有些指标是能通过拉取来实现的,但是有些数据是事件触发的,或者我们想推送到prometheus怎么办这个时候就需要pushgateway了。

下载地址:https://github.com/prometheus/pushgateway/releases/download/v1.5.1/pushgateway-1.5.1.linux-amd64.tar.gz

启动命令 nohup ./pushgateway &

查看端口

netstat -apn | grep 9091

查看pushgateway页面

打开`pushgateway`的web页面,`http://10.50.51.30:9091`,发现Metrics栏没有任何数据。因为此时还没有客户端推送数据给`pushgateway`。

修改 prometheus server 配置文件,定义一个job

在prometheus server的prometheus.yml文件中定义个job,然后tagets指向pushgateway所在的ip和9091端口:

```

[root@ip-10-50-51-30 prometheus-2.42.0.linux-amd64]# ps -ef|grep prometheus

root 25157 22948 0 Feb20 pts/0 00:02:01 ./prometheus --config.file=prometheus.yml

root 25310 22948 2 14:35 pts/0 00:00:00 grep --color=auto prometheus

[root@ip-10-50-51-30 prometheus-2.42.0.linux-amd64]# kill -9 25157

[root@ip-10-50-51-30 prometheus-2.42.0.linux-amd64]# nohup ./prometheus --config.file=promeths.yml > ./prometheus.log 2>&1 &

ps -ef|grep prometheus

```

编辑采集脚本采集主机数据,然后推送给pushgateway

vim pushgateway.sh

```

#!/bin/bash

instance_name=`hostname -f | cut -d'.' -f1` 截取主机名

vim pushgateway.sh#编写pushgateway脚本采集数据

#!/bin/bash

instance_name=`hostname -f | cut -d'.' -f1`#截取主机名

if [ $instance_name == "localhost" ];then

echo "Must FQDN hostname"#要求主机名不能是localhost,不要主机名区别不了

exit 1

fi

label="count_netstat_wait_connections"#定义一个key

count_netstat_wait_connections=`netstat -an| grep -i wait| wc -l`#定义values

#推送数据给pushgateway

echo "$label $count_netstat_wait_connections" | curl --data-binary @- http://10.50.51.30:9091/metrics/job/${instance_name}

```

echo "$label $count_netstat_wait_connections" | curl --data-binary @- http://10.50.51.30:9091/metrics/job/${instance_name}

然后给脚本授权执行

再打开prometheus或者grafana进行查看就可以了

http://10.50.51.30:9090/graph?

![1676962148196](C:\Users\王超凡\AppData\Roaming\Typora\typora-user-images\1676962148196.png)

count_netstat_wait_connections

![1676962177701](C:\Users\王超凡\AppData\Roaming\Typora\typora-user-images\1676962177701.png)

换成用java 进行推送

java 推送pushgateway

方案1 推送到gateway

推送的话 数据量太大了 ,其实是http请求,每次都以http请求进行发送 物理机的还好,

用户的数据量太大了。 目前来看 用户的数据是grpc实时上报的,udp是定时上报的。

方案2 写到redis中

方案3 写到本地日志中

方案4 prometheus拉取的时候取消费kafka

取了大量的时候 返回

边缘节点有prometheus 为什么么要集中到中心节点 总结领导sb

和同时讨论 prometheus 是适合存储监控指标,不适合记录每一个记录, 他时候定时的记录监控目标的瞬间状态,但是 你要让他存储完整的记录 ,他有translog 吗,他的存储是通过拉取的方式 就不适合当做数据库取用!!!!!!!!

---------------------------------------------------完结撒花-------------------------------------------

## docker部署

待续

## 参考

官网: https://prometheus.io/download/

csdn: https://blog.csdn.net/weixin_44352521/article/details/127947313

​ https://blog.csdn.net/MssGuo/article/details/127599745

java推送 https://blog.csdn.net/qq_21389711/article/details/125183313

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_72658.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试5年,一路走来的艰辛路程

前言 不论你是什么时候开始接触测试这个行业的&#xff0c;你首先听说的应该是功能测试。通过一些测试手段来验证开发做出的代码是否符合产品的需求&#xff1f;当然你也有自己对功能测试的理解&#xff0c;但是最近两年感觉功能测试好像不太受欢迎&#xff0c;同时不少同学真的…

Linux 基础知识之文件系统

目录一、文件系统1.文件种类2.Linux和Windows文件后缀的不同3.查看文件类型3.绝对路径与相对路径二、系统分区三、目录结构一、文件系统 1.文件种类 Linux中一切皆文件。目光所及&#xff0c;皆是文件。文件的种类共有七种&#xff0c;每种文件都有自己的独特标识&#xff1a;…

SCADA-1-组态前期需求调研篇

近期有朋友找到我&#xff0c;说scada组态系统开源的很少&#xff0c;不少开发者借此售卖这种软件&#xff0c;我回了句&#xff1a;这有什么难的&#xff0c;不就是拖拖拽拽&#xff0c;再绑定上数据源&#xff0c;实现动态效果嘛。。。&#xff08;先装了个X&#xff09;一、…

【C++】类和对象入门必知

面向过程和面向对象的初步认识类的引入类的定义类的访问限定符封装类的作用域类的实例化类对象模型this指针C语言和C实现Stack的对比面向过程和面向对象的初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解…

3717: yuyu学数数

描述yuyu开始学数数了&#xff0c;她要爸爸给他一些火柴棍&#xff0c;她要拼出很多数来。yuyu每次说要拼什么数字&#xff0c;爸爸就得想想要给她几根&#xff0c;好累啊&#xff0c;于是就只好写程序了。输入输入数据有多组&#xff0c;每组占一行&#xff0c;每行一个非负整…

版本控制软件SVN

SVN学习 1 版本控制软件定义及用途 版本控制软件是为适应软件配置管理的需要&#xff0c;控制软件的修改&#xff0c;减少混乱&#xff0c;提高软件生产效率&#xff0c;其是软件质量保证的重要环节软件配置管理是对软件修改进行标识、组织和控制的技术&#xff0c;用来协调和…

数据结构:循环队列的实现(leetcode622.设计循环队列)

目录 一.循环队列简单介绍 二.用静态数组实现循环队列 1.数组循环队列结构设计 2.数组循环队列的堆区内存申请接口 3.数据出队和入队的接口实现 4.其他操作接口 5.数组循环队列的实现代码总览 三.静态单向循环链表实现循环队列 1.链表循环队列的结构设计 2.创建静…

Linux服务:Nginx服务配置及相关模块

目录 一、Nginx配置文件 1、主配置文件解析 2、子配置文件启用 二、子配置文件使用 1、创建虚拟主机实验 2、基于端口虚拟主机实验 三、Nginx模块 1、access模块 2、自定义错误页面 3、状态页开启 一、Nginx配置文件 1、主配置文件解析 ①yum安装主配置文件位置&…

攻击者失手,自己杀死了僵尸网络 KmsdBot

此前&#xff0c;Akamai 的安全研究员披露了 KmsdBot 僵尸网络&#xff0c;该僵尸网络主要通过 SSH 爆破与弱口令进行传播。在对该僵尸网络的持续跟踪中&#xff0c;研究人员发现了一些有趣的事情。 C&C 控制 对恶意活动来说&#xff0c;最致命的就是夺取对 C&C 服务…

Anaconda环境配置

1.进入清华大学镜像网站Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror&#xff0c;下载稳定版Anaconda3-5.2.0&#xff0c;如下图。2.放到整理好的文件夹中&#xff0c;双击安装包进行安装。3.安装过程中需要改变的默认值如下&#xff…

【数据库】redis数据持久化

目录 数据持久化 一&#xff0c; RDB 1&#xff0c; 什么是RDB 2&#xff0c;持久化流程 3&#xff0c; 相关配置 案例演示&#xff1a; 4&#xff0c; 备份和恢复 1、备份 2、恢复 3&#xff0c;优势 4&#xff0c; 劣势 二&#xff0c;AOF 1&#xff0c;什么是A…

说说 React 中 fiber、DOM、ReactElement、实例对象之间的引用关系

原生组件 fiber 原生组件 fiber&#xff0c;指的就是 type 为 “span”、“div” 的 fiber。 1.fiber.stateNode 指向真实 DOM 节点&#xff1b;2.node["__reactFiber$" randomKey] 指向对应 fiber&#xff0c;使用随机数是防止和业务代码的属性名冲突&#xff0c;…

Scala模式匹配详解(第八章:基本语法、模式守卫、模式匹配类型)(尚硅谷笔记)

模式匹配第 8 章 模式匹配8.1 基本语法8.2 模式守卫8.3 模式匹配类型8.3.1 匹配常量8.3.2 匹配类型8.3.3 匹配数组8.3.4 匹配列表8.3.5 匹配元组8.3.6 匹配对象及样例类8.4 变量声明中的模式匹配8.5 for 表达式中的模式匹配8.6 偏函数中的模式匹配(了解)第 8 章 模式匹配 Scal…

论文解读 | [AAAI2020] 你所需要的是边界:走向任意形状的文本定位

目录 1、研究背景 2、研究的目的 3、方法论 3.1 Boundary Point Detection Network(BPDN) 3.2 Recognition Network 3.3 Loss Functions 4、实验及结果 论文连接&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/6896 1、研究背景 最近&#xff0c;旨在…

深度解读 | 数据资产管理面临诸多挑战,做好这5个措施是关键

日前&#xff0c;大数据技术标准推进委员会&#xff08;中国通信标准化协会下&#xff08;CCSA&#xff09;的专业技术委员会&#xff0c;简称TC601&#xff09;发布《数据资产管理实践白皮书》&#xff08;6.0 版&#xff09;&#xff08;以下简称&#xff1a;报告&#xff09…

浏览器跨域问题

跨域问题什么是跨域问题如何解决跨域问题JSONPCORS方式解决跨域使用 Nginx 反向代理使用 WebSocket跨源请求是否能携带Cookie什么是跨域问题 跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为…

LQB01位操作说明

一个字节&#xff0c;包括了8位&#xff0c;可以对其中的8位的某一位进行读或者写&#xff1b; 比如char num12,如果用十六进制表示&#xff0c;就是0x0C&#xff0c;如果二进制表示&#xff0c;就是0000 1010 位操作函数&#xff0c;主要这里介绍&#xff0c;位读和位写0&am…

【消费战略方法论】认识消费者的恒常原理(一):消费者稳态平衡原理

“消费战略”是塔望咨询基于大量的战略与营销实践经验结合心理学、经济学、传播学等相关专业学科的知识应用进行提炼与创造形成的战略方法体系。消费战略强调以消费者为导向&#xff0c;进行企业、品牌战略、品牌营销的制订和落地&#xff0c;企业经营的每个环节和输出的每个动…

轻松搭建Redis缓存高可用集群

1. 安装单机Redis 安装步骤&#xff1a; 1.1 下载redis 官网下载3.0.0版本&#xff0c;之前几的版本不支持集群模式 下载地址&#xff1a;http://download.redis.io/releases/redis-3.0.0.tar.gz 1.2 首先需要安装gcc yum install gcc 1.3 创建目录 cd /usr/mkdir soft1.…

GitHub标星30K+的Java面试八股文长啥样?

2023年的互联网行业竞争越来越严峻&#xff0c;面试也是越来越难&#xff0c;一直以来我都想整理一套完美的面试宝典&#xff0c;奈何难抽出时间&#xff0c;这套1000道的Java面试手册我整理了整整1个月&#xff0c;上传到Git上目前star数达到了30K 一、32 道 MySQL 面试题 1&…