1. 什么是Prometheus?
Prometheus是一个开源系统监控和警报工具包,最初是在SoundCloud上构建的。自2012年成立以来,许多公司和组织都采用了Prometheus,并且该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司维护。为了强调这一点,并澄清项目的治理结构,Prometheus于2016年加入云原生计算基金会,成为继Kubernetes之后的第二个托管项目。 Prometheus 收集并将其指标存储为时间序列数据,即指标信息与记录它的时间戳一起存储,以及称为标签的可选键值对。
2. Prometheus的特点
多维度数据模型。 灵活的查询语言。 不依赖分布式存储,单个服务器节点是自主的。 通过基于HTTP的pull方式采集时序数据。 可以通过中间网关进行时序列数据推送。 通过服务发现或者静态配置来发现目标服务对象。 支持多种多样的图表和界面展示,比如Grafana等。
3. 架构图
说明:
prometheus 直接或通过pushgateway抓取数据。将数据存储在本地,并对这些数据运行规则,以便从现有数据聚合和记录新时间序列,或者生成警报。grafana等可用于可视化数据。
prometheus Server: 根据配置完成数据采集, 服务发现以及数据存储。 Push Gateway : 为应对部分push场景提供的插件,监控数据先推送到 Push Gateway 上,然后再由 Prometheus Server 端采集 pull 。用于存在时间较短,可能在 Prometheus 来 pull 之前就消失了的 jobs (若 Prometheus Server 采集间隔期间,Push Gateway 上的数据没有变化, Prometheus Server 将采集到2次相同的数据,仅时间戳不同) Exporters(探针): 是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。 Alertmanager: Prometheus server 主要负责根据基于PromQL的告警规则分析数据,如果满足PromQL定义的规则,则会产生一条告警,并发送告警信息到Alertmanager,Alertmanager则是根据配置处理告警信息并发送。常见的接收方式有:电子邮件,webhook 等。Alertmanager三种处理告警信息的方式:分组,抑制,静默。
Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。
Prometheus它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统。
4. prometheus server和Exporter_node安装和部署
这里以Linux系统为例:准备了两台机器(prometheus server)和(Exporter_node)
1.官网下载安装包,官网下载地址如下:
https://prometheus.io/download/
下载相应版本,安装到服务器上,官网提供的是二进制版,解压就能用,不需要编译.
[root@sc-prom ~]# mkdir /prom
[root@sc-prom ~]# cd /prom
[root@sc-prom prom]# ls
prometheus-2.34.0.linux-amd64.tar.gz
[root@sc-prom prom]# tar xf prometheus-2.34.0.linux-amd64.tar.gz
[root@sc-prom prom]# ls
prometheus-2.34.0.linux-amd64 prometheus-2.34.0.linux-amd64.tar.gz
[root@sc-prom prom]# mv prometheus-2.34.0.linux-amd64 prometheus
[root@sc-prom prom]# ls
prometheus prometheus-2.34.0.linux-amd64.tar.gz
[root@sc-prom prometheus]# PATH=/prom/prometheus:$PATH
[root@sc-prom prometheus]# vim /root/.bashrc
PATH=/prom/prometheus:$PATH #添加
[root@sc-prom prometheus]#nohup prometheus --config.file=prometheus.yml &
访问prometheus server
http://192.168.1.137:9090/
若访问不成功,或许是防火墙规则你要看一看。
2.官网下载node_exporter安装包,官网下载地址如下: https://prometheus.io/download/
下载node_exporter-1.4.0-rc.0.linux-amd64.tar.gz源码,上传到节点服务器上.
[root@jd-exporter ~]# mkdir /node_exporter
[root@jd-exporter ~]# cd /node_exporter
[root@jd-exporter node_exporter]# ls
node_exporter-1.4.0-rc.0.linux-amd64.tar.gz
[root@jd-exporter node_exporter]# tar xf node_exporter-1.4.0-rc.0.linux-amd64.tar.gz
[root@jd-exporter node_exporter]# ls
LICENSE node_exporter NOTICE
[root@jd-exporter ~]# PATH=/node_exporter/:$PATH
[root@jd-exporter ~]# vim /root/.bashrc
PATH=/node_exporter/:$PATH #添加
执行node exporter 代理程序(后台运行)
[root@jd-exporter node_exporter]#nohup node_exporter --web.listen-address 0.0.0.0:8090 &
访问node节点上的metrics
http://192.168.1.194:8090/metrics
若访问不成功,或许是防火墙规则你要看一看。
3.在prometheus服务器上添加抓取数据的配置,添加node节点服务器,将抓取的数据存储到时序数据库里。
配置prometheus.yml,修改内容如下图:
[root@jd-prom 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"
static_configs:
- targets: ["localhost:9090"]
#添加下面的配置采集node-jiangda服务器的metrics
- job_name: "node-jiangda"
static_configs:
- targets: ["192.168.1.194:8090"]
重启prometheus服务,需要先杀死原来启动的进程,然后再运行程序
因为我们是源码二进制安装,直接解压使用的,没有配套的prometheus服务
百度下,将源码二进制安装的prometheus,添加成一个service方式管理。
4.添加成一个service方式管理。
将源码二进制安装的prometheus,添加成一个service方式管理
[root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=prometheus
[Service]
ExecStart=/prom/prometheus/prometheus --config.file=/prom/prometheus/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
检验:
[root@jd-prom prometheus]# systemctl daemon-reload #让systemd加载prometheus的service文件
[root@jd-prom system]# service prometheus start
Redirecting to /bin/systemctl start prometheus.service
[root@jd-prom system]# ps aux|grep prom
root 5121 40.0 3.0 783588 56428 ? Ssl 14:52 0:00 /prom/prometheus/prometheus --config.file=/prom/prometheusprometheus.yml
root 5129 0.0 0.0 112824 988 pts/1 S+ 14:52 0:00 grep --color=auto prom
[root@jd-prom system]# service prometheus stop
Redirecting to /bin/systemctl stop prometheus.service
[root@jd-prom system]# ps aux|grep prom
root 5148 0.0 0.0 112824 988 pts/1 S+ 14:52 0:00 grep --color=auto prom
1.再次访问http://服务器IP:9090
2.再次点Status --》点Targets --》可以看到远程服务器
3.点击列表中的地址:http://192.168.1.194:8090/metrics,可以看到监控的所有指标:
5. Grafana的安装和部署
概述:美观、强大的可视化监控指标展示工具
grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。最好的参考资料就是官网(http://docs.grafana.org/)
1.去官网下载对应系统安装包,官网地址如下(这里以Linux系统为例):https://grafana.com/grafana/download
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.1.2-1.x86_64.rpm
2.上传安装包到linux服务器grafana-enterprise-8.3.3-1.x86_64.rpm
3.执行安装命令:yum install grafana-enterprise-8.3.3-1.x86_64.rpm
[root@jd-prom prometheus]# mkdir /grafana
[root@jd-prom prometheus]# cd /grafana/
[root@jd-prom grafana]# ls
上传
[root@jd-prom grafana]# ls
grafana-enterprise-9.1.2-1.x86_64.rpm
安装
[root@jd-prom grafana]# yum install grafana-enterprise-9.1.2-1.x86_64.rpm
4.启动命令:service grafana-server start
5.登录,在浏览器里登录
http://192.168.1.137:3000/
默认的用户名和密码是
用户名admin
密码admin
1.先配置prometheus的数据源
2.导入grafana的模板
https://grafana.com/grafana/dashboards
步骤:
1.需要知道哪些模板可以使用,可以去官方找,也可以百度
1-node-exporter-for-prometheus-dashboard-cn-v20200628_rev1.json
2.导入模板
6. 数据一览