使用docker部署prometheus最新版本2.43.0

环境准备:

192.168.197.136    安装prometheus

192.168.197.137 安装grafana

先把需要用到的镜像拉取下来

docker pull prom/prometheus    136服务器拉取 当前最新版本2.43.0

在部署prometheus之前先运行一个容器,把需要挂载的目录文件拷贝出来

docker run -d  --name prometheus --net=host docker.io/prom/prometheus:latest

docker cp prometheus:/prometheus  /data/

docker cp prometheus:/etc/prometheus/prometheus.yml /data/prometheus/

为了方便管理编辑一个脚本进行启动prometheus

vim prometheus.sh

 #!/bin/bash

img_name=prom/prometheus:latest

name=prometheus

docker rm -f $name

docker run -d --name $name    \

 --net=host                   \

 --restart=always            \

 --user=$(id -u):$(id -g) \

 -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \

 -v /data/prometheus/:/prometheus \

 $img_name   \

 --storage.tsdb.retention.time=5d

#--storage.tsdb.retention.time=5d 设置数据保留时长参数

# --user=$(id -u):$(id -g)指定容器内进程的用户ID和组ID与主机上当前用户的相同,避免容器中创建文件和目录没有权限

bash prometheus.sh   运行容器

来到web访问 192.168.197.136:9090

Prometheus就部署好了。

部署grafana

docker pull grafana/grafana:8.3.0   拉取镜像部署8.3.0版本  8.x版本比较稳定

在部署grafana之前先运行一个容器,把需要挂载的目录文件拷贝出来

docker run -d --name=grafana -p 3000:3000 grafana/grafana:8.3.0

docker cp grafana:/var/lib/grafana /data/

为了方便管理编辑一个脚本进行启动grafana

vim grafana.sh

#!/bin/bash

img_name=grafana/grafana:8.3.0

name=grafana

docker rm -f $name

docker run -d --name $name  \

 --net=host                  \

 --restart=always            \

 --user=$(id -u):$(id -g) \

 -v /data/grafana:/var/lib/grafana \

 $img_name

bash grafana.sh   启动容器

访问192.168.197.137:3000默认用户名 admin 默认密码 admin

首次登录会提示修改密码

登录后添加prometheus服务器到grafana

到这grafana就配置好了。

下载安装node_exporter  监控其他主机

 192.168.197.137操作

 wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz

tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz  -C /usr/local/

cd /usr/local

mv node_exporter-1.2.2.linux-amd64/ node_exporter

配置systemctl管理

vim /usr/lib/systemd/system/node_exporter.service

[Unit]

Description=Prometheusnode_exporter

[Service]

User=nobody

ExecStart=/usr/local/node_exporter/node_exporter --log.level=error

ExecStop=/usr/bin/killallnode_exporter

[Install]

WantedBy=default.target

systemctl start node_exporter   配置完直接启动就行

systemctl enable node_exporter 设置一下开机自启

systemctl status node_exporter   查看一下运行状态

Node运行成功后回到192.168.197.136   prometheus节点配置监控主机

vim prometheus.yml

  - job_name: "prometheus"

    static_configs:

      - targets: ["192.168.197.136:9090"]

  - job_name: "监控采集服务"

    static_configs:

      - targets: ["192.168.197.137:9100"]

修改完重启一下prometheus容器

bash prometheus.sh   在次访问prometheus可以看到新添加的监控了

主机配置完成后我们要下载监控模板Dashboards | Grafana Labs 

选中一款模板通过JSON文件使用模板

然后来到grafana控制台

到这prometheus+grafana+主机监控就部署完成了。 

