基于Prometheus+Grafana搭建监控平台(Windows/Linux环境exporter部署)

news2024/12/23 22:39:13

1. 介绍

1.1 Prometheus是什么?Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。

Prometheus - Monitoring system & time series database

Prometheus · GitHub

作为新一代的监控框架,Prometheus 具有以下特点:

    • 多维数据模型:由度量名称和键值对标识的时间序列数据

    • PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询

    • 不依赖分布式存储,单个服务器节点可直接工作

    • 基于HTTP的pull方式采集时间序列数据

    • 推送时间序列数据通过PushGateway组件支持

    • 通过服务发现或静态配置发现目标

    • 多种图形模式及仪表盘支持

 Prometheus适用于以机器为中心的监控以及高度动态面向服务架构的监控。

1.2 Grafana是什么?

Grafana是一个开源的度量分析和可视化系统。

Grafana支持查询普罗米修斯。自Grafana 2.5.0(2015-10-28)以来,包含了Prometheus的Grafana数据源。

  Download Grafana | Grafana Labs

从Grafana.com导入预先构建的仪表板。

Grafana.com维护着一组共享仪表板 ,可以下载并与Grafana的独立实例一起使用。

https://grafana.com/dashboards/9276

简单来说:Grafana提供了比Prometheus更加友好美观的展示界面

2. Prometheus+Grafana安装

2.1 组件

组件说明
prometheus-2.41.0.windows-amd64监控server端,用于汇总展示各收集器的资源情况(界面丑)
grafana-enterprise-8.2.2.windows-amd64度量分析可视化系统,仪表盘多,替换prometheus默认展示界面

2.2 安装包下载

Prometheus下载地址:https://prometheus.io/download/

​ grafana下载: https://grafana.com/grafana/download?platform=windows

2.3 百度云网盘下载地址

Promethe+Grafana :https://pan.baidu.com/s/1s03HZ9AlMNbWQKc9-QisUw?pwd=bk1k

2.4 Prometheus 安装

2.4.1 部署配置Prometheus

  • 在全英文路径下解压prometheus-2.41.0.windows-amd64.zip
  • 修改prometheus.yml,将localhost改为127.0.0.1,避免出现莫名其妙的问题(其它涉及到localhost的配置,也是改为127.0.0.1)

  • 以管理员身份运行 prometheus.exe 启动prometheus,任务栏会新增一个黑窗口(不要关闭)
  • 浏览器打开http://127.0.0.1:9090/targets,prometheus状态为up,出现如下界面即成功

2.4.2 可视化管理界面介绍

2.4.3 查看Prometheus是否正常启动与指标读取状态

在prometheus.yaml中配置了 【- targets: ["127.0.0.1:9090"]】之后,就可以读取一些默认的指标信息。这里的 State 是 “UP” 表示该组件是否正常启动,因为这是读取Prometheus本身,只要能进入该界面,就必定是 “UP” 。后续如果添加了对 Exporeter(比如:windows-exporter)的配置,那么从这个 State 可以看到对应的 exporter 是否被 Prometheus 正常监听到。

2.4.4 Prometheus 添加为 Windows 服务

待定

2.5  安装 Grafana

相对于Granfan,prometheus的默认界面比较单一,可看到的关键资源信息不多,下面使用Grafana展示具体资源状况。

2.5.1 安装流程

在全英文路径下解压 grafana-enterprise-8.2.2.windows-amd64.zip ,双击bin目录下grafana-server.exe,任务栏会新增一个命令行窗户(不要关闭)。

浏览器打开 http://127.0.0.1:3000(默认账号密码都是admin),远程访问用  ip:3000 :

 2.5.2 创建数据源,关联prometheus端

(1)点击设置(小齿轮),选择Data Source

 (2)点击 Add data source,选择 Prometheus

 (3)全部使用默认配置, 这里一定要将localhost改为127.0.0.1,下拉, 点击Save & test

3. Windows 安装 exporter

3.1 部署配置windows资源采集器

3.1.1 安装包下载

  ​官方下载地址:https://github.com/prometheus-community/windows_exporter/releases

  百度云网盘:https://pan.baidu.com/s/1KXedfMPOs84CsbxXRCxKhQ?pwd=38i6

3.1.2 安装Windows-exporter

