您现在的位置是:首页 > 正文

监控利器:普罗米修斯介绍和安装

2024-02-01 03:16:42阅读 5

我们的程序想要稳定的运行,或者说当出现问题时能第一时间知道,这就离不开监控,目前比较主流的就是 Prometheus(普罗米修斯)+ Grafana 的组合。

准备用三篇文章来介绍怎么使用:

1、基本介绍和安装

2、和中间件的集成

3、在 dotNET Core 中的使用

本文是第一篇:基本介绍和安装。

Prometheus 介绍

Prometheus 是一套开源的监控报警系统,由 SoundCloud公司开发,于 2012 年开源。已经广泛应用于 Kubernetes 和 ServiceMesh 等云原生环境中。

Prometheus 具有以下核心特征:

  • 多维数据模型:Prometheus 采用时序数据库作为存储,可以灵活的存储多维度的数据。

  • 灵活的查询语言:Prometheus 使用了功能强大的 PromQL 查询语言,可以实时查询和聚合时序数据。

  • 拉取式采集:Prometheus 通过 HTTP 协议周期性抓取被监控组件状态,而不是通过端口接收推送数据。

  • 服务发现:Prometheus 支持各种服务发现机制,可以自动发现监控目标,如果需要监控的服务比较少,也可以使用静态配置。

  • 多种可视化组件:如 Grafana、PromDash 等,可以用来展示监控数据,本次系列文章中使用 Grafana 做可视化展示。

  • 告警管理:通过 Alertmanager 负责实现报警功能,既可以使用邮件,也能通过 Webhook 自定义告警处理方式。

Prometheus 作为云原生应用监控的首选方案,其生态圈非常繁荣。它的出现极大地促进了新的监控思维模式的形成,为构建高可用自动化系统提供了重要保障。

数据流走向

fee61b9561a0b30a47e62388b2e8e3e9.jpeg
  • 操作系统和中间件几乎不用做任何配置,目前用到的就发现 nginx 需要配置 nginx_status 模块。

  • 不同的中间件用不同的 exporter,exporter 会和中间件之间进行连接,所以运行 exporter 的时候都需要指定中间件的地址和端口。

  • 每个 exporter 运行后有对应的 http 地址。

  • Prometheus 的配置文件中对 exporter 的 http 地址进行绑定,配置后重新启动 Prometheus 才能生效,如果监控的中间件比较多,就需要考虑使用服务发现了。

  • Grafana 专门用来对 Prometheus 收集的数据进行可视化展示,需要在数据源中配置对 Prometheus 的连接,然后针对不同的中间件使用不同的面板就可以了。

步骤

1、安装 Prometheus 和 Grafana 。

2、安装部署中间件的 exporter ,本文只介绍 node_exporter 的安装,其他的中间件放到下一篇。

3、修改 Prometheus 的配置文件,添加 job 节点,并重启让其生效。

4、在 Grafana 中添加数据源 。

5、在 Grafana 中添加面板。

版本

  • CentOS:7.8

  • Grafana:10.1.5

  • prometheus:2.47.2

  • node_exporter:1.6.1

环境

  • 服务器1:10.211.55.6 (部署 prometheus )

  • 服务器2:10.211.55.14(部署 Grafana、node_exporter )

安装

安装 Prometheus

1、在  prometheus 官网下载页面下载相关的安装包,地址如下:

https://prometheus.io/download/

b16ba45440c0b9f28ca8662c5989cbac.jpeg

2、在服务器上执行下面命令进行安装:

cd /root
mkdir prometheus
cd prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.47.2/prometheus-2.47.2.linux-amd64.tar.gz
tar -zxvf prometheus-2.47.2.linux-amd64.tar.gz
cp -R prometheus-2.47.2.linux-amd64 /usr/local/prometheus
  • 如果使用 wget 下载有问题,就在官网中进行下载。

