- 监控内容

- prometheus与zabbix对比

- Prometheus特点:
- 多维度数据模型:由度量名称和键值对标识的时间序列数据
- PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
- 不依赖分布式存储,单个服务器节点可直接工作
- 基于HTTP的pull方式采集时间序列数据
- 推送时间序列数据通过PushGateway组件支持
- 通过服务发现或静态配置发现目标
- 多种图形模式及仪表盘支持(grafana)
- Prometheus组成与架构

Prometheus Server:收集指标和存储时间序列数据,并提供查询接口
ClientLibrary:客户端库
Push Gateway:短期存储指标数据,主要用于临时性的任务
Exporters:采集已有的第三方服务监控指标并暴露metrics
Alertmanager:告警
Web UI:简单的Web控制台 - 数据模型
- Prometheus将所有数据存储为时间序列;具有相同度量名称以及标签属于同一个指标。
- 每个时间序列都由
度量标准名称和一组键值对(标签)作为唯一标识。 - 时间序列格式:
<metric name>{<label name>=<label value>,...)}
饭粒:api_http_requests_total{method=“POST”, handle="/messages"}
- 指标类型
- counter:递增的计数器
- Gauge:可以任意变化的数值
- Histogram:对一段时间范围内数据进行采样,并对所有数值求和与同级数量
- Summary:与Histogram类似

- 实例:可以抓取的目标称为实例(instances)
- 作业:具有相同目标的实例集合称为作业(Job)
scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node' static_configs: - targets: ['192.168.1.10:9090']
部署Prometheus
- 安装
- 二进制
下载 解压后执行同名可执行文件即可(注意:2.18.1不可用)
进入解压目录执行./prometheus --config.file=prometheus.yml - docker
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
在浏览器访问 http://192.168.33.7:9090

- 二进制
- 使用systemd管理Prometheus服务(二进制部署适用)
# vim /usr/lib/systemd/system/prometheus.service [Unit] Description=prometheus.io [Service] Restart=on-failure ExecStart=/usr/local/src/prometheus-2.18.0.linux-amd64/prometheus --config.file=/usr/local/src/prometheus-2.18.0.linux-amd64/prometheus.yml [Install] WantedBy=multi-user.target # systemctl daemon-reload # systemctl start prometheus # ps -ef
- 配置文件 官文
- 检查配置文件是否有问题
./promtool check config [配置文件]
- 基于文件的服务发现
- 添加本机监控
- 将默认配置文件中
static_configs两行配置注释 - 同级加上以下配置
file_sd_configs: - files: ['/usr/local/src/prometheus-2.18.0.linux-amd64/sd_config/local.yml'] refresh_interval: 5s - 创建服务发现目录
mkdir /usr/local/src/prometheus-2.18.0.linux-amd64/sd_config - 重启prometheus服务
systemctl restart prometheus - 添加服务发现配置文件
在web端查看:# vim sd_config/local.yml - targets: ['localhost:9090'] labels: idc: sz

- 添加其他服务器节点监控(在上面的基础下操作)
- 在需要被监控的node节点下载node_exporter并解压 官文
- 配置systemd管理,启动
# /usr/lib/systemd/system/node_exporter.service [Unit] Description=node_exporter [Service] Restart=on-failure ExecStart=/usr/local/src/node_exporter-1.0.0.linux-amd64/node_exporter [Install] WantedBy=multi-user.target # systemctl daemon-reload # systemctl start node_exporter # curl 192.168.33.6:9100/metrics - 服务端:配置文件中加入
- job_name: 'node' file_sd_configs: - files: ['/usr/local/src/prometheus-2.18.0.linux-amd64/sd_config/server_*.yml'] refresh_interval: 5s - 重启prometheus服务
systemctl restart prometheus - 添加服务发现配置文件
在web端查看:# vim sd_config/server_node.yml - targets: ['192.168.33.6:9100', '192.168.33.9:9100']

- 监控资源消耗情况
- cpu使用率:
100 - irate(node_cpu_seconds_total{instance="192.168.33.6:9100", mode="idle", job="node"}[5m]) * 100

- 内存使用率:
100 - (node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100

- 根分区剩余空间:
node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs" } / node_filesystem_size_bytes{mountpoint="/",fstype=~"ext4|xfs" } * 100

- cpu使用率:
- 监控服务运行状态
- 修改node_exporter.service启动脚本,写入需要监控的服务(可以使用正则匹配),重启
# vim /usr/lib/systemd/system/node_exporter.service ... ExecStart=/usr/local/src/node_exporter-1.0.0.linux-amd64/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(docker|etcd).service ..

本文详细介绍了如何部署Prometheus和Grafana监控系统,包括Prometheus的特性、组件、数据模型以及监控告警Alertmanager。通过Prometheus监控K8s集群,使用Grafana进行数据图形化展示,还涵盖了K8s资源监控和告警配置的实践。
最低0.47元/天 解锁文章
2197

被折叠的 条评论
为什么被折叠?