<think>嗯,用户想在Ubuntu系统上通过Docker部署Prometheus。我需要整理一下思路,确保步骤准确清晰。用户之前的问题是关于Docker部署Prometheus的,现在又补充了一些引用资料,应该是在确认具体的操作步骤。首先,用户的环境是Ubuntu20.04。根据引用内容[^3],安装Docker需要先更新软件源,然后安装docker.io包。这里要注意区分不同的安装方式,不过引用里提到sudoaptinstalldocker.io是正确的做法。接着是权限设置,把用户加入docker组,避免每次用sudo。然后测试安装是否成功,这个步骤不能漏掉,因为用户可能会因为权限问题卡住。然后是配置Prometheus的配置文件。引用[^2]和[^4]都提到了需要创建prometheus.yml文件,并挂载到容器里。这里关键点是要先创建目录,比如在用户家目录下建/prometheus_data,然后在这个目录下写配置文件。配置文件的内容比较简单,默认的global和scrape配置就够用,但需要提醒用户后续可能需要根据需求调整。注意路径问题,绝对路径更可靠,${PWD}可能在某些情况下出错,所以建议明确写出路径,比如/home/user/prometheus_data。接下来运行容器的时候,端口映射9090,数据卷挂载的位置要准确。引用[^2]和[^4]的例子基本一致,但要注意名称选项--name参数的作用是给容器命名,方便后续管理。后台运行用-d,用户可能不太清楚这些参数的含义,所以需要解释清楚。验证部分,用户需要知道如何检查容器状态,用dockerps查看运行状态,再通过浏览器访问localhost:9090。如果用户服务器没有桌面环境,可能需要提示他们通过服务器IP访问,比如http://server_ip:9090,这在小提示里提到很重要。数据持久化的问题,引用[^4]和用户资料里的内容提到了挂载配置文件,但没有明确提到数据目录的持久化。在Prometheus容器中,默认数据存储位置是容器内的/prometheus,所以建议用户将主机目录也挂载到这个点,避免重启后数据丢失。比如-v/prometheus_data:/prometheus,这样数据就会保留在主机上。用户提供的引用中有提到认证配置[^5],比如用openssl生成密码文件,但用户的需求是基础部署,所以考虑作为可选步骤放在优化建议里更合适,避免增加复杂度。同样,引用[^1]和[^2]关于Grafana和node_exporter的部分属于监控平台的扩展,用户当前问题只涉及Prometheus,所以考虑放在相关问题里,作为后续步骤。可能遇到的坑:用户如果之前没安装Docker,要注意镜像下载速度慢的问题,可以考虑建议国内用户替换镜像源。另外,配置文件格式错误会导致容器启动失败,需要强调YAML的缩进和语法正确。端口冲突的情况也要提醒,比如如果9090被占用,需要更改映射端口。最后的问题扩展要贴合用户可能的后续需求,比如集成Grafana、添加node_exporter监控主机、配置规则和告警,这些都是监控系统常见的后续步骤。同时,认证和HTTPS的安全性提升也很重要,尤其是生产环境必须考虑。整个流程需要条理清晰,每个步骤明确,解释背后的原因,比如为什么挂载目录、为什么要验证。这样用户不仅知道怎么做,还能理解为什么,减少出错概率。小提示里的浏览器访问和持久化数据都是关键点,容易忽略的地方要特别强调。</think> 好的,参考您提供的引用信息和您的问题,以下是**在 Ubuntu 系统上使用 Docker 部署 Prometheus 的详细步骤**: ### 核心步骤 1. **安装 Docker** * 确保您的 Ubuntu 系统(如 20.04)已更新并安装 Docker: ```bash sudo apt-get update sudo apt-get install -y docker.io ``` * 验证安装: ```bash sudo docker --version # 如果看到 Docker 版本信息,说明安装成功 ``` * (可选但推荐)将当前用户加入 `docker` 组,避免每次执行 `sudo`: ```bash sudo usermod -aG docker $USER newgrp docker # 使组变更立即生效(或重新登录) docker run hello-world # 测试非sudo用户执行是否正常 ``` 2. **创建 Prometheus 配置文件目录** * Prometheus 需要一个外部配置文件 `prometheus.yml`。为此创建一个目录(例如在用户家目录): ```bash mkdir -p ~/prometheus_data cd ~/prometheus_data ``` 3. **创建并编辑 `prometheus.yml` 配置文件** * 在 `~/prometheus_data` 目录下创建配置文件: ```bash nano prometheus.yml ``` * 输入以下基础配置(监控 Prometheus 自身): ```yaml global: scrape_interval: 15s # 默认抓取间隔 scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] ``` * 按 `Ctrl+X`,然后输入 `Y`,再按 `Enter` 保存并退出 `nano`。这个配置告诉 Prometheus 每 15 秒抓取一次自己暴露的指标。 4. **拉取 Prometheus Docker 镜像** * Docker 会自动拉取最新镜像(如果没有本地缓存): ```bash docker pull prom/prometheus ``` 5. **启动 Prometheus 容器** * 使用以下命令启动容器,**将主机上的配置文件目录挂载到容器内**,并映射端口: ```bash docker run -d \ --name prometheus \ -p 9090:9090 \ -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \ -v $(pwd)/data:/prometheus \ prom/prometheus ``` * 命令解释: * `-d`: 后台运行容器。 * `--name prometheus`: 给容器命名(方便后续管理)。 * `-p 9090:9090`: 将主机端口 9090 映射到容器端口 9090Prometheus Web UI 端口)。 * `-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml`: 将**当前目录**(`~/prometheus_data`)下的 `prometheus.yml` **挂载到容器内的默认配置文件位置**。这使得您修改主机上的配置文件后,Prometheus 容器(通过重启或热加载)能使用新配置。 * `-v $(pwd)/data:/prometheus`: (重要!)将当前目录下的 `data` **子目录挂载到容器内的数据存储目录 `/prometheus`**。这确保了 Prometheus 抓取的历史指标数据在容器重启或删除后**不会丢失**(持久化存储)。首次运行时会自动创建 `data` 目录。 * `prom/prometheus`: 使用的镜像。 6. **验证部署** * 检查容器是否正常运行: ```bash docker ps # 应看到名为 'prometheus' 的容器处于 'Up' 状态 ``` * 访问 Prometheus Web UI:打开浏览器,访问 `http://<your-ubuntu-server-ip>:9090`。 * 导航到 `Status` -> `Targets`。应该能看到 `job="prometheus"` 的目标状态为 `UP`。 * 导航到 `Graph` 页面,可以尝试输入一些指标(如 `prometheus_http_requests_total`)进行查询。 7. **管理 Prometheus 服务** * **停止容器:** ```bash docker stop prometheus ``` * **启动容器:** ```bash docker start prometheus ``` * **重启容器** (例如,修改配置文件后通常需要重启生效): ```bash docker restart prometheus ``` * **查看容器日志** (用于排查问题): ```bash docker logs prometheus ``` * **删除容器** (如果需要彻底移除服务,**注意:这会删除容器,但不会删除挂载的卷和配置文件**): ```bash docker rm -f prometheus # 之后可以用第5步的命令重新创建容器 ``` **小提示:** * **浏览器访问:** 确保服务器的防火墙或安全组允许访问 9090 端口。 * **持久化:** 步骤 5 中的 `-v $(pwd)/data:/prometheus` 对于保留历史监控数据至关重要。如果容器重建而不挂载同一个卷,数据会丢失。 * **配置修改:** 如果要添加新的监控任务(例如监控其他服务器或应用),修改主机上的 `~/prometheus_data/prometheus.yml` 文件,然后执行 `docker restart prometheus`。 * **镜像版本:** 使用 `prom/prometheus:v2.37.8` 这样的格式可以指定特定版本镜像运行,提高部署稳定性。 ### 相关问题 (下一步做什么?) 1. **如何扩展配置以监控其他目标(如 Linux 服务器、MySQL、Redis、Spring Boot 应用等)?** * 这需要添加新的 `job_name` 到 `prometheus.yml` 中,并部署相应的 exporter (如 `node_exporter` 用于主机监控) [^1]。 2. **如何通过 Docker Compose 管理 Prometheus(以及与 Grafana、Alertmanager 等工具的集成)?** * `docker-compose.yml` 可以简化多容器的管理和依赖关系部署[^1][^2]。 3. **如何为 Prometheus Web UI 和 API 添加基本的 HTTP 认证?** * 这涉及到配置 Prometheus 和 Alertmanager 的认证方式(例如使用 `htpasswd`)[^5]。 4. **如何在部署Prometheus 之后,安装并配置 Grafana 来创建监控仪表盘?** * Grafana 是强大的数据可视化工具,Prometheus 是其主要数据源之一[^1]。 5. **如何配置 Prometheus 的告警规则并通过 Alertmanager 发送告警通知(邮件、Slack、钉钉等)?** * 需要在 Prometheus 中配置规则文件 (`*.rules.yml`),并部署 Alertmanager 来处理通知发送 [^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值