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

Posted 鮀城小帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Prometheus+Grafana搭建监控平台(Windows/Linux环境exporter部署)相关的知识,希望对你有一定的参考价值。

待优化:添加端口及防火墙开放配置

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 实例。

以上是关于基于Prometheus+Grafana搭建监控平台(Windows/Linux环境exporter部署)的主要内容,如果未能解决你的问题,请参考以下文章

基于Prometheus和Grafana的监控平台 - 环境搭建

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

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

mac基于SpringBoot2+prometheus+ Grafana搭建监控系统的完整过程

[转帖]基于docker 搭建Prometheus+Grafana

Prometheus+grafana搭建jenkins监控