(1)用管理员身份运行 windows_exporter-0.20.0-amd64.msi ,运行成功后服务中可以看到windows_exporter服务

(2)将服务状态修改为 “自动(延迟启动)”

(3)浏览器访问http://127.0.0.1:9182/metrics,看到如下界面成功

(4) 在prometheus端配置windows_exporter采集器地址,在prometheus.yml 中添加如下内容 (注意缩进)

  - job_name: "192.168.126.1:windows-exporter"
    static_configs:
      - targets: ["192.168.126.1:9182"]

(5)重启prometheus端,打开http://127.0.0.1:9090/targets,windows状态为up即成功

3.1.3 导入 windows-exporter 仪表盘

(1)打开Dashboards-Manage

(2)点击 import

(3)仪表盘模板导入

 仪表盘有两种导入的方式,一种是选择上传 json 文件,该文件是仪表盘json文件,一次上传一个,选择模板后,点击import。另一种是根据 dashboard ID 上传,在 "Load" 按钮前面输入官方提供的 dashboard ID ,然后点击 "Load" 按钮。

当前导入的是 windows-exporter 的dashboard ,选择用 dashboard ID进行import:

这里我输入了 10467,它是 windows-exporter的 dashboard ID,然后点击 “Load”

(4)选择数据来源,也就是选择 Prometheus 实例

进入当前页面,在底部的 prometheus 下拉框选择 Prometheus 实例,点击 import 完成。

(5)打开Dashboards,可以看到已经添加了的 [windows资源监控] 仪表盘,打开详情如下:

3.2 部署配置 rabbitmq_exporter

3.2.1 安装包下载

官方下载地址:Releases · kbudde/rabbitmq_exporter · GitHub

百度云网盘:https://pan.baidu.com/s/1KXedfMPOs84CsbxXRCxKhQ?pwd=38i6

3.2.2 安装 rabbitmq_exporter

解压下载的安装包 rabbitmq_exporter_1.0.0-RC19_windows_amd64.tar.gz 到全英文路径下

启动 rabbitmq_exporter ,在命令行执行  rabbitmq_exporter.exe 文件。

3.2.3 添加到 Prometheus 配置监控

(1)修改Prometheus配置文件,在 prometheus.yml 中添加如下内容:

  - job_name: "192.168.1.126:rabbitmq-exporter"
    static_configs:
      - targets: ["192.168.1.126:9419"]

 (2)重启Prometheus

稍等一会,访问http://127.0.0.1:9090/targets,发现node_exporter已经添加进去。

(3)查看监控指标数据

 rabbitmq 基于erlang组件安装,所以有部分 go_ 开头 的指标信息,其余 rabbitmq_ 开头的指标数据则是 rabbitmq 自己的。

 3.2.4 配置 Grafana

去地址:Dashboards | Grafana Labs查找rabbitmq_exporter模板。
这里使用:RabbitMQ Metrics from rabbitmq_exporter,ID 号为:10120。

在 Dashboards  manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:

4. Linux 安装部署 exporter

4.1 部署安装 node_exporter

4.1.1 安装包下载

​官方下载地址:https://github.com/prometheus/node_exporter/releases

百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x

4.1.2 安装

将安装包 node_exporter-0.18.1.linux-amd64.tar.gz 上传至服务器。

tar zvxf node_exporter-0.18.1.linux-amd64.tar.gz
mv node_exporter-0.18.1.linux-amd64 /usr/local/node_exporter

4.1.3 注册为系统服务

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

添加内容:

[Unit]
Description=node_exporter
Documentation=https://github.com/prometheus/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

重置系统服务并将node_exporter开机自启、启动 node_exporter服务

systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter

4.1.4 浏览器访问http://192.168.126.138:9100/metrics,看到如下界面成功

4.1.5 添加到 Prometheus 配置监控

 (1)修改Prometheus配置文件,在 prometheus.yml 中添加如下内容:

  - job_name: "192.168.126.138:node-exporter"
    static_configs:
      - targets: ["192.168.126.138:9100"]

(2)重启Prometheus

稍等一会,访问http://127.0.0.1:9090/targets,发现node_exporter已经添加进去。

 4.1.6 配置 Grafana

去地址:Dashboards | Grafana Labs查找node_exporter模板。
这里使用:Node Exporter for Prometheus Dashboard based on 11074,ID 号为:15172。