3、设置 prometheus 系统服务,执行命令创建服务文件 vi /usr/lib/systemd/system/prometheus.service ,文件内容如下:

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/prometheus
ExecStart=/usr/local/prometheus/prometheus 
Restart=on-failure

[Install]
WantedBy=multi-user.target

4、启动服务和设置开机自动启动:

systemctl daemon-reload
systemctl enable prometheus.service
systemctl start prometheus.service

5、启动后,可以使用 systemctl status prometheus.service 命令查看状态,出现下图界面,表示启动成功:

960c511633af551c511bf7307f0ec30a.jpeg

6、在浏览器访问地址:http://10.211.55.3:9090/targets?search= ,出现下图界面,说明 prometheus 已经安装成功了。

9c05448e42d736eb15a1035d164a8443.jpeg

安装 Grafana

1、在  Grafana 官网下载页面下载相关的安装包,地址如下:https://grafana.com/grafana/download

bcde8834e22323713f504f435a6f6a4c.jpeg

2、在服务器上执行下面命令进行包的下载和安装

cd /root
mkdir Grafana
cd Grafana
wget https://dl.grafana.com/oss/release/grafana-10.1.5-1.x86_64.rpm
yum install -y grafana-8.0.6-1.x86_64.rpm

3、启动:

systemctl enable grafana-server
systemctl start grafana-server

4、启动后,可以使用 systemctl status grafana-server 命令查看状态,出现下图界面,表示启动成功:

95acb57019a83f831ffee0094973486c.jpeg

6、在浏览器访问地址:http://10.211.55.14:3000/,出现下图界面,说明 Grafana 已经安装成功了。

59e82de1a279acb44ed62ac37b35bb78.jpeg

安装 node_exporter

node_exporter 是用来监控服务器的 exporter ,按照下面步骤进行安装:

1、在服务器上执行下面命令进行包的下载和安装

cd /root
mkdir node_exporter
cd node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar -zxvf node_exporter-1.6.1.linux-amd64.tar.gz
cp -R node_exporter-1.6.1.linux-amd64 /usr/local/node_exporter

2、设置 node_exporter 系统服务,执行命令创建服务文件 vi /usr/lib/systemd/system/node_exporter.service ,文件内容如下:

[Unit]
Description=node_exporter
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

3、设置开机自动启动:

systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service

4、访问地址:http://10.211.55.14:9100 ,出现下图界面,说明安装成功:

1bb1a330a8211dbea3966b65a8065ff3.jpeg

配置

1、修改 Prometheus 的配置文件,添加 node_exporter 的绑定,执行命令 vi vi /usr/local/prometheus/prometheus.yml

cec70e4fb941835e4867d5a085eb4e61.jpeg
- job_name: 'centos-1'
    static_configs:
      - targets: ['10.211.55.14:9100']
  • Job_name:随便取一个能表达意思的名称即可

  • targets:node_exporter 安装后发布出来的地址

2、执行命令 systemctl restart prometheus 重启 Prometheus 。

3、在 Grafana 中添加数据源,登录 Grafana 后,在 Data Sources 模块中添加数据源:

992dcdf6b2c2e13e497ac4c8ed17456f.jpeg

4、选择 Prometheus 作为数据源并进行配置,将 Prometheus 的地址 http://10.211.55.3:9090 ,填写在 server url 中:

419f6b7fc7c015a1b2c64b40d061ffa8.jpeg

5、想要在 Grafana 中进行数据的展示,需要导入 dashborards  模板,这个地址中有各类模版可供选择:https://grafana.com/grafana/dashboards/ 。在 Grafana 的 Dashboards 模块中进行导入:

8e57fc2b275960f5f2844f1691a524af.jpeg

6、输入编号:11074,这是可以展示服务器监控信息的 dashborard 模板:

092079616139cf66e3e2fd23a0683c9f.jpeg

7、Load 后,进行导入:

d63efc8ea7b7bc0067c6400477460759.jpeg

