prometheus的介绍&环境搭建配置服务启动监控

2023-11-15

一、prometheus的介绍&环境搭建配置

1.prometheus+grafana构成
在这里插入图片描述
2.功能简介

Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。
主要具有如下功能:
多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成)。
灵活的查询语句(PromQL)。
无依赖存储,支持 local 和 remote 不同模型。
采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
监控目标,可以采用服务发现或静态配置的方式。
支持多种统计数据模型,图形化友好。

在这里插入图片描述
3.prometheus的优点
1.非常少的外部依赖,安装使用简单
2.已经有非常多的系统集成,例如:docker haproxy nginx jmx等等
3.服务自动化发现
4.直接集成到代码
5.设计思想是按照分布式,微服务架构来实现的

4.prometheus的特性
1.自定义多维度的数据模型
2.非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
3.强大的数据查询
4.轻松实现数据可视化

5.prometheus架构图
在这里插入图片描述
6.prometheus架构说明

  1. Prometheus server :定期从静态配置的targets或者服务发现(主要是DNS,consul,k8s,mesos等)的targets拉取数据。主要负责数据采集和存储,提供PromQL查询语言的支持
  2. 客户端sdk 官方提供的客户端类库有go、java、scala、python、ruby,其他还有很多第三方开发的类库,支持nodejs、php、erlang等
  3. Push Gateway 支持临时性Job主动推送指标的中间网关;主要使用场景为:
       Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
  4. PromDash 使用rails开发的dashboard,用于可视化指标数据
  5. exporters 支持其他数据源的指标导入到Prometheus,支持数据库、硬件、消息中间件、存储系统、http服务器、jmx等
  6. alertmanager 实验性组件、用来进行报警
  7. prometheus_cli 命令行工具
  8. web-ui:主要通过grafana来实现webui功能;
  9. alertmanager:实现prometheus的告警功能;
  10. exporters:负责向prometheus server做数据汇报的程序统。而不同的数据汇报由不同的exporters实现,比如监控主机有node-exporters,mysql有MySQL server exporter,更多请参考链接。
    总结:实现类似于zabbix-proxy功能;
    从这个架构图,也可以看出 Prometheus 的主要模块包含, prometheus server, exporters, pushgateway, PromQL, Alertmanager, WebUI 等。下面我就简单介绍各个组件实现的功能:

7.prometheus的适用场景
Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。

Prometheus,它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统。

8.go环境搭建
1.使用rz命令上传

[root@localhost datas]# rz

2.解压到local下

[root@localhost datas]# tar -zxvf go1.11.9.linux-amd64.tar.gz -C /usr/local/

3.查看路径

[root@localhost go]# pwd
/usr/local/go

4.环境配置

[root@localhost go]# vim /etc/profile

5.编辑
在这里插入图片描述

#go
export GO_HOME=/usr/local/go
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JMETER_HOME/lib:$ANT_HOME/lib:$GO_HOME/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$PATH:$JMETER_HOME/bin:$ANT_HOME/bin:$GO_HOME/bin

6.立即生效

[root@localhost go]# source /etc/profile

7.验证环境

[root@localhost go]# go version
go version go1.11.9 linux/amd64

9.prometheus环境搭建
1.上传prometheus

[root@localhost datas]# rz

或者在线安装:
wget https://github.com/prometheus/prometheus/releases/download/v2.8.0/prometheus-2.8.0.linux-amd64.tar.gz

2.解压prometheus

[root@localhost datas]# tar -zxvf prometheus-2.9.2.linux-amd64.tar.gz -C /usr/local/

3.查看路径

[root@localhost prometheus-2.9.2.linux-amd64]# pwd
/usr/local/prometheus-2.9.2.linux-amd64

4.配置yml

[root@localhost prometheus-2.9.2.linux-amd64]# vim prometheus.yml

在这里插入图片描述在这里插入图片描述10.启动prometheus

[root@localhost prometheus-2.9.2.linux-amd64]# ./prometheus &

1.访问prometheus
在浏览器中输入:http://192.168.102.130:9090/graph 进行访问
错误1:无法访问
分析1:是否网络通,ping一下
分析2:防火墙问题
分析3:yml文件配置问题

看报错信息:

问题1:level=error ts=2018-11-19T06:01:05.697957445Z caller=main.go:625 
err="opening storage failed: lock DB directory: resource temporarily unavailable

解决:删除 lock 文件
rm -f /opt/prometheus/data/lock

问题2:level=error ts=2018-11-19T06:04:47.83421089Z caller=main.go:625 
err="error starting web server: listen tcp 0.0.0.0:9090: bind: address already in use"

解决:查找使用9090端口的PID并删掉
lsof -i :9090
kill -9

问题3:-bash: netstat: 未找到命令
解决:执行安装命令

