prometheus使用 (一) 部署服务

本文介绍了如何利用Prometheus监控集群,包括监控目标、Prometheus架构、数据模型和时间序列表示方法。通过实例展示了Prometheus的部署和服务配置,帮助读者理解并实施集群监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面基础用法我们已经有所了解了,但部署永远都是第一步。如果想要稳定运行下去集群的监控是必须的

这里我们使用一个新的工具,"Prometheus"来监控我们的集群。不过再此之前,我们要了解一些不要的信息

一. 监控的目标

#一个监控系统需要能够有效的⽀持"⽩盒监控"和"⿊盒监控"
#可以在系统或者服务在发⽣故障时能够快速通知相关的⼈员进⾏处理。

1.黑盒监控     #通常是在外部对主机或服务的观察方式
              #比如curl的状态码、能否ping通、端口或进程什么的

2.白盒监控     #获取资源的详细信息,通过这些信息来对可能发生的故障进行预防
              #比如: 可以通过查看某段时间范围内新增的磁盘容量,来推算什么时候可能会满,等等更详细的信息去做预防操作

二. promethues架构

#官方地址
https://prometheus.io/

#上述架构图中组件的作用
 prometheus server     #监控服务端,用于收集、存储、查询数据
 pushgateway           #将自定义监控项收集整合再推送到prometheus上存储
 job/exporters         #会收集节点上的资源指标信息,推送、拉取到pushgateway或proetheus
 alertmanager          #根据规则进行报警
 grafana               #好看的监控页面
 service discovery     #我们可以通过k8s的api动态发现集群的信息


#眼看十遍不如操作一遍,看不懂没关系,接着走

三. prometheus数据模型

Prometheus会将所有采集到的样本数据以"时间序列"的⽅式保存在内存数据库中并且定时保存到硬盘上。
而"时间序列"是按照 "时间戳" 和 "值" 的序列顺序存放的,我们称之为向量(vector).
每条"时间序列"通过指标名称(metrics name)和⼀组标签集(labelset)命名

#如下图
#x轴表示时间
#y轴表示数据值

Y轴
4                |
3          |     |         |
2     |    |     |    |    |
1     |    |     |    |    |
0   9:01 9:02  9:03  9:04 9:05  -->x轴
#通常来说,时间序列可以定义为一个数据点的序列
#这些数据点会按照时间的顺序,从一个数据源来进行索引

#在prometheus的范围内,这些数据点是在固定的时间间隔内收集的。
#因此这种数据以图形形式表示时,通常会绘制数据随时间进行变更。(动态)

四. prometheus中时间序列的表示方法

#在上图时间序列中的每⼀个"|"称为⼀个样本(sample),由以下三部分组成
1.指标(metric)          #被测量的目标的属性,比如服务器的主机名、集群名称等
2.测量值(value)         #一个目标可能有多个值,每个测量值对应一个具体的指标。比如服务器的CPU使用率、磁盘IO等
3.时间戳(timestamp)     #标记数据的时间戳

格式如下

                 #指标                         #时间戳         #测量值
<--------------- metric ---------------------><-timestamp -><-value->
http_request_total{status="200", method="GET"}@1434417560938 => 94355
http_request_total{status="200", method="GET"}@1434417561287 => 94334
http_request_total{status="404", method="GET"}@1434417560938 => 38473
http_request_total{status="404", method="GET"}@1434417561287 => 38544
http_request_total{status="200", method="POST"}@1434417560938 => 4748
http_request_total{status="200", method="POST"}@1434417561287 => 4785

五. 指标的使用

#格式
<metric_name>[{<label_1="value_1">,<label_N="value_N">}] <datapoint_numerical_value>

语法含义

1. <metric_name>      #指标名称,通常为某个属性的值,比如cpu大小、使用率、延迟等
                      #每个属性都有单独的指标名称,一般情况下名称和作用相同
                      #如 http_request_total 表示当前系统接收到的HTTP请求总量

2. [{<label_1="value_1">,<label_N="value_N">}]   
                      #k/v形式展示,我们通常会设置多个标签来对查询的数据进⾏过滤、聚合等。下面有个小案例
          
3. <datapoint_numerical_value>   #数据值的范围

标签查询案例