8、该 dashborard 模板最终展示的数据效果如下:

5b7145feeaa9f49e5091b900e6e8d273.jpeg

网站文章

  • group by和order by的用法和区别

    group by和order by的用法和区别

    本文转自:https://blog.csdn.net/jiangxindu1/article/details/48147149 前一段时间的面试,问道这个问题,不太清楚了,感觉有必要来总结一下。话不多说,直接开始吧!一、order by的用法使用order by,一般是用来,依照查询结果的某一列(或多列)属性,进行排序(升序:ASC;降序:DESC;默认为升序)。当排序列含空值时:A...

    2024-02-01 03:16:36
  • Coinbase:Web3堆栈的简单指南

    Coinbase:Web3堆栈的简单指南

    来源:Coinbase博客原标题:《A simple guide to the Web3 stack》编译:胡韬行业已经对 web3 提出了很多定义,但在 Coinbase,我们通常认为 ...

    2024-02-01 03:16:06
  • JavaScript项目总结一

    1.类选择其下,第一个 $('selector').first()==$('selector:first')==$('selector:eq(0)') ...

    2024-02-01 03:15:59
  • 随笔——消息队列线程池模型如何保证重启时消息不丢

    随笔——消息队列线程池模型如何保证重启时消息不丢

    背景 今天在脉脉上面看到了一个帖子,比较有意思:这个帖子的意思是:在使用Kafka的时候,我们已经设置了多个分区,如何去提升消费能力?如果使用线程池的方式去提升如何保证重启时消息不丢。这...

    2024-02-01 03:15:51
  • springcloud — 微服务鉴权管理Spring Security OAuth2原理解析(四)

    springcloud — 微服务鉴权管理Spring Security OAuth2原理解析(四)

    回顾之前文章:1. 微服务鉴权管理之OAuth2原理解析(一)2. 微服务鉴权管理Spring Security原理解析(二)3. 微服务鉴权管理Spring Security OAuth2原理解析(...

    2024-02-01 03:15:22
  • Java报错ClassNotFoundException或者NoSuchMethodError

    Java报错ClassNotFoundException或者NoSuchMethodError

    出现这种报错99%为包版本不同,依赖冲突导致。

    2024-02-01 03:15:15
  • 利用bind9架设智能DNS——postgreSQL数据库篇

    智能DNS工作原理: 在用户解析一个域名的时候,判断一下用户的IP,然后跟DNS服务器内部的IP表匹配一下,看看用户是电信还是网通用户,然后给用户返回对应的IP地址。目前的域名服务运营商不提供智能DNS服务,所以必须自行架设DNS服务或者使用网上免费的智能DNS

    2024-02-01 03:15:08
  • 计算机网络:网络层——数据平面

    计算机网络:网络层——数据平面

    概述 两种重要的网络层功能:转发和路由选择。(forwarding and routing) 数据层面(Data plane): local, per-router function determin...

    2024-02-01 03:15:02
  • 兴趣篇——用C语言写打字母游戏

    昨天说的,以后会写和小游戏相关的博客,事不宜迟,今天就先开始用最简单的C语言编写一个简单的打字母小游戏吧。 应今天我的软件工程老师的一句话:当做一件事时,如果能很快的从中得到正反馈,我们将会有成就感,我们将会提高对它的兴趣。 我们编程的入门语言是C语言,是一门相对简单的编程语言,但是大多数大学生或者其他刚刚接触编程学完C语言的人,往往会产生一个疑问:我们学习了C语言到底能干什么?更有甚者,像计

    2024-02-01 03:14:32
  • 带宽和时延究竟有没有关系

    一、严格意义上来说是不一样的,简单点说,网络为什么会出现延时,一定程度上就是带宽时延和数据量造成的;举个例子来说就很清楚了:带宽,bandwidth,是指每秒钟传输的最大字节数。带宽本来是指某个信号具...

    2024-02-01 03:14:26