0.前言
谷歌有一句非常经典的话,如果你不能监控你的系统,那么你就无法管理他(应该是这么翻译)。随着技术的不断发展以及用户需求的不断提高,系统架构也从早期比较好管理的单体服务发展到现在管理复杂的微服务,对于大型系统而言,不仅微服务数量众多,而且调用关系极为复杂。在用户对服务稳定性要求日益增长的今天,如何通过技术手段保证服务可用性尤为重要,而监控系统则是保证服务稳定性不可或缺的一部分。今天我们就来说一下当下使用率极高的一款监控平台prometheus,并且简单的部署使用一下。
1.prometheus概述
Prometheus 是一个通过从监控目标上采集HTTP数据并收集指标数据的监控平台,Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合,可以看出来prometheus就是专门为云平台准备的监控系统。
相较于以前的监控平台,prometheus具有以下优点:
(1)易于管理;
(2)可监控服务内部状态;
(3)拥有强大的数据模型;
(4)拥有强大的查询语言PromQL;
(5)可扩展性强。
接下来我们部署一套prometheus,来体验一下这个强大的监控平台。
2.prometheus部署
prometheus-server的部署非常的简单,只需要下载prometheus-server服务,配个一个简单的配置文件,即可完成部署和启动。
(1)下载prometheus-server服务
可以从官网下载最新稳定版的prometheus,
下载地址:https://prometheus.io/download/
本次部署的版本是:prometheus-2.54.1
安装包名称:prometheus-2.54.1.linux-amd64.tar.gz
将安装包上传到服务器指定目录:
mkdir /data/prom
ls /data/prom
(2)解压安装包
cd /data/prom
tar xf prometheus-2.54.1.linux-amd64.tar.gz
ls prometheus-2.54.1.linux-amd64
部署中主要用到的文件有:prometheus,prometheus.yml (3)修改配置文件
cd /data/prom/prometheus-2.54.1.linux-amd64
cat prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"] # 这里改成服务器IP地址
(4)启动prometheus-server
cd /data/prom/prometheus-2.54.1.linux-amd64
./prometheus --config.file=./prometheus.yml
这里因为是测试,就直接在服务器前台启动服务了,如果启动日志没有报错信息,说明服务启动成功。
(5)浏览器访问prometheus
在浏览器输入192.168.159.166:9090访问地址,出现如下界面:
到此,prometheus-server部署完成了,是不是非常简单呢。
3. node_exporter部署
上面我们说到prometheus采集http协议的监控数据,而暴露数据的则是各种类型的exporter,其中最常用就是node_exporter,我们部署一个node_exporter看下exporter是如何暴露指标数据的,然后到prometheus那里通过PromQL语句查询一些常用的监控指标。
(1)下载node_exporter
下载地址:https://prometheus.io/download/
版本:node_exporter-1.8.2
安装包:node_exporter-1.8.2.linux-amd64.tar.gz
将安装包放到指定目录:
cd /data/prom
ls
(2)解压安装包
cd /data/prom
tar xf node_exporter-1.8.2.linux-amd64.tar.gz
ls node_exporter-1.8.2.linux-amd64
(3)运行node_exporter
cd /data/prom/node_exporter-1.8.2.linux-amd64
./node_exporter
可以看到node_exporter启动了一个9100端口。
(4)查询指标数据
curl http://localhost:9100/metrics
如图,可以查到监控指标数据的展示格式。
(5)node_exporter接入到prometheus
修改之前prometheus的配置文件,添加如下内容:
- job_name: "k8s-node2"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9100"]
记得要重启一下prometheus服务。
(6)在prometheus查看数据 在输入框输入:node_disk_info (查看服务器磁盘情况),数据显示如下:
可以看到job="k8s-node2"标签,说明数据采集成功。
4.总结
上面我们简单的说明了一下prometheus的作用,以及工作方式,后面会慢慢深入讲解prometheus的原理,以及在日常工作中的使用,并结合grafana采用更好的方式展示监控数据。