Prometheus、Grafana、cAdvisor的介绍、安装和使用
Prometheus是一款开源的系统和服务监控工具,它主要用于记录和查询系统和应用程序的指标数据,例如CPU使用率、内存使用率、网络流量和磁盘IO等。它通过HTTP协议从被监控的目标服务器上拉取数据,并将其存储在时间序列数据库中,用户可以使用PromQL查询语言来查询和分析这些度量数据,并根据结果生成警报和图表供用户展示。Grafana是一个开源的数据可视化和监控平台,可以将各种数据源(如Prom
文章共3,125字 · 阅读需要大约11分钟
一键AI生成摘要,助你高效阅读
问答
·
目录
Prometheus介绍
Prometheus是一款开源的系统和服务监控工具,它主要用于记录和查询系统和应用程序的指标数据,例如CPU使用率、内存使用率、网络流量和磁盘IO
等。它通过HTTP协议从被监控的目标服务器上拉取数据,并将其存储在时间序列数据库中,用户可以使用PromQL查询语言来查询和分析这些度量数据,并根据结果生成警报和图表供用户展示。
Prometheus架构图
这张图是从官网提供架构图,其中有包含组成Prometheus的一些组件,包括:
Prometheus server
:它是整个监控系统的核心组件,它负责收集、存储和查询监控数据。它通过HTTP协议暴露API,允许其他组件和应用程序查询和获取监控数据。exporters
:exporters用于从不同的系统和服务中收集监控数据的组件。Prometheus支持多种exporter,包括Node Exporter
(用于收集主机级别的数据)、Blackbox Exporter
(用于监控网络服务)等。Pushgateway
:Pushgateway是一个用于临时存储metrics数据的组件,可以让非常短暂的作业(比如批处理任务)向Prometheus推送metrics数据。Pushgateway将推送的metrics数据存储在内存中,Prometheus server则定期从Pushgateway中拉取数据。Alertmanager
:Alertmanager是一个用于管理和发送警报的组件。它可以根据定义的规则和模板生成警报,并将其发送到不同的通知渠道,如电子邮件、短信等。Grafana
:Grafana是一个可视化监控工具,可以将Prometheus的metrics数据展示为图表、仪表盘等形式。Grafana可以通过Prometheus提供的API接口获取metrics数据。Targets
:它是Prometheus监控的对象,比如服务器、容器、应用等。Prometheus通过定期拉取Targets的metrics数据来进行监控。
Prometheus的下载安装
使用容器安装
- 用容器安装简单方便,如下所示:
docker run -d -p 9090:9090 --name shengxia-prom1 prom/prometheus
- 浏览器访问
使用源码安装
- 进入官网下载源码安装包下载
- 将源码安装包解压
[root@xia prometheus]# tar xzvf prometheus-2.43.0.linux-amd64.tar.gz
[root@xia prometheus]# ls
prometheus prometheus-2.43.0.linux-amd64.tar.gz
- 进入prometheus目录,修改PATH环境变量(
prometheus的目录为你自己所在的安装目录
)
[root@xia prometheus]# PATH=$PATH:/usr/local/bin:/lianxi/prometheus/prometheus/
# 让PATH变量开机生效,将上面那一条命令加在/root/.bashrc文件末尾
[root@xia prometheus]# source /root/.bashrc
- 修改
prometheus.yml
配置文件,将获取指标数据的地址改为本机地址
[root@xia prometheus]# ls
console_libraries data NOTICE prometheus.yml
consoles LICENSE prometheus promtool
[root@xia 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: ["192.168.40.137:9090"]
- 在当前目录启动
[root@xia prometheus]# ./prometheus --config.file=prometheus.yml
- 为了方便,将prometheus注册为服务
[root@xia system]# pwd
/usr/lib/systemd/system
[root@xia system]# cat prometheus.service
[Unit]
Description=prometheus
[Service]
ExecStart=/lianxi/prometheus/prometheus/prometheus --config.file=/lianxi/prometheus/prometheus/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
使用Prometheus监控其它主机的数据
在使用Prometheus获取其它主机的指标数据时,需要在该主机安装node exporter这个软件包下载。
- 解压文件
[root@nfs exporter]# node_exporter-1.5.0.linux-amd64.tar.gz
[root@nfs exporter]# ls
node_exporter-1.5.0.linux-amd64 node_exporter-1.5.0.linux-amd64.tar.gz
- 复制node_exporter下的文件到指定的目录
[root@nfs exporter]# cp node_exporter-1.5.0.linux-amd64/* /node_exporter
- 在
/root/.bashrc
文件下修改PATH环境变量
[root@nfs exporter]# PATH=/node_exporter/:$PATH
[root@nfs exporter]# source /root/.bashrc
- 在该主机下开启一个终端启动
node_exporter
[root@nfs node_exporter]# ./node_exporter --web.listen-address 192.168.40.138:8899
- 启动访问(如果访问不了,可能是防火墙的原因,需要关闭防火墙
service firewalld stop
)
- 在装有Prometheus的主机上添加node服务器节点,抓取指标数据存储到时序数据库里。
# 修改prometheus.yml文件,添加node节点
[root@xia 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: ["192.168.40.137:9090"]
- job_name: node
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["192.168.40.138:8899"]
- 在当前目录重新启动,就可以查看另一个node服务器的指标数据了。
[root@xia prometheus]# ./prometheus --config.file=prometheus.yml
使用Grafana将指标数据进行可视化出图展示
概述
Grafana是一个开源的数据可视化和监控平台,可以将各种数据源(如Prometheus、InfluxDB、Elasticsearch等)的数据进行可视化展示和监控。
安装步骤
- 安装Grafana:从Grafana官网下载Grafana软件包,并按照官方文档进行安装。下载
[root@xia grafana]# yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-9.5.1-1.x86_64.rpm
- 启动Grafana,默认端口号是3000,
用户名和密码都是admin
[root@xia grafana]# service grafana-server restart
Restarting grafana-server (via systemctl): [ 确定 ]
3.浏览器访问
使用
- 配置数据源,以便从数据源中获取数据。Grafana支持多种数据源,如Prometheus、InfluxDB、Elasticsearch等,输入IP地址,保存就可以连接数据源成功。
- 创建仪表板:在Grafana中,创建多个仪表板,每个仪表板可以包含多个面板,同时也可以使用官方提供的grafana模板,只要知道该模板的ID即可。
比如输入ID为1860
的grafana模板,点击Load就可以加载它的JSON文件,如下图所示,选择数据源,导入,就可以查看节点服务器的数据指标了。
- 设置警报:除了监控和可视化数据外,Grafana还支持警报功能。可以设置警报规则,当某些指标达到特定阈值时,Grafana将发送警报通知。
- 共享和导出仪表板:在Grafana中,可以共享和导出仪表板。可以将仪表板共享给其他用户,或将仪表板导出为JSON格式,以便在其他Grafana实例中导入和使用。
使用Prometheus监控容器数据
cAdivisor
cAdvisor是一个容器监控工具,全称为Container Advisor,它可以监控容器的资源使用情况,包括CPU、内存、磁盘、网络等,是一个非常方便的容器监控工具,可以帮助用户实时监控容器的资源使用情况,及时发现问题并进行优化
安装使用
[root@xia grafana]# docker run -d -p 1111:8080 --name my-cAdvisor google/cadvisor
浏览器访问
Prometheus监控
- 新建
prometheus.yml
文件从cAdvisor中抓取指标数据,添加如下配置
[root@xia prom_docker]# vim prometheus.yml
scrape_configs:
- job_name: cadvisor
scrape_interval: 5s
static_configs:
- targets:
- cadvisor:8080
- 在该目录下新建
docker-compose.yml
,该配置指定哪些容器是我们安装的一部分,以及每个容器公开哪些端口、使用哪些卷等。
[root@xia prom_docker]# vim docker-compose.yml
version: '3.2'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
depends_on:
- cadvisor
cadvisor:
image: google/cadvisor:latest
container_name: cadvisor
ports:
- 8080:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
depends_on:
- redis
redis:
image: redis:latest
container_name: redis
ports:
- 6379:6379
- 启动容器
[root@xia prom_docker]# docker compose up -d
[+] Running 3/3
✔ Container redis Running 0.0s
✔ Container cadvisor Running 0.0s
✔ Container prometheus Started
- 查看运行的容器,也可以在浏览器查看
[root@xia prom_docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b87cb1f01bff prom/prometheus:latest "/bin/prometheus --c…" 7 days ago Up 38 seconds 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
777e8ff83ca8 google/cadvisor:latest "/usr/bin/cadvisor -…" 7 days ago Up 5 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cadvisor
e7db1396ec71 redis:latest "docker-entrypoint.s…" 7 days ago Up 5 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
- 使用Grafana显示所有容器指标数据,采用ID为
10566
的模板,可以显示所有容器,如下所示
更多推荐
已为社区贡献4条内容
所有评论(0)