在 Dashboards  manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:

4.2  部署安装 oracle_exporter

4.2.1 安装包下载

官方下载地址:https://github.com/iamseth/oracledb_exporter/releases

百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x

 4.2.2 安装

将安装包 node_exporter-0.18.1.linux-amd64.tar.gz 上传至服务器。

tar -zxvf oracledb_exporter.0.2.9-ora18.5.linux-amd64.tar.gz
mv oracledb_exporter.0.2.9-ora18.5.linux-amd64 /usr/local/oracle_exporter

4.2.3 编辑环境变量配置文件

增加一个TNS_ADMIN环境变量

vim ~/.bash_profile

我这里的配置是

# oracle环境变量
export ORACLE_SID=orcl
export ORACLE_HOME=/data/oracle/product/11.2.0/db_1
# oracledb_exporter环境变量
export PATH=$PATH:$ORACLE_HOME/bin
# export DATA_SOURCE_NAME=用户名/密码
export DATA_SOURCE_NAME=system/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

修改bash_profile完成后,执行 

source ~/.bash_profile

4.2.4 lib 文件缺失问题

检查 oracle安装路径的 $ORACLE_HOME/lib 目录下 是否有 libclntsh.so.18.1 文件,如果缺少该文件,启动 oracle_exporter 会失败。

进入 oracle 安装目录的 /lib 文件夹下,创建 libclntsh.so.18.1 的软连接:

ln -s libclntsh.so.18.1 libclntsh.so

4.2.5 后台启动 oracle_exporter

当然我们启动oracledb_exporter最好以不挂断、后台运行的方式启动

    nohup ./oracledb_exporter &

4.2.6 浏览器访问http://192.168.126.138:9161/metrics,看到如下界面成功

4.2.7 添加到 Prometheus 配置监控

 (1)修改Prometheus配置文件,在 prometheus.yml 中添加如下内容:

  - job_name: "192.168.126.138:oracle-exporter"
    static_configs:
      - targets: ["192.168.126.138:9161"]

(2)重启Prometheus

稍等一会,访问http://127.0.0.1:9090/targets,发现oracledb_exporter已经添加进去。

  4.2.8 配置 Grafana

去地址:Dashboards | Grafana Labs查找oracledb_exporter模板。
这里使用:Node Exporter for Prometheus Dashboard based on 11074,ID 号为:15172。

在 Dashboards  manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:

 填写 dashboards ID后,点击 “Load” 加载仪表盘。

 选择 Prometheus 实例。

4.3 部署 nginx_exporter

4.3.1 前置条件

nginx 需要安装 nginx-module-vts 创建,该插件在 nginx 安装时进行加入到编译参数中。

(1)安装依赖模块

yum install ‐y pcre pcre‐devel
yum install ‐y zlib zlib‐devel
yum install ‐y openssl openssl‐devel

(2)下载 nginx

#下载 Nginx
wget http://nginx.org/download/nginx-1.17.7.tar.gz

(3)解压安装 nginx

tar -zxvf nginx-1.17.1.tar.gz

(4)下载 vts 模块

下载链接:https://github.com/vozlt/nginx-module-vts/archive/v0.1.18.tar.gz

百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x

(5)解压 v0.1.18.tar.gz 到 /usr/local/nginx 目录下

(6)编译安装 nginx

进入Nginx目录
执行命令 ./configure 是用来生成Makefile,为下一步的编译做准备 --add-module=后面跟上插件的下载地址

./configure --prefix=/usr/local/nginx --with-http_ssl_module  --add-module=/opt/nginx-1.17.7/nginx-module-vts-0.1.18/
#编译不安装
make & make install

进入 /usr/local/nginx/conf 目录下,修改nginx.conf配置文件添加一下信息

