1.1 Prometheus是什么?Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。
Prometheus - Monitoring system & time series database
Prometheus · GitHub
作为新一代的监控框架,Prometheus 具有以下特点:
• 多维数据模型:由度量名称和键值对标识的时间序列数据
• PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
• 不依赖分布式存储,单个服务器节点可直接工作
• 基于HTTP的pull方式采集时间序列数据
• 推送时间序列数据通过PushGateway组件支持
• 通过服务发现或静态配置发现目标
• 多种图形模式及仪表盘支持
Prometheus适用于以机器为中心的监控以及高度动态面向服务架构的监控。
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更加友好美观的展示界面
组件 | 说明 |
prometheus-2.41.0.windows-amd64 | 监控server端,用于汇总展示各收集器的资源情况(界面丑) |
grafana-enterprise-8.2.2.windows-amd64 | 度量分析可视化系统,仪表盘多,替换prometheus默认展示界面 |
Prometheus下载地址:https://prometheus.io/download/
grafana下载: https://grafana.com/grafana/download?platform=windows
Promethe+Grafana :https://pan.baidu.com/s/1s03HZ9AlMNbWQKc9-QisUw?pwd=bk1k
在prometheus.yaml中配置了 【- targets: ["127.0.0.1:9090"]】之后,就可以读取一些默认的指标信息。这里的 State 是 “UP” 表示该组件是否正常启动,因为这是读取Prometheus本身,只要能进入该界面,就必定是 “UP” 。后续如果添加了对 Exporeter(比如:windows-exporter)的配置,那么从这个 State 可以看到对应的 exporter 是否被 Prometheus 正常监听到。
待定
相对于Granfan,prometheus的默认界面比较单一,可看到的关键资源信息不多,下面使用Grafana展示具体资源状况。
在全英文路径下解压 grafana-enterprise-8.2.2.windows-amd64.zip ,双击bin目录下grafana-server.exe,任务栏会新增一个命令行窗户(不要关闭)。
浏览器打开 http://127.0.0.1:3000(默认账号密码都是admin),远程访问用 ip:3000 :
(1)点击设置(小齿轮),选择Data Source
(2)点击 Add data source,选择 Prometheus
(3)全部使用默认配置, 这里一定要将localhost改为127.0.0.1,下拉, 点击Save & test
官方下载地址:https://github.com/prometheus-community/windows_exporter/releases
百度云网盘:https://pan.baidu.com/s/1KXedfMPOs84CsbxXRCxKhQ?pwd=38i6
(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即成功
(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资源监控] 仪表盘,打开详情如下:
官方下载地址:Releases · kbudde/rabbitmq_exporter · GitHub
百度云网盘:https://pan.baidu.com/s/1KXedfMPOs84CsbxXRCxKhQ?pwd=38i6
解压下载的安装包 rabbitmq_exporter_1.0.0-RC19_windows_amd64.tar.gz 到全英文路径下
启动 rabbitmq_exporter ,在命令行执行 rabbitmq_exporter.exe 文件。
(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 自己的。
去地址:Dashboards | Grafana Labs查找rabbitmq_exporter模板。
这里使用:RabbitMQ Metrics from rabbitmq_exporter,ID 号为:10120。
在 Dashboards manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:
官方下载地址:Releases · mysqld_exporter · GitHub
百度云网盘:https://pan.baidu.com/s/1KXedfMPOs84CsbxXRCxKhQ?pwd=38i6
解压下载的安装包 mysqld_exporter-0.14.0.windows-amd64.zip 到全英文路径下
启动 mysql_exporter ,在命令行执行 mysql_exporter.exe 文件。
进入mysql_exporter目录,cmd命令行执行:
mysqld_exporter.exe --config.my-cnf=.my.cnf
(1)修改Prometheus配置文件,在 prometheus.yml 中添加如下内容:
- job_name: 'mysql'
static_configs:
- targets: ['192.168.1.106:9104']
(2)重启Prometheus
稍等一会,访问http://127.0.0.1:9090/targets,发现mysql_exporter已经添加进去。
(3)查看监控指标数据
去地址:Dashboards | Grafana Labs查找rabbitmq_exporter模板。
这里使用:MySQL Exporter Quickstart and Dashboard ,ID 号为:14057。
在 Dashboards manager 使用 dashboard ID 进行 import 加载仪表盘
官方下载地址:Releases · redis_exporter · GitHub
百度云网盘:百度网盘 请输入提取码
解压下载的安装包 mysqld_exporter-0.14.0.windows-amd64.zip 到全英文路径下
启动 redis_exporter ,在命令行执行 redis_exporter.exe 文件。
进入redis_exporter目录,cmd命令行执行:
redis_exporter.exe -redis.addr 192.168.1.38:6379 -redis.password xxxxxx -web.listen-address :9121
(1)修改Prometheus配置文件,在 prometheus.yml 中添加如下内容:
- job_name: "127.0.0.1:redis_exporter"
static_configs:
- targets: ["127.0.0.1:9121"]
(2)重启Prometheus
稍等一会,访问http://127.0.0.1:9090/targets,发现redis_exporter已经添加进去。
(3)查看监控指标数据
去地址:Dashboards | Grafana Labs查找rabbitmq_exporter模板。
这里使用:Redis Dashboard for Prometheus Redis Exporter ,ID 号为:11835。
在 Dashboards manager 使用 dashboard ID 进行 import 加载仪表盘
官方下载地址:https://github.com/prometheus/node_exporter/releases
百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x
将安装包 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
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
(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已经添加进去。
去地址:Dashboards | Grafana Labs查找node_exporter模板。
这里使用:Node Exporter for Prometheus Dashboard based on 11074,ID 号为:15172。
在 Dashboards manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:
官方下载地址:https://github.com/iamseth/oracledb_exporter/releases
百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x
将安装包 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
增加一个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
检查 oracle安装路径的 $ORACLE_HOME/lib 目录下 是否有 libclntsh.so.18.1 文件,如果缺少该文件,启动 oracle_exporter 会失败。
进入 oracle 安装目录的 /lib 文件夹下,创建 libclntsh.so.18.1 的软连接:
ln -s libclntsh.so.18.1 libclntsh.so
当然我们启动oracledb_exporter最好以不挂断、后台运行的方式启动
nohup ./oracledb_exporter &
(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已经添加进去。
去地址:Dashboards | Grafana Labs查找oracledb_exporter模板。
这里使用:Node Exporter for Prometheus Dashboard based on 11074,ID 号为:15172。
在 Dashboards manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:
填写 dashboards ID后,点击 “Load” 加载仪表盘。
选择 Prometheus 实例。
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
官方下载地址:Releases · hnlq715/nginx-vts-exporter · GitHub
百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x
将安装包 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
nohup ./nginx-vts-exporter -nginx.scrape_uri=http://192.168.126.138/status/format/json &
参看采集指标
192.168.126.138:9913/metrics
(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已经添加进去。
去地址:Dashboards | Grafana Labs查找oracledb_exporter模板。
这里使用:Nginx VTS Stats,ID 号为:2949。
在 Dashboards manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:
填写 dashboards ID后,点击 “Load” 加载仪表盘。
选择 Prometheus 实例。
MSSQL的监控,官网没有提供采集器,所以只能用其他程序来监控,本文就用了 sql-exporter。
它可以理解成一个远程连接数据库的工具,可以用它来连接sql server/mysql 等等数据库,并以SQL查询方式采集SQL查询结果。
SQL_Exporter 是中心化的,可以把对不同实例的agent链接,都放在一台linux服务器上,以便管理、修改。你想想看,如果你更新了采集指标,只需要在该台中心化服务器重启sql_exporter agent采集客户端即可生效。
不像其他 mysql/linux/windows采集器,他们是部署在实际被采集的服务器上的,如果你想要更新采集器(虽然它做的很好了,不需要更新。除此之外就是无法加入自定义的采集指标或者采集项),那么需要到那么多台被采集的客户端机器上去覆盖更新,很痛苦的。
官方下载地址:Releases · mssql-exporter · GitHub
百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x
方式一:将安装包 node_exporter-0.18.1.linux-amd64.tar.gz 上传至服务器。
方式二:下载解压 sql_exporter
wget https://github.com/free/sql_exporter/releases/download/0.5/sql_exporter-0.5.linux-amd64.tar.gz
解压 exporter安装包
tar -zxf sql_exporter-0.5.linux-amd64.tar.gzln -s sql_exporter-0.5.linux-amd64 sql_exporter
mv sql_exporter-0.5.linux-amd64 sql_exporter
# 移动路径
cp -R sql_exporter /usr/local/
vi sql_exporter.yml
# 进入目录
cd /usr/local/sql_exporter
# 启动服务
nohup ./sql_exporter &
查看采集指标
(1)修改Prometheus配置文件,在 prometheus.yml 中添加如下内容:
- job_name: "192.168.126.138:mssql-xporter"
static_configs:
- targets: ["192.168.126.138:9399"]
(2)重启Prometheus
稍等一会,访问http://127.0.0.1:9090/targets,发现sqlserver_exporter已经添加进去。
去地址:Dashboards | Grafana Labs查找sql server_exporter模板。
这里使用:Microsoft SQL Server,ID 号为:13919。
填写 dashboards ID后,点击 “Load” 加载仪表盘。
在 Dashboards manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:
填写 dashboards ID后,点击 “Load” 加载仪表盘。
选择 Prometheus 实例。