随着现代组织日益复杂的技术堆栈和庞大的数据掌握需要,如何科学有效地监控和管理部署环境中的各种组件变得越来越重要。在这个背景下,Prometheus 出现了。
Prometheus 是一个开源的,具有丰富功能的监控与警报工具包,它于 2012 年由 SoundCloud 发起,其设计目标是实现一套在多维数据世界且可靠的监控系统,现在已经成为了云原生计算基金会的重要项目之一。Prometheus 的设计理念非常符合今天分布式计算,微服务和云基础设施的需求,可以说是当下最主流的监控与警告系统之一。
今天我们就来介绍如何安装与使用 prometheus,在这之前还需要你对 exporter 有一个了解,如果你去访问 prometheus 官网,就会发现很多 exporter 的字样。简单来说 exporter 就是采集监控数据的东西,它可以通过 prometheus 对外提供数据,并有一个统一的规范格式。官方实现了很多 exporter,比如 mysql exporter,node exporter 等等。还有很多第三方实现的 exporter,若感兴趣可以访问官网去了解。
简单来说,exporter 就是一个给 prometheus 提供数据的组件
将 9100 端口放开,然后前台访问 http://ip:9100/metrics 。当访问这个 url 时候,展示一堆以下格式的数据,则证明安装 exporter 成功。
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
go_gc_duration_seconds{quantile="0.75"} 0
go_gc_duration_seconds{quantile="1"} 0
go_gc_duration_seconds_sum 0
go_gc_duration_seconds_count 0
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 8
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.21.4"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 2.553448e+06
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total 2.553448e+06
# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.
# TYPE go_memstats_buck_hash_sys_bytes gauge
go_memstats_buck_hash_sys_bytes 1.445367e+06
# HELP go_memstats_frees_total Total number of frees.
接下来,部署 prometheus,先创建一个 prometheus 的目录,执行命令 vim prometheus.yml 新建这个配置文件,配置文件里的内容可以填入以下信息:
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus #这个用来监控本机的prometheus服务
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux #这个用来监控本机的机器性能,填写你的node_exporter部署的机器的ip即可
static_configs:
- targets: ['你的ip:9100']
labels:
instance: localhost
我当前的路径是 /hustudy/prometheus/prometheus.yml 执行 docker 命令 docker run -d -p 9090:9090 -v /hustudy/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus 来启动容器, 注意要将-v 参数后的 prometheus.yml 文件路径替换成你自己的。
容器启动后 prometheus 会暴露在 9090 端口,然后我们前台访问 http://ip:9090 以及 前台访问http://ip:9090/targets 当页面出现以下内容时,则证明部署成功。
现在我们已经都部署好了,但是 prometheus 展示的数据并不友好,并不方便我们直观的查看,以及使用 prometheus 提供的 Alertmanager 告警组件有点复杂,所以在下一篇,我们绍数据可视化神器 grafana
领取专属 10元无门槛券
私享最新 技术干货