yum install net-tools
[root@localhost ~]# netstat -tln
[root@localhost ~]# netstat -tln |grep 9090
tcp6       0      0 :::9090                 :::*                    LISTEN    
[root@localhost ~]# lsof -i :9090

提示:lsof:未找到命令 去安装 yum install lsof

[root@localhost ~]# lsof -i :9090
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
prometheu 9504 root    6u  IPv6  32578      0t0  TCP *:websm (LISTEN)
prometheu 9504 root    7u  IPv4  32580      0t0  TCP localhost:55048->localhost:websm (ESTABLISHED)
prometheu 9504 root    8u  IPv6  32581      0t0  TCP localhost:websm->localhost:55048 (ESTABLISHED)
prometheu 9504 root    9u  IPv4  30618      0t0  TCP localhost.localdomain:46854->localhost.localdomain:websm (ESTABLISHED)
prometheu 9504 root   10u  IPv6  32616      0t0  TCP localhost.localdomain:websm->localhost.localdomain:46854 (ESTABLISHED)
[root@localhost ~]# kill -9 9504

再次启动,依旧无法访问,去查看防火墙状态

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
去关闭防火墙,关闭防火墙命令:systemctl stop firewalld.service

再次启动

[root@localhost prometheus-2.9.2.linux-amd64]# ./prometheus &

成功打开
在这里插入图片描述
去点击targets,未显示zookeeper的,why?
原因:需要重启prometheus,配置才会生效,但是未配置prometheus的自定义启动服务,无法重启,只能手动杀掉进行,再次启动,才能看到配置的zookeeper

11.prometheus的关闭
关闭需要关闭prometheus 的进程
查看是否启动状态:netstat -tln |grep 9090
查看端口的pid :lsof -i :9090
杀掉进程:kill -9 pid
杀掉进程后,再次启动服务,看到变化
在这里插入图片描述如何让zookeeper服务的状态为up?

12.zookeeper配置
1.上传zookeeper-exporter到 /usr/local/bin 下

[root@localhost bin]# rz
[root@localhost bin]# ll
总用量 10776
-rw-r--r--. 1 root root 11033305 11月 20 16:28 zookeeper_exporter
赋予权限:chmod 775 /usr/local/bin/zookeeper_exporter

启动zookeeper:/usr/local/bin/zookeeper_exporter

[root@localhost bin]# /usr/local/bin/zookeeper_exporter
INFO[0000] zookeeper_exporter, version v1.0.2 (branch: HEAD, revision: d6e929223f6b3bf5ff25dd0340e8194cbd4d04fc)
  build user:       @bd731f434d23
  build date:       2018-05-01T20:40:14+0000
  go version:       go1.10.1 
INFO[0000] Starting zookeeper_exporter                  
INFO[0000] Starting metric http endpoint on :9141  

刷新后查看服务:
在这里插入图片描述
点击/metrics,可查看数据
prometheus自带的监控,界面观看数据不美观,不方便,所以可以采用grafana去更好的监控数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

