安装Prometheus
第一步:确保安装有docker
docker -v
第二步:拉取镜像
# 拉取Prometheus的Docker镜像
docker pull prom/prometheus:v2.41.0
第三步:准备相关挂载目录及文件
# /home/prometheus/data目录,准备用来挂载放置prometheus的数据
# /home/prometheus/config目录,准备用来放置prometheus的配置文件
# /home/prometheus/rules目录,准备用来挂载放置prometheus的规则文件
mkdir -p /home/prometheus/{data,config,rules}
# 授权相关文件夹权限
chmod -R 777 /home/prometheus/data
chmod -R 777 /home/prometheus/config
chmod -R 777 /home/prometheus/rules
# 创建Prometheus的配置文件,例如 /home/prometheus/config/prometheus.yml
# 你可以在这个文件中配置Prometheus的scrape targets和其他设置
# 运行Prometheus容器,挂载数据和配置目录
docker run -d --name prometheus \
--net=host \
-v /home/prometheus/config:/etc/prometheus \
-v /home/prometheus/data:/data \
-v /home/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
准备文件
# 配置文件
cat > /home/prometheus/config/prometheus.yml << \EOF
global:
# 数据采集间隔
scrape_interval: 45s
# 告警检测间隔
evaluation_interval: 45s
# 告警规则
rule_files:
# 这里匹配指定目录下所有的.rules文件
- /prometheus/rules/*.rules
# 采集配置
scrape_configs:
# 采集项(prometheus)
- job_name: 'prometheus'
static_configs:
# prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
- targets: ['localhost:9090']
# 采集项(服务器)
- job_name: 'shuju-node1'
static_configs:
- targets: ['192.168.18.211:9100']
# 采集项(服务器)
- job_name: 'shuju-node2'
static_configs:
- targets: ['192.168.18.212:9100']
# 采集项(服务器)
- job_name: 'shuju-node3'
static_configs:
- targets: ['192.168.18.213:9100']
# 采集项(服务器)
- job_name: 'houduan-ceshi-node'
static_configs:
- targets: ['192.168.18.214:9100']
EOF
# 查看一下配置文件
cat /home/prometheus/config/prometheus.yml
prometheus配置项说明
- global:全局配置 (如果有内部单独设定,会覆盖这个参数)
- alerting:告警插件定义。这里会设定alertmanager这个报警插件
- rule_files:告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现
- scrape_configs:采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现
- remote_write:用于远程存储写配置
- remote_read:用于远程读配置
第四步:启动容器
# 启动prometheus
# config.file:指定容器中,配置文件的位置
# web.enable-lifecycle:启动此项后,当配置文件发生变化后,可通过HTTP API 发送 post 请求到 /-/reload,实现热加载,如:curl -X POST http://47.105.39.189:9090/-/reload
# -v /etc/localtime:/etc/localtime:ro表示让容器使用宿主机的时间, :ro表示只读(注:此方式只针对宿主机和容器的时区文件均为/etc/localtime)
docker run --name prometheus -d \
-p 9090:9090 \
-v /home/prometheus/data:/prometheus/data \
-v /home/prometheus/config:/prometheus/config \
-v /home/prometheus/rules:/prometheus/rules \
-v /home/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
-e TZ='Asia/Shanghai' \
prom/prometheus:v2.41.0 --config.file=/prometheus/config/prometheus.yml --web.enable-lifecycle
第五步:访问测试
访问
{ip}:9090即可,帐号:admin/public
问题报错
Warning: Error fetching server time: Detected 28770.947000026703 seconds time difference between your browser and the server. Prometheus relies on accurate time and time drift might cause unexpected query results.
这是因为时间不同步导致的
方法
ntpdate ntp.aliyun.com
安装Grafana
Grafana是一个开源的度量分析和可视化工具,可以与Prometheus集成。
第一步:确保安装有docker
docker -v
第二步:拉取镜像
# 你也可以直接拉docker pull grafana/grafana, 即拉取最新的镜像docker pull grafana/grafana:lastest
docker pull grafana/grafana:9.3.2
第三步:准备相关挂载目录及文件
# /home/grafana/data目录,准备用来挂载放置grafana的数据
# /home/grafana/plugins目录,准备用来放置grafana的插件
# /home/grafana/config目录,准备用来挂载放置grafana的配置文件
mkdir -p /home/grafana/{data,plugins,config}
# 授权相关文件夹权限
chmod -R 777 /home/grafana/data
chmod -R 777 /home/grafana/plugins
chmod -R 777 /home/grafana/config
准备配置文件
# 先临时启动一个容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana:9.3.2
# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /home/grafana/config/grafana.ini
# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp
# 修改配置文件(需要的话)
# vim /home/grafana/config/grafana.ini
第四步:启动容器
# 启动prometheus
# 环境变量GF_SECURITY_ADMIN_PASSWORD:指定admin的密码
# 环境变量GF_INSTALL_PLUGINS:指定启动时需要安装得插件
# grafana-clock-panel代表时间插件
# grafana-simple-json-datasource代表json数据源插件
# grafana-piechart-panel代表饼图插件
docker run -d \
-p 3000:3000 \
--name=grafana \
-v /etc/localtime:/etc/localtime:ro \
-v /home/grafana/data:/var/lib/grafana \
-v /home/grafana/plugins/:/var/lib/grafana/plugins \
-v /home/grafana/config/grafana.ini:/etc/grafana/grafana.ini \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" \
grafana/grafana:9.3.2
第五步:访问测试
访问
{ip}:3000即可,使用账密admin/admin进行登录即可
第六步:使用测试
- 添加数据源
安装exporter监控采集程序,采集数据进prometheus
node-exporter
官方不建议通过Docekr方式部署node-exporter,因为它需要访问主机系统
node-exporter 可以采集机器(物理机、虚拟机、云主机等)的监控指标数据,能够采集到的指标包括 CPU, 内存,磁盘,网络,文件数等信息
安装node-exporter
# 下载
cd /home/prometheus
wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
# 解压
tar -xvf node_exporter-1.1.2.linux-amd64.tar.gz
mv node_exporter-1.1.2.linux-amd64 node_exporter
cd node_exporter
# 启动
nohup ./node_exporter --web.listen-address=":9100" &
访问一下,确保node-exporter已正常启动
或者直接
curl 192.168.18.171:9100进行验证也可
在prometheus中配置当前采集项
编辑配置文件
vim /home/prometheus/config/prometheus.yml
增加当前采集项目
global:
# 数据采集间隔
scrape_interval: 45s
# 告警检测间隔
evaluation_interval: 45s
# 告警规则
rule_files:
# 这里匹配指定目录下所有的.rules文件
- /prometheus/rules/*.rules
# 采集配置
scrape_configs:
# 采集项(prometheus)
- job_name: 'prometheus'
static_configs:
# prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
- targets: ['192.168,18.211:9090']
# 采集项(服务器)
- job_name: 'shuju-node1'
static_configs:
- targets: ['192.168.18.171:9100']
# 采集项(服务器)
- job_name: 'shuju-node2'
static_configs:
- targets: ['192.168.18.171:9100']
# 采集项(服务器)
- job_name: 'shuju-node3'
static_configs:
- targets: ['192.168.18.172:9100']
使得最新的prometheus配置生效
你可以重启prometheus或者使用热加载使新配置生效,这里我们使用热加载的方式
# 前提条件:启动prometheus时,启用了web.enable-lifecycle
# 发送post请求到prometheus的/-/reload下触发热加载配置
curl -X POST http://192.168.18.171:9090/-/reload
注:若你触发热加载后,过个一会儿还没看到监控的变化, 那么你可以使用docker logs -f {prometheus容器}查看prometheus日志,看到底是否触发了热加载