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