一、背景介绍
咱在使用 Linux 系统的时候,就跟开车一样,得时刻知道车的状态,像车速、油量啥的。在 Linux 里,系统性能就好比车的状态,我们得监控 CPU 使用率、内存占用、磁盘 I/O 这些指标。要是不监控,就可能出现系统崩溃、服务中断这些问题,就像车突然抛锚一样。
Prometheus 和 Grafana 这俩工具就像是汽车的仪表盘,能让我们清楚地看到系统的各项指标。Prometheus 负责采集数据,就像车上的各种传感器,把系统的信息收集起来;Grafana 则负责把这些数据变成直观的图表,就像仪表盘上的指针和数字,让我们一眼就能明白系统的状态。
二、Prometheus 基础
2.1 什么是 Prometheus
Prometheus 是个开源的监控系统,它就像一个大管家,专门负责收集各种系统和服务的指标数据。它通过拉取(pull)的方式,定期去各个目标那里获取数据,然后把这些数据存起来。
2.2 安装 Prometheus
在 Linux 系统上安装 Prometheus 很简单,我们可以从官方网站下载二进制文件,然后解压就可以了。下面是具体的步骤:
# 下载 Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gz
# 解压文件
tar -zxvf prometheus-2.37.0.linux-amd64.tar.gz
# 进入解压后的目录
cd prometheus-2.37.0.linux-amd64
# 启动 Prometheus
./prometheus --config.file=prometheus.yml
这里的 prometheus.yml 是 Prometheus 的配置文件,我们可以在里面配置要监控的目标。
2.3 配置 Prometheus
打开 prometheus.yml 文件,我们可以看到类似下面的配置:
global:
scrape_interval: 15s # 每隔 15 秒采集一次数据
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090'] # 监控 Prometheus 自身
这里我们配置了每隔 15 秒采集一次数据,并且监控 Prometheus 自身。如果我们要监控其他目标,只需要在 targets 里添加相应的地址就可以了。
三、Grafana 基础
3.1 什么是 Grafana
Grafana 是一个可视化工具,它可以把 Prometheus 采集到的数据变成各种漂亮的图表和仪表盘。就像我们开车时看仪表盘一样,通过 Grafana 我们可以直观地看到系统的性能指标。
3.2 安装 Grafana
在 Linux 系统上安装 Grafana 也很简单,我们可以使用包管理器来安装。以 Ubuntu 为例:
# 添加 Grafana 源
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
# 更新包列表
sudo apt-get update
# 安装 Grafana
sudo apt-get install grafana
安装完成后,启动 Grafana 服务:
sudo systemctl start grafana-server
3.3 配置 Grafana
打开浏览器,访问 http://localhost:3000,输入默认的用户名和密码(都是 admin),登录 Grafana。然后我们需要添加 Prometheus 作为数据源:
- 点击左侧菜单的
Configuration->Data Sources。 - 点击
Add data source,选择Prometheus。 - 在
URL里输入 Prometheus 的地址,比如http://localhost:9090。 - 点击
Save & Test,如果显示Data source is working,说明配置成功。
四、全栈指标采集
4.1 系统指标采集
我们可以使用 Node Exporter 来采集 Linux 系统的各种指标,比如 CPU、内存、磁盘等。安装 Node Exporter 很简单:
# 下载 Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
# 解压文件
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz
# 进入解压后的目录
cd node_exporter-1.3.1.linux-amd64
# 启动 Node Exporter
./node_exporter
然后在 Prometheus 的配置文件 prometheus.yml 里添加 Node Exporter 的地址:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100'] # Node Exporter 默认端口是 9100
这样 Prometheus 就会定期采集 Node Exporter 提供的系统指标。
4.2 应用指标采集
如果我们有自己的应用程序,也可以让 Prometheus 采集应用的指标。比如,我们可以使用 Prometheus 的客户端库来在应用里暴露指标。下面是一个使用 Python Flask 框架的示例:
# Python Flask 示例
from flask import Flask
from prometheus_client import start_http_server, Counter
app = Flask(__name__)
# 创建一个计数器指标
REQUEST_COUNT = Counter('app_request_count', 'Total number of requests')
@app.route('/')
def hello():
# 每次请求增加计数器的值
REQUEST_COUNT.inc()
return 'Hello, World!'
if __name__ == '__main__':
# 启动 Prometheus 客户端,暴露指标
start_http_server(8000)
app.run()
然后在 Prometheus 的配置文件里添加这个应用的地址:
scrape_configs:
- job_name: 'my_app'
static_configs:
- targets: ['localhost:8000']
五、指标可视化
5.1 创建仪表盘
在 Grafana 里,我们可以创建各种仪表盘来展示指标。点击左侧菜单的 Create -> Dashboard,然后点击 Add a new panel。在 Query 里选择 Prometheus 数据源,然后输入要查询的指标,比如 node_cpu_seconds_total,就可以看到 CPU 使用时间的图表了。
5.2 定制仪表盘
我们可以根据自己的需求定制仪表盘,比如调整图表的样式、添加注释、设置时间范围等。还可以添加多个面板,把不同的指标展示在一个仪表盘里。
六、可视化告警
6.1 配置告警规则
在 Prometheus 里,我们可以配置告警规则。创建一个 rules.yml 文件,内容如下:
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on {{ $labels.instance }}"
description: "{{ $labels.instance }} has a CPU usage of {{ $value }}% for the last 5 minutes."
这个规则的意思是,如果 CPU 使用率连续 5 分钟超过 80%,就触发告警。
6.2 配置告警通知
在 Grafana 里,我们可以配置告警通知。点击左侧菜单的 Alerting -> Notification channels,添加一个新的通知渠道,比如邮件、Slack 等。然后在仪表盘的面板里设置告警规则,当指标超过阈值时,就会发送通知。
七、应用场景
7.1 生产环境监控
在生产环境中,我们可以使用 Prometheus 和 Grafana 来监控服务器的性能,及时发现并解决问题,保证服务的稳定性。比如,监控数据库服务器的 CPU、内存和磁盘 I/O,避免因为资源不足导致服务中断。
7.2 开发调试
在开发过程中,我们可以使用这两个工具来监控应用程序的性能,找出性能瓶颈,优化代码。比如,监控应用的响应时间、请求处理速度等。
八、技术优缺点
8.1 优点
- 开源免费:Prometheus 和 Grafana 都是开源软件,不需要支付额外的费用。
- 易于使用:配置和使用都比较简单,即使是新手也能快速上手。
- 可扩展性强:可以通过插件和扩展来满足不同的需求。
8.2 缺点
- 数据存储有限:Prometheus 的本地存储能力有限,对于大规模数据的存储可能会有问题。
- 学习成本:虽然易于使用,但要深入掌握一些高级功能,还是需要一定的学习成本。
九、注意事项
- 资源占用:Prometheus 和 Grafana 会占用一定的系统资源,特别是在采集大量数据时,要注意服务器的性能。
- 数据安全:要注意保护监控数据的安全,避免数据泄露。
- 配置管理:及时更新和管理 Prometheus 和 Grafana 的配置文件,确保监控的准确性。
十、文章总结
通过使用 Prometheus 和 Grafana,我们可以构建一个完整的 Linux 性能监控体系。Prometheus 负责采集系统和应用的指标数据,Grafana 负责将这些数据可视化,并提供告警功能。这样我们就可以实时监控系统的性能,及时发现并解决问题,保证系统的稳定运行。无论是在生产环境还是开发过程中,这两个工具都能发挥重要的作用。
评论