http {
    vhost_traffic_status_zone;
    vhost_traffic_status_filter_by_host on;
    server {
    #   vhost_traffic_status off;
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}

打开vhost过滤

vhost_traffic_status_filter_by_host on;

开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。
在不想统计流量的server区域禁用vhost_traffic_status,配置示例:

server {
...
vhost_traffic_status off;
...
}

假如nginx没有规范配置server_name或者无需进行监控的server上,那么建议在此vhost上禁用统计监控功能。否则会出现“127.0.0.1”,hostname等的域名监控信息。

完整配置:

http {

    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
	
	vhost_traffic_status_zone;
    vhost_traffic_status_filter_by_host on;
 
    server {
        listen       80;
        server_name  localhost;
		
        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}

测试配置文件

[root@linkhot04 sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

启动nginx ,访问 status

./nginx
访问状态接口
http://192.168.126.138/status

4.3.2 安装包下载

官方下载地址:Releases · hnlq715/nginx-vts-exporter · GitHub

百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x

 4.3.3 安装

将安装包 node_exporter-0.18.1.linux-amd64.tar.gz 上传至服务器。

tar -zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
mv nginx-vts-exporter-0.10.3.linux-amd64 /usr/local/nginx_vts_exporter

4.3.4 启动 exporter

nohup ./nginx-vts-exporter -nginx.scrape_uri=http://192.168.126.138/status/format/json  &

参看采集指标

192.168.126.138:9913/metrics

 4.3.5 添加到 Prometheus 配置监控

 (1)修改Prometheus配置文件,在 prometheus.yml 中添加如下内容:

  - job_name: "192.168.126.138:nginx-exporter"
    static_configs:
      - targets: ["192.168.126.138:9931"]

(2)重启Prometheus

稍等一会,访问http://127.0.0.1:9090/targets,发现oracledb_exporter已经添加进去。

  4.2.8 配置 Grafana

去地址:Dashboards | Grafana Labs查找oracledb_exporter模板。
这里使用:Nginx VTS Stats,ID 号为:2949。

 在 Dashboards  manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:

 填写 dashboards ID后,点击 “Load” 加载仪表盘。

 选择 Prometheus 实例。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【从零开始学习深度学习】43. 算法优化之Adam算法【RMSProp算法与动量法的结合】介绍及其Pytorch实现

Adam算法是在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均 【可以看做是RMSProp算法与动量法的结合】。 目录1. Adam算法介绍2. 从零实现Adam算法3. Pytorch简洁实现Adam算法--optim.Adam总结1. Adam算法介绍 Adam算法使用了动量变量vt\boldsymbol{v}_tvt​和RMS…

LVGL官方UI设计软件——SquareLine Studio micropython 使用简单测评

经常去LVGL官网逛的人一定都知道这个软件,作为官方的亲儿子,使用体验如何呢,我简单体验了一周左右,简单做个测评,本测评仅代表我个人意见,并且仅限micropython的使用体验! 首先是价格&#xff0…

TCP报文段(segment)首部格式

TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)。 IP传给链路层的数据单元称作IP数据报(IP datagram)。 通过以太网传输的比特流称作帧(Frame)。 逐层封装: 源端口号发送端端口号,字段长16位(2字节&…

计算机网络第二章

物理层的基本概念物理层的作用:物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的主要任务:确定与传输媒体接口有关的一些特性 🔜本质:定义一些固定标准物理层的四大特性&a…

Word怎么转PDF?8个Word转PDF工具分析

Word 到 PDF 转换工具是用于将 Microsoft Word(DOC 或 DOCX)文档转换为 PDF 格式的程序。根据操作模式,它可以是在线或离线软件。当然,考虑到市场上充斥着此类工具,获得最好的 DOCX 到 PDF 转换器可能会让人头疼。正是…

MySQL基础篇第12章(MySQL数据类型)

1. MySQL中的数据类型 常见的数据类型的属性: 2. 整数介绍 2.1 类型介绍 整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。 它们的区别如下表所示: 2.2 可选属性 整数类型的可选…

javaweb-异步请求AjaxaxiosJSON

1,Ajax 1.1 概述 AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 我们先来说概念中的 JavaScript 和 XML,JavaScript 表明该技术和前端相关;XML 是指以此进行数据交换。而这两个我们之前都学习过。 ####…

JavaWeb基础——从入门到超神(笔记,持续更新)

day00综述 需要学习SpringBoot,但是JavaWeb是基础,来补一下 JavaWeb就是将数据库中的数据用好看的样式在网页上呈现出来 day01MySQL基础 接下来就是MySQL的安装什么的 mysqld --initialize-insecure mysqld -install net start mysql至此我的电脑上已…

【蓝桥杯-筑基篇】基础入门

🍓系列专栏:蓝桥杯 🍉个人主页:个人主页 目录 1.数位翻转 2.三个数求最大值的写法 3.两数交换的几种方法 4.身份证第18位合法性校验 5.黑洞数(陷阱数) 1.数位翻转 如: 整数 12345 返回结果为整数: 54321 当第一次看到这个题…

【零基础】学python数据结构与算法笔记7

文章目录前言41.查找排序部分习题42.查找排序习题143.查找排序习题244.查找排序习题345.查找排序习题4总结前言 学习python数据结构与算法,学习常用的算法, b站学习链接 41.查找排序部分习题 选题部分来自leetcode 42.查找排序习题1 242. 有效的…

蓝桥杯备赛Day6——链表

目录 数组的缺点 链表 单向链表 双向链表 Python链表的实现 手写链表 数组的缺点 1)需要占用连续的空间 若某个数组很大,可能没有这么大的连续空间给它用。 2〉不方便删除和插入 例如删除数组中间的一个数据,需要把后面所有的数据往前挪填补这个空…

CODESYS开发教程7-字符串及其基本操作

今天继续我们的小白教程,老鸟就不要在这浪费时间了😊。 前面一期我们介绍了CODESYS的关键字及变量。这一期主要介绍CODESYS的字符串类型,以及如何利用字符串操作函数来实现字符串的查找、插入、替换、连接、分割、删除等相关操作。注意本文介…

Realsense相机的RGB与depth图像的对齐

第三部分 将RGB图像和Depth图像对齐 文章目录第三部分 将RGB图像和Depth图像对齐前言一、创建对齐的cpp文件1.用vim创建C文件二、使用CMake构建C工程1.创建并编写CMakeList.txt文件2.编译CMakeLists.txt总结前言 将RGB图像和深度图像对齐有两种方式,一种是将深度图…

音视频开发-第一章-H264编解码

目录参考原文一、概述二、封装格式2.1、视频文件封装格式2.2、音视频编码方式2.2.1、视频编码方式2.2.2、音频编码方式三、H264相关概念3.1、H264基本单元3.2、帧类型3.3、GOP(画面组)3.4、IDR 帧四、H264压缩方式4.1、H264压缩方式4.2、H264压缩方式说明五、H264分层结构5.1、…

【websocket】前端websocket 实时通信

前端websocket 实时通信 文章目录前端websocket 实时通信什么是websocket为什么传统的http协议不能做到websocket实现的功能websocket前后端所用到的事件对比WebSocket.readyState代码什么是websocket websocket是HTML5开始提供的一种网络通信协议,它诞生的目的是在…

60条小妙招帮助你开车更省油

1、把备胎和千斤顶,工具,都放在家里,不跑长途不带这些,省油。2、说明书上说92号或以上标号,那么加95号油省油。如果是95或以上的标注,那就加98省油。3、驾驶中尽量减少急加速 急刹车,省油。4、驾…

Java——多态

好久不见啊,兄弟们!!这不将近期末考试了吗,阿涛平日里课听的不多,所以最近都在疯狂补课,祖宗之法也可变,阿涛的学校终于不是二十周校历了!!希望从今往后我们的生活都能够…

[oeasy]python0041_ 转义字符_转义序列_escape_序列_sequence

转义序列 回忆上次内容 上次回顾了5bit-Baudot博多码的来历从 莫尔斯码 到 博多码 原来 人 来 收发电报 现在 机器 来 收发电报 输入方式 从 电键改成 键盘 输出方式 从 纸带变成 打印纸张 后来 电传打字机ASR-33成为 初代 经典终端 除了 \n 和 \r 之外 还有什么 特殊字符 吗…

前端格式化工具使用(eslint、stylelint、prettier、lint-staged和husky搭配格式化代码)

目录 eslint 安装eslint .eslintrc.js env extends parser parserOptions rules globals plugins 屏蔽eslint检测具体规则 官方规则 stylelint 安装stylelint 创建stylelint配置文件 .eslintrc.js extends sass文件的格式检查 prettier 安装使用prettier …

Vue组件-插槽

一、插槽 1. 组件的三大核心:属性(data、props)、事件、插槽 2. 插槽(slot) 插槽(slot)将父组件的内容与子组件的模板相混合,从而弥补了视图的不足。 插槽的目的:使组件…