前期准备:
安装Docker:安装Docker
前置知识:
Prometheus:开源的系统监控和报警工具
安装位置:性能服务器
作用:采集监控数据
Exporter是一个采集监控数据并通过Prometheus监控规范对外提供数据的组件,能为Prometheus提供监控的接口。
Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。不同的Exporter负责不同的业务。
Grafana:开源可视化监控工具
安装位置:性能服务器
作用:生成各种漂亮的性能指标图,方便插入性能测试报告中
node-exporter:采集服务器性能工具
安装位置:性能服务器
作用:收集性能服务器的各种系统资源指标
firewall-cmd --state
systemctl stop firewalld.service
systemctl disable firewalld.service
date
yum install -y ntp
ntpdate pool.ntp.org
docker pull prom/node-exporter
docker images
docker run --name exporter -p 9100:9100 -d prom/node-exporter
命令解释:
–name exporter 启动镜像后就是个容器,给容器起个名字叫exporter
-p 9100:9100 指定宿主机(Linux)的9100端口与exporter容器的9100端口对应
-d 后台运行
prom/node-exporter 启动的镜像名
遇到的问题:Docker容器做端口映射报错:Error response from daemon: driver failed programming external connectivity on endpoint mynode-exporter
问题原因:docker服务启动时定义的自定义链DOCKER被清除
解决办法:
重启Docker
systemctl restart docker
docker rm -f exporter
回到第3步,重新后台启动node-exporter镜像
创建目录并编辑该目录下的prometheus.txt文件
mkdir -p /data/prometheus && vim /data/prometheus/prometheus.txt
命令解释:
mkdir加-p参数的意思是如果创建目录的父目录不存在则自动创建父目录,也就是data目录
vim编辑文件时,如果该文件不存在则自动创建
输入以下内容并修改为自己node-exporter
的ip地址,按ESC,输入:wq
保存并退出
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
# 主要是新增了node_exporter的job,如果有多个node_exporter,在targets数组后面加即可
- job_name: 'node_exporter'
static_configs:
- targets: ['自己的node-exporter的IP:9100']
重命名:把prometheus.txt文件重命名为prometheus.yml文件
mv /data/prometheus/prometheus.txt /data/prometheus/prometheus.yml
这么做的原因:如果直接生成.yml文件,把上述内容复制到.yml文件,会出现格式错乱的情况,而.yml基本语法规则如下:
大小写敏感;
使用缩进表示层级关系;(重点)
缩进时不允许使用Tab键,只允许使用空格;
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可;
docker pull prom/prometheus
docker images
docker run --name prometheus -p 9090:9090 -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -d prom/prometheus
命令解释:
–name prometheus 启动镜像后就是个容器,给容器起个名字叫prometheus
-p 9090:9090 指定宿主机(Linux)的9090端口与prometheus容器的9090端口对应
-v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml 主机(linux)的/data/prometheus/prometheus.yml文件挂载容器的/etc/prometheus/prometheus.yml文件
-d 后台运行
prom/prometheus 启动的镜像名
docker pull grafana/grafana
docker images
docker run --name grafana -p 3000:3000 -d grafana/grafana
–name grafana启动镜像后就是个容器,给容器起个名字叫grafana
-p 3000:3000 指定宿主机(Linux)的3000端口与grafana容器的3000端口对应
-d 后台运行
grafana/grafana 启动的镜像名
地址:http://ip地址:3000/
例如:http://192.168.0.104:3000/
Name填写Prometheus,或者你也可以自己起个名字,URL输入Prometheus地址
其他保持默认,点击Save & Test(保存和测试)按钮,如果出现Data source is working(数据源正在工作),表示配置已经好了
进入网址https://grafana.com/grafana/dashboards/8919,点击Copy ID to Clipboard(复制ID到剪贴板)
选择+号,点击Import(导入)
输入ID,点击Load(加载)
VictoriaMetrics(维多利亚度量)选择刚才配置的数据源Prometheus,点击Import(导入)