prometheus的介绍&环境搭建配置服务启动监控 的相关文章

  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 如何构建任务“gems:install”

    我正在将 Rails 应用程序部署到 Linux 服务器 并且缺少一些 rake 任务 包括 rake gems install 和 rake db 我正在运行来自 GEM 的 Rails 2 3 4 为什么是这样 我该如何解决 我可以以某
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • QT connect第五个参数

    一 介绍 1 Qt AutoConnection 默认连接 连接类型在信号发出时确定 如果接收者和发送者在同一个线程 使用Qt DirectConnection类型 如果接收者和发送者不在一个线程 则使用Qt QueuedConnectio
  • 管理概论笔记

    前言 本文章属于在听课时做的笔记 第一周 管理导论 来源 管理概论 浙江大学 邢以群 MOOC 学习理论的目的是为了能够做没有学过的人做不了的事情或者比他们做得更好 一 管理及其功能 介绍什么是管理以及为什么需要管理 观念决定行为 行为决定
  • GBDT的正则化及与XGBOOST区别

    1 GBDT的正则化 和Adaboost一样 我们也需要对GBDT进行正则化 防止过拟合 GBDT的正则化主要有三种方式 第一种是和Adaboost类似的正则化项 即步长 learning rate 定义为 对于前面的弱学习器的迭代 fk
  • Shiro中Session和Cache

    Session是一种状态保持机制 参考文章Session是什么可知Session和Web服务也没有必然关系 Shiro本身的Security Manager也可以脱离Servlet自己管理Session 根据Security Manager
  • 13-3 动态链接库的编译和使用

    1 静态链接库与动态链接库 由于静态链接库不能共享 且依赖的符号的对应目标文件与主程序文件需要一同编译 故静态链接库内存空间占用较大 而动态链接库具有共享性质 通过特定路径即可引用 可以有效减少内存空间的占用 此外 可使用 ldd 命令查看
  • ubuntu16.04.1安装xrdp实现远程桌面访问

    之前测试过xfce4桌面 但是其实ubuntu16 04 1默认的unity桌面也是可以的 首先需要安装 tigervncserver 1 6 80 wget c http www c nergy be downloads tigervnc
  • python刷题第七周

    以下是有所收获的题目 第一题 第5章 2 图的字典表示 20 分 图的字典表示 输入多行字符串 每行表示一个顶点和该顶点相连的边及长度 输出顶点数 边数 边的总长度 比如上图0点表示 O A 2 B 5 C 4 用eval函数处理输入 ev
  • 服务器网站5m带宽在线多少人?

    同时访问一个网站的人数是在线的 这由许多因素决定 包括服务器带宽 质量和同时访问您的网站的人数有关的网站类型 若使用的是独享5M带宽 即5Mbit s 相应云服务器的数据最高传输速度应为5Mbit s x 1024 8 640KB 1分钟流
  • 面试官问:Redis 分布式锁如何自动续期?

    资深面试官 你们项目中的分布式锁是怎么实现的 老任 基于redis的set命令 该命令有nx和ex选项 资深面试官 那如果锁到期了 业务还没结束 如何进行自动续期呢 老任 这个 面试官 您上个问题是啥来着 资深面试官 你们项目中分布式锁是怎
  • springboot之乐观锁和悲观锁

    适用场景 悲观锁 比较适合写入操作比较频繁的场景 如果出现大量的读取操作 每次读取的时候都会进行加锁 这样会增加大量的锁的开销 降低了系统的吞吐量 乐观锁 比较适合读取操作比较频繁的场景 如果出现大量的写入操作 数据发生冲突的可能性就会增大
  • python_mysql

    pymysql模块 pip3 install pymysql pymysql使用流程 1 建立数据库连接 db pymysql connect 2 创建游标对象 cur db cursor 3 游标方法 cur execute insert
  • 网络安全-跨站请求伪造(CSRF)的原理、攻击及防御

    目录 简介 原理 举例 漏洞发现 链接及请求伪造 CSRF攻击 不同浏览器 未登录状态 登录状态 代码查看 工具 防御 用户 程序员 简介 跨站请求伪造 Cross site request forgery 也被称为 one click a
  • 二进制、八进制、十进制、十六进制之间的相互转换

    一 二进制 八进制 十六进制转换为十进制 方法 位权求和法 二进制用符号 B 表示 十进制用符号 D 表示 八进制用符号 O 表示 十六进制用符号 H 表示 100101 10111 B 1 2 5 0 2 4 0 2 3 1 2 2 0
  • OpenGL渲染字体的批处理操作

    一 问题描述 在OpenGL中 绘制字体通过纹理贴图的方式 一个场景中有200个单词 按照正常做法 一个单词生成一个贴图 指定Quad四个顶点纹理坐标 最后把数据传给OpenGL 进行绘制 OpenGL顶点数组是客户端 服务器模式 客户端是
  • 删除报错不能删除myeclipse或者eclipse项目方法

    当在myeclipse创建了项目 想删除的时候 发现删除不了 终极的解决方法如下 一 删除myeclipse或者eclipse上的java项目工程 1 找到对应myeclipse工作空间 使用强力删除 粉碎文件 删除成功 2 接着回到mye
  • Ubuntu下安装egg

    http blog csdn net flydirk article details 8506463 用easy install安装就可以了 安装之前需要python setuptools sudo apt get install pyth
  • 数字图像散斑计算Matlab连续处理1/2

    数字图像散斑计算Matlab连续处理 1 数字散斑相关测量法原理 2 打开 All m 文件 设置路径 3 运行程序 输入参考图像序号 4 框选高对比度区域 下图左图 双击以结束 结果后为下图右图 5 回到命令行 输入高对比度区域裁剪位置
  • RabbitMQ(二)confirm/return机制

    程序用了1 5 3 RELEASE版本的spring boot starter amqp依赖 confirm确认机制 配置文件
  • Python介绍

    Python由荷兰数学和计算机科学研究学会的吉多 范罗苏姆 于1990 年代初设计 作为一门叫做ABC语言的替代品 1 Python提供了高效的高级数据结构 还能简单有效地面向对象编程 Python语法和动态类型 以及解释型语言的本质 使它
  • prometheus的介绍&环境搭建配置服务启动监控

    一 prometheus的介绍 环境搭建配置 1 prometheus grafana构成 2 功能简介 Prometheus是一个开源监控系统 它前身是SoundCloud的警告工具包 主要具有如下功能 多维 数据模型 时序由 metri