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的介绍&环境搭建配置服务启动监控 的相关文章

  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中
  • 为什么 fopen("any_path_name",'r') 不给出 NULL 作为返回值?

    在调试一些代码时 我得到如下内容 include
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 在运行时检查 GCC 版本

    我需要找出 C 程序执行过程中 运行时 可用的 系统中安装的 GCC 版本 主要版本和次要版本 意思是 以编程方式提取可用 gcc 的版本 就像我在 shell 中输入 gcc version 一样 但在 c 程序中 The GNUC an
  • 如何wget目录中最新的文件

    我想编写一个 bash 脚本来下载并安装最新的每日构建程序 RStudio 是否有可能使wget仅下载目录中最新的文件http www rstudio org download daily desktop http www rstudio
  • 使用awk将列中的值替换为txt文件中的另一个值

    我是 Linux 和 awk 脚本编写的新手 我有 tab delim txt 文件 如下所示 AAA 134 145 Sat 150 167 AAA 156 167 Sat 150 167 AAA 175 187 Sat 150 167

随机推荐

  • 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