#比如,我想要匹配的是localhost主机上prometheus的metrics页面http请求总量
prometheus_http_requests_total{instance="localhost:9090",handler="/metrics"}
#返回
prometheus_http_requests_total{code="200", handler="/metrics", instance="localhost:9090", job="prometheus"}  63  

 

小知识

在使用标签时要注意,以" __ "作为前缀的标签,是系统保留的关键字,只能在系统内部使⽤。
在Prometheus的底层实现中,指标名称实际上是以 __name__=<metrics name> 的形式保存在数据库中的


#如下的prometheus查看/metrics请求总量的时间序列
prometheus_http_requests_total{instance="localhost:9090",handler="/metrics"}
#实际上等同于下面的语句
{__name__="prometheus_http_requests_total",instance="localhost:9090",handler="/metrics"}


#所以再碰到这种语句不要无辜脸 (⊙ˍ⊙)

 

六. 部署prometheus服务

(~ ̄▽ ̄)~ 费劲的都过去了,开始正式部署把

为了好理解,先以服务形式部署,然后再用k8s模式

#获取prometheus主体文件(代下载地址#http://gitd.cc/)
wget https://github.com/prometheus/prometheus/releases/download/v2.24.1/prometheus-2.24.1.linux-amd64.tar.gz

#或者用我的
https://download.youkuaiyun.com/download/qq_42883074/15646951


#解压软件包
tar -zxvf prometheus-2.24.1.linux-amd64.tar.gz

#创建目录
mkdir -p /usr/share/prometheus/
mkdir -p /etc/prometheus/
touch /etc/prometheus/prometheus.yml

#拷贝主体中的控制台目录、及控制台的库文件
cp -r consoles console_libraries/ /usr/share/prometheus/

#拷贝服务执行文件
cp promtool prometheus /usr/bin/

每次都用二进制文件启停有点麻烦,我们添加到systemd管理

1. 添加服务文件

cat > /usr/lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=The Prometheus monitoring system and time series database.
Documentation=https://prometheus.io
After=network.target

[Service]
User=root
LimitNOFILE=8192
ExecStart=/usr/bin/prometheus \\
    --config.file=/etc/prometheus/prometheus.yml \\
    --storage.tsdb.path=/var/lib/prometheus/data \\
    --web.console.templates=/usr/share/prometheus/consoles \\
    --web.console.libraries=/usr/share/prometheus/console_libraries \\
    --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

2. 启动服务

systemctl daemon-reload 
systemctl enable prometheus
systemctl start prometheus
systemctl status prometheus

4 访问页面

#prometheus的端口是9090
192.168.1.20:9090

