1、简介
Prometheus是一个开放性的监控解决方案,其灵感来自于Google的Borgmon,于2016年5月继k8s后加入CNCF基金会。Prometheus具备易于管理,高效,可扩展,易集成的特点。
详细介绍见官网:https://prometheus.io/docs/introduction/overview/
2、Prometheus架构
Prometheus通过抓取或拉取应用程序中暴露的时间序列数据来工作。时间序列数据通常由应用程序本身通过客户端库或称为exporter(导出器)的代理来作为HTTP端点暴露。目前已经存在很多exporter和客户端库,支持多种编程语言、框架和开源应用程序,如Apache Web服务器和MySQL数据库等。Prometheus还有一个推送网关(push gateway),可用于接收少量数据—例如,来自无法拉取的目标数据(如临时作业或者防火墙后面的目标)。关于Prometheus的具体架构如图2-1所示。
3、冗余和高可用性
冗余和高可用性侧重弹性而非数据持久性。Prometheus团队建议将Prometheus服务器部署到特定环境和团队,而不是仅部署一个单体Prometheus服务器。如果你确实要部署高可用HA模式,则可以使用两个或多个配置相同的Prometheus服务器来收集时间序列数据,并且所有生成的警报都由可消除重复警报的高可用Alertmanager集群来处理。Prometheus冗余架构如图所示。
4、功能
- 在业务层用作埋点系统Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其他语言也有第三方开源客户端)。我们可以通过客户端方面的对核心业务进行埋点。如下单流程、添加购物车流程。
- 在应用层用作应用监控系统一些主流应用可以通过官方或第三方的导出器,来对这些应用做核心指标的收集。如redis,mysql。
- 在系统层用作系统监控除了常用软件, prometheus也有相关系统层和网络层exporter,用以监控服务器或网络。
- 集成其他的监控prometheus还可以通过各种exporte,集成其他的监控系统,收集监控数据,如AWS CloudWatch,JMX,Pingdom等等。
5、环境准备
IP 地址 | 角色 |
---|---|
192.168.111.3 | Prometheus Server |
192.168.111.4 | node_exporter |
- 测试通过系统:CentOS Linux release 7.4.1708 (Core)
- Prometheus:2.4.2.linux-amd64
- Alertmanager:0.15.2.linux-amd64
- node_exporter:0.16.0.linux-amd64
6、部署 Prometheus Server
下载安装包
[root@jky-re1 ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.4.2/prometheus-2.4.2.linux-amd64.tar.gz
[root@jky-re1 ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.15.2/alertmanager-0.15.2.linux-amd64.tar.gz
[root@jky-re1 ~]# wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz
安装 Prometheus。
创建 prometheus 用户
[root@jky-re1 ~]# groupadd prometheus
[root@jky-re1 ~]# useradd -g prometheus -m -d /var/lib/prometheus -s /sbin/nologin prometheus
解压安装包
[root@jky-re1 ~]# tar xf prometheus-2.4.2.linux-amd64.tar.gz -C /usr/local/
[root@jky-re1 ~]# cd /usr/local/
[root@jky-re1 local]# mv prometheus-2.4.2.linux-amd64/ prometheus
创建启动脚本
[root@jky-re1 ~]# vim /usr/lib/systemd/system/prometheus.service
添加如下内容:
[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/prometheus –config.file=/usr/local/prometheus/prometheus.yml –storage.tsdb.path=/var/lib/prometheus –storage.tsdb.retention=15d –log.level=info
Restart=on-failure
[Install]
WantedBy=multi-user.target
安装 node_exporter
在
Prometheus 节点
和另一台节点
上分别安装 node_exporter
[root@jky-re1 ~]# tar xf node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/
[root@jky-re1 ~]# cd /usr/local/
[root@jky-re1 local]# mv node_exporter-0.16.0.linux-amd64/ node_exporter
[root@jky-re1 local]# chown -R prometheus.prometheus node_exporter/
创建 node_exporter 启动脚本
[root@jky-re1 local]# vim /usr/lib/systemd/system/node_exporter.service
添加如下内容:
[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
注意:node_exporter 的运行用户也是 prometheus 用户需要在每台节点上都创建该用户。
启动 node_exporter 服务
[root@jky-re1 ~]# systemctl enable node_exporter.service
[root@jky-re1 ~]# systemctl start node_exporter.service
[root@jky-re1 ~]# systemctl status node_exporter.service
[root@jky-re1 ~]# ss -tnl | grep 9100
7、配置 Prometheus 添加监控目标
[root@jky-re1 ~]# cd /usr/local/prometheus
[root@jky-re1 prometheus]# vim prometheus.yml
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′,’localhost:9100’] # 对本机node_exporter 监控
# 新添加的对其它node节点抓取数据
– job_name: ‘111.4’
#重写了全局抓取间隔时间,由15秒重写成5秒。
scrape_interval: 5s
static_configs:
– targets: [‘192.168.111.4:9100’]
启动 Prometheus 服务
[root@jky-re1 local]# chown -R prometheus.prometheus prometheus/
[root@jky-re1 local]# systemctl enable prometheus.service
[root@jky-re1 local]# systemctl start prometheus.service
[root@jky-re1 local]# systemctl status prometheus.service
注意
:要留意启动之前的目录权限更改,否则可能会在启动的时候报错Feb 11 16:08:41 localhost alertmanager: level=error ts=2019-02-11T08:08:41.419390133Z caller=main.go:179 msg="Unable to create data directory" err="mkdir data/: permission denied"
。
8、访问 Prometheus WEB 查看我们定义的目标主机
http://192.168.111.3:9090/targets
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/149763.html