Prometheus架构介绍
在学习Prometheus之前我们需要清晰的掌握其架构,Prometheus是由多个组件组成的的监控系统,主要有:Prometheus Server、Alertmanager、Pushgateway组成,这三个组件均为独立的应用服务,独立部署和运行,其中Prometheus Server中内置了Prometheus web UI。
Prometheus Server:
Promethedus Server是核心组件,负责数据的获取、存储、查询。Prometheus通过Pull的方式定期的从Jobs/Exporters中获取数据,并保存在内置的TSDB中;内置的Prometheus web UI可以让用户通过PromQL的方式进行数据的检索。
Exporters:
Exporters也是一个独立的组件,有官方提供的Exporters也有社区贡献的Exportes,它将监控采集的数据通过HTTP的方式暴露给Prometheus Server,Server定期获取数据。例如有一个Exporters叫做Node Exporter,它安装在受采集的主机上,为Server提供数据,有点类似于Zabbix监控系统中的Zabbix Agent。
Prometheus web UI:
Prometheus web UI是Server启动后内置的一个Web界面,通过该Web界面我们可以进行数据查询工作,不包含设置的相关功能。
PromQL:
PromQL是Prometheus内置的自定义的查询语言,提供对Prometheus Server中的TSDB这个时间序列数据库进行数据查询,支持数据聚合和一些逻辑运算,是一个相对简单的查询语言,而且PromQL也提供了一些内置函数,帮助我们进行数据处理。
Alertmanager:
Alertmanager是Promethedus的告警管理组件,它支持基于PromQL来创建告警规则,类似于Zabbix中的告警表达式,对获取到的数据进行计算和比较,如果满足PromQL定义的规则条件,就会产生报警。
Pushgateway:
Pushgateway可以理解为数据的一个中转站,例如当Prometheus Server不能直接和Exporters进行通信的场景下。
- prometheus安装部署
[root@linux-node1 ~]# cd /usr/local/src [root@linux-node1 src]# wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz #也可以使用国内镜像 [root@linux-node1 src]# wget https://mirror.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/2.28.1%20_%202021-07-01/prometheus-2.28.1.linux-amd64.tar.gz [root@linux-node1 src]# tar zxf prometheus-2.28.1.linux-amd64.tar.gz [root@linux-node1 src]# mv prometheus-2.28.1.linux-amd64 /usr/local/ [root@linux-node1 src]# ln -s /usr/local/prometheus-2.28.1.linux-amd64/ /usr/local/prometheus
[root@linux-node1 ~]# cd /usr/local/prometheus
[root@linux-node1 prometheus]# ./prometheus
##放置后台启动[root@linux-node1 ~]# groupadd prometheus [root@linux-node1 ~]# useradd -g prometheus -d /var/lib/prometheus -s /sbin/nologin prometheus [root@linux-node1 ~]# 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 Restart=on-failure [Install] WantedBy=multi-user.target
[root@linux-node1 ~]# systemctl enable prometheus.service
##安装grafana可视化服务[root@linux-node1 ~]# vim /etc/yum.repos.d/grafana.repo [grafana] name=grafana baseurl=https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm repo_gpgcheck=0 enabled=1 gpgcheck=0 [root@linux-node1 ~]# yum install -y grafana
[root@linux-node1 ~]# vim /etc/grafana/grafana.ini [security] admin_user = admin admin_password = 123456.
[root@linux-node1 ~]# systemctl enable grafana.service
[root@linux-node1 ~]# systemctl start granafa.service
##使用docker容器跑prometheus server端
[root@linux-node1 ~]# docker pull prom/promtheus
[root@linux-node1 ~]# docker run -d --name prometheus -p 9090:9090 -v /server/src/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
##需要增删监控节点修改/server/src/prometheus/prometheus.yml文件
##使用docker容器跑granafa
root@linux-node1 ~]# docker pull grafana/granafa
root@linux-node1 ~]# docker run -d --name granafa -p 3000:3000 grafana/granafa##访问http://ip:3000登上granafa,增加prometheus数据源,设置dashboard,import JSON文件。
##被监控服务器用docker容器跑node-exporter[root@linux-node1 ~]# docker pull prom/node-exporter
[root@linux-node1 ~]# docker run -d --name node-epxorter -p 9100:9100 prom/exporter
http://172.16.20.59:9090 访问prometheus
http://172.16.20.59:3000 访问granafa
http://172.16.20.60:9100 访问监控节点node-exporter