<think>好的,我需要回答用户关于如何在服务器上安装配置Prometheus监控系统的问题。首先,我得回忆Prometheus的基本组件安装步骤。根据用户提供的引用内容,引文2提到了安装PrometheusGrafana,以及node_exporter的安装,而引文3提到了Prometheus的三个主要部分:Retrieval、StoragePromQL。需要确保这些组件都被正确配置。 首先,安装Prometheus服务器。用户可能是在Linux服务器上进行部署,所以步骤应该包括下载Prometheus、解压、配置以及启动服务。记得要创建专用的用户目录,确保安全性。配置文件prometheus.yml需要正确设置,特别是目标节点的配置,比如监控本机的node_exporter端口9100。 接下来是安装node_exporter,用于监控服务器的硬件系统指标。这部分需要下载、解压并启动服务,同时配置为系统服务以便开机启动。需要确认node_exporter是否正确暴露指标,并且Prometheus能够抓取这些数据。 然后是安装Grafana进行数据可视化。安装步骤可能包括添加Grafana的仓库,使用apt或yum安装,启动服务,并配置数据源导入Prometheus。引用2提到了配置dashboard,可能需要提供具体的导入方法,比如使用官方模板1860。 另外,用户可能需要监控远程服务器,这时候需要在每台远程服务器上安装node_exporter,并在Prometheus的配置文件中添加对应的目标。这部分可能需要用户根据实际情况修改配置文件并重载服务。 最后,验证日常维护也是关键步骤,比如检查服务状态、设置防火墙规则、配置SSL身份验证以提高安全性,以及定期更新软件。这些步骤能确保监控系统的稳定安全。 在生成相关问题的时候,要考虑用户可能进步想知道的内容,比如优化配置、报警设置、与其他工具集成以及安全措施。这些问题能帮助用户更全面地使用Prometheus监控系统。 需要确保所有的技术步骤准确无误,参考提供的引用内容,特别是关于启动服务配置文件的路径。同时,使用中文清晰表述,避免术语错误,并按照要求使用正确的LaTeX格式。</think>### 如何在服务器上安装配置 Prometheus 监控系统 #### **1. 安装 Prometheus Server** **步骤说明:** - **下载并解压:** ```bash wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz tar xvfz prometheus-*.tar.gz mv prometheus-* /opt/prometheus ``` - **创建专用用户(可选但推荐):** ```bash useradd --no-create-home --shell /bin/false prometheus chown -R prometheus:prometheus /opt/prometheus ``` - **配置 Prometheus:** 编辑配置文件 `prometheus.yml`,默认配置如下(监控本机 node_exporter): ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100'] # node_exporter 默认端口 ``` - **启动服务:** 创建 systemd 服务文件 `/etc/systemd/system/prometheus.service`: ```ini [Unit] Description=Prometheus Server [Service] User=prometheus ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml Restart=always [Install] WantedBy=multi-user.target ``` 启动并设置开机自启: ```bash systemctl daemon-reload systemctl start prometheus systemctl enable prometheus ``` #### **2. 安装 Node Exporter(监控目标服务器)** **步骤说明:** - **下载并安装:** ```bash wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar xvfz node_exporter-*.tar.gz mv node_exporter-*/node_exporter /usr/local/bin/ ``` - **配置为系统服务:** 创建 `/etc/systemd/system/node_exporter.service`: ```ini [Unit] Description=Node Exporter [Service] ExecStart=/usr/local/bin/node_exporter Restart=always [Install] WantedBy=multi-user.target ``` 启动服务: ```bash systemctl start node_exporter systemctl enable node_exporter ``` #### **3. 安装 Grafana(数据可视化)** **步骤说明:** - **安装 Grafana:** ```bash sudo apt-get install -y apt-transport-https sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list sudo apt-get update sudo apt-get install grafana ``` - **启动 Grafana:** ```bash systemctl start grafana-server systemctl enable grafana-server ``` - **配置数据源:** 1. 访问 `http://服务器IP:3000`,默认账号/密码:`admin/admin` 2. 进入 **Configuration > Data Sources > Add data source**,选择 **Prometheus** 3. 填写 Prometheus 地址(例如 `http://localhost:9090`) - **导入 Dashboard:** 使用官方模板(如 ID `1860`)监控 Linux 服务器: 1. 进入 **Create > Import** 2. 输入模板 ID,加载后选择 Prometheus 数据源 #### **4. 监控远程服务器** - **在远程服务器上重复步骤 2** 安装 node_exporter - **修改 Prometheus 配置文件**,添加远程目标: ```yaml scrape_configs: - job_name: 'remote-node' static_configs: - targets: ['远程服务器IP:9100'] ``` - **重载 Prometheus 配置:** ```bash systemctl reload prometheus ``` #### **5. 验证与维护** - **检查 Prometheus 状态:** ```bash systemctl status prometheus # 确保服务运行正常 ``` - **访问 Prometheus Web:** `http://服务器IP:9090`,在 **Status > Targets** 中查看监控目标状态 - **安全加固(可选):** - 配置防火墙规则开放必要端口(如 9090、3000) -Prometheus Grafana 启用 HTTPS 身份验证 --- ### **相关问题** 1. **如何为 Prometheus 配置报警规则并集成 Alertmanager?**[^3] 2. **如何优化 Prometheus 的存储性能以应对大规模监控场景?** 3. **Grafana 如何与 Prometheus 以外的数据源(如 MySQL)集成?** 4. **如何通过 Prometheus 监控 Kubernetes 集群?**[^2] 5. **如何为 Node Exporter 添加自定义指标收集?** --- [^1]: 关于本地搭建 Prometheus 的后续步骤可参考远程服务监控配置。 [^2]: 客户服务器安装 node_exporter 是监控数据采集的关键步骤。 [^3]: Prometheus 的核心组件(Retrieval、Storage、PromQL)需协同工作以实现监控功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值