文章目录
- 前言
- 一. prometheus介绍
- 1.1 prometheus的起源
- 2.1 prometheus的特点
- 二. prometheus的安装
- 2.1 实验环境
- 2.2 安装前准备
- 2.3 开始安装prometheus
- 2.3.1 下载并解压prometheus server
- 2.3.2 安装过程
- 2.3.3 启动并查看端口
- 2.3.4 打开浏览器查看图形界面
- 总结
前言
云原生四象限: 容器,微服务,DevOPS ,编排通信。 【云原生专栏】就是基于这四个象限展开的,今天的内容是promehtues系列的安装和入门。建议从第一篇文章 prometheus 的基础入门 开始学习。
一. prometheus介绍
1.1 prometheus的起源
Prometheus 是由 SoundCloud 开源监控告警解决方案,从 2012 年开始编写代码,再到 2015 年 github 上开源以来,已经吸引了 2W+ 关注,以及很多大公司的使用;
2016 年 Prometheus 成为继 k8s 后,第二名 CNCF(Cloud Native Computing Foundation) 成员。
promehtues 的灵感来自谷歌的Borgmon,作为新一代开源解决方案,很多理念与 Google SRE 运维之道不谋而合。
Prometheus由开源编程语言Go编写,并且是在Apache 2.0许可证下授权的。
特别适合K8S 的架构上,作为一个数据监控解决方案,它由一个大型社区支持,有来自700多家公司的6300个贡献者,13500个代码提交和7200个拉取请求
2.1 prometheus的特点
Prometheus官网上的自述是:“From metrics to insight.Power your metrics and alerting with a leading open-source monitoring solution.”
翻译过来就是:从指标到洞察力,Prometheus通过领先的开源监控解决方案为用户的指标和告警提供强大的支持。
主要有以下四个特点:
- 通过PromQL实现多维度数据模型的灵活查询。
- 定义了开放指标数据的标准,自定义探针(如Exporter等),编写简单方便。
- PushGateway组件让这款监控系统可以接收监控数据。
- 提供了VM和容器化的版本。
除此之后还有如下特点:
- Go语言编写,拥抱云原生。
- 采用拉模式为主、推模式为辅的方式采集数据。
- 二进制文件直接启动,也支持容器化部署镜像。
- 支持多种语言的客户端,如Java、JMX、Python、Go、Ruby、.NET、Node.js等语言。
- 支持本地和第三方远程存储,单机性能强劲,可以处理上千target及每秒百万级时间序列。
- 高效的存储。平均一个采样数据占3.5B左右,共320万个时间序列,每30秒采样一次,如此持续运行60天,占用磁盘空间大约为228GB
- 出色的可视化功能。Prometheus拥有多种可视化的模式,比如内置表达式浏览器、Grafana集成和控制台模板语言。它还提供了HTTP查询接口,方便结合其他GUI组件或者脚本展示数据。
- 精确告警。Prometheus基于灵活的PromQL语句可以进行告警设置、预测等,另外它还提供了分组、抑制、静默等功能防止告警风暴
prometheus也有一定的局限性,比如:
- prometheus主要针对性能和可用性监控,不适用于针对日志(Log)、事件(Event)、调用链(Tracing)等的监控
- Prometheus关注的是近期发生的事情,而不是跟踪数周或数月的数据。因为大多数监控查询及告警都针对的是最近(通常不到一天)的数据。Prometheus认为最有用的数据是最近的数据,监控数据默认保留15天。
- 本地存储有限,存储大量的历史数据需要对接第三方远程存储
- Prometheus的监控数据并没有对单位进行定义。
- Prometheus对数据的统计无法做到100%准确,如订单、支付、计量计费等精确数据监控场景。
关于prometheus更详细的简介,参见文章: prometheus监控基础知识入门详解
二. prometheus的安装
2.1 实验环境
系统:CentOS 7.9
配置:4cpu、2g内存
安装软件:prometheus server
软件官网: https://prometheus.io/download/
2.2 安装前准备
- 关于prometheus的时间问题
之前Prometheus 为避免时区混乱,在所有组件中专门使用 Unix Time 和 Utc 进行显示。不支持在配置文件中设置时区,也不能读取本机 /etc/timezone 时区。
其实这个限制是不影响使用的:
如果做可视化,Grafana是可以做时区转换的。
如果是调接口,拿到了数据中的时间戳,你想怎么处理都可以
而且从2.1.6 开始新版 Web UI已经引入了Local Timezone 的选项。如果觉得不是本地时间不舒服就可以修改此处,让时间同步为本地时间。
- 避免时间不同步导致的数据读取问题
在prometheus使用过程中,容易发生时间不同步导致数据不读取或者主控菜单栏下面有一串错误提示,显得格外刺眼。
为此我们可以提前设置时间同步
1. 查看时区
查看时区是否正确
# timedatectl status
Local time: Fri 2022-12-30 21:15:08 CST
Universal time: Fri 2022-12-30 13:15:08 UTC
RTC time: Fri 2022-12-30 13:15:10
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
#或
# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Nov 3 15:46 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
2. 设置时区
# timedatectl set-timezone Asia/Shanghai
#或
# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
代码注释:
-f:强制删除文件和目录,在rm命令中加上-f可以强制删除文件或目录。
-s:对源文件建立符号链接(软连接)。
3. 时间同步
- 安装ntpdate
# yum install -y ntpdate
- 添加定时任务
# crontab -e
5 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com >/dev/null & #设置每5分钟同步一次时间
#查看定时任务
# crontab -l
5 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com >/dev/null &
- 常用的NTP服务器
中国国家授时中心:210.72.145.44
NTP服务器(上海) :ntp.api.bz
美国: time.nist.gov
复旦: ntp.fudan.edu.cn
微软公司授时主机(美国) :time.windows.com
北京邮电大学 : s1a.time.edu.cn
清华大学 : s1b.time.edu.cn
北京大学 : s1c.time.edu.cn
阿里云:time1.aliyun.com
2.3 开始安装prometheus
2.3.1 下载并解压prometheus server
官方下载地址: https://prometheus.io/download/
从官方或者github下载prometheus页面,选择对应系统的版本进行下载。
注意:官方的下载页面只显示最新版的prometheus,而github可以找到最新和以前的版本的prometheus。
2.3.2 安装过程
#创建存放prometheus的文件夹
# mkdir -p /apps
#进入文件夹
# cd /apps
#下载prometheus最新的LTS版本
# wget https://github.com/prometheus/prometheus/releases/download/v2.37.5/prometheus-2.37.5.linux-amd64.tar.gz
#解压prometheus
# tar xvf prometheus-2.37.5.linux-amd64.tar.gz
#给prometheus做软连接
# ln -sv /apps/prometheus-2.37.5.linux-amd64 /apps/prometheus
‘/apps/prometheus’ -> ‘/apps/prometheus-2.37.5.linux-amd64’
代码注释:
-p:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
-sv:
- -s:创建符号链接(软链接)。
- -v:输出每个链接文件的名称。
2.3.3 启动并查看端口
1. 前台启动prometheus Server
# cd /apps/prometheus
# ls
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool
# ./prometheus
如图表示启动成功:
2. 查看prometheus端口和进程
在终端打开新的窗口,查看prometheus的端口和进程。
# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 128 [::]:9090 [::]:*
LISTEN 0 128 [::]:22 [::]:*
# ps -ef | grep prometheus
root 1663 1305 0 22:09 pts/0 00:00:00 ./prometheus
root 1687 1377 0 22:12 pts/1 00:00:00 grep --color=auto prometheus
代码解释:
解释:
-tnl:
- -t:仅显示TCP套接字。
- -n:不解析服务名称。
- -l:显示监听状态的套接字。
-ef: - -e:显示所有的程序。
- -f:显示UID,PPIP,C与STIME栏位。
2.3.4 打开浏览器查看图形界面
浏览器访问: ip地址:9090
总结
本文主要介绍了prometheus的特点,以及promethues的安装入门,后续我们会基于此环境来学习。
在云原生的道路上,一起加油。
记得一键三连,鼓励下作者哦,我是沐风晓月,在月亮初升的地方开始一天的学习。