写点什么

极客时间运维进阶训练营第七周作业

作者:好吃不贵
  • 2022-12-08
    浙江
  • 本文字数:2063 字

    阅读完需:约 7 分钟

1.了解 prometheus 各组件的功能,熟悉 prometheus 的数据采集流程

Prometheus 主要用于监控,通过 pull 的方式收集数据。核心是 Prometheus server,处理数据。

架构图如图所示,英文介绍如下:

总结:

  1. Server: 接收外部 http 请求,收集、存储、查询指标数据。里面有 TSDB,是时序数据库,各节点要同步时间。

  2. Targets: 静态目标,执行指标数据抓取。

  3. service discovery: 动态服务发现,执行指标数据抓取。

  4. alerting:告警用。

  5. push gateway:数据收集代理服务器。临时数据放到这里,Prometheus 会来 pull 数据。

  6. data visualization and export: 数据可视化与数据导出。一般用 grafana 实现,虽然 Prometheus 本身也有 web UI,但是画的图不如 grafana 好看。

CNCF 的景观图,目前有很多工具可以使用:https://landscape.cncf.io/images/landscape.pdf

优点是:

  1. key-value 格式。可以添加额外的 label,用于筛选。zabbix 基于普通的 json。

  2. 不需要 mysql,本身带了 TSDB。对监控数据而言,是按时间排列的,性能更好。

  3. 支持第三方 dashboard,比如 grafana。

  4. 可以本地保存,也可以远端保存。

  5. 支持服务自动化发现。目标可以是 redis,kafaka,container,通过 k8s 的 API 来自动发现。

  6. 强大的数据查询语句 promQL。数据可以算术运算。

  7. 每个采样点就 3.5bytes,可以处理数百万级别的 metrics 指标数据。

  8. 支持第三方 exporter。

类似的工具还有 zabbix,基于 LAMP(linux, apache, mysql, php),以前用的多。

2.基于 docker 或二进制部署 prometheus server

安装代码见 GitHub

https://github.com/jianywu/cloud_learn/blob/main/prometheus/prometheus/onekey-install.sh

docker 部署:

https://gitee.com/jiege-gitee/prometheus-docker-compose

二进制部署:

https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/LatestRelease/prometheus-2.40.5.linux-amd64.tar.gz

部署好,ip:9100/metrics 就可以看到数据了。

3.基于 docker 或二进制部署 node-exporter,并通过 prometheus 收集 node-exporter 指标数据

安装代码见 GitHub

https://github.com/jianywu/cloud_learn/blob/main/prometheus/node_exporter/node_exporter_install.sh

docker 方式部署:

docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" quay.io/prometheus/node-exporter --path.rootfs /host

二进制方式部署:


这里 scrape_interval 写为 5s,和 global 的配置不同,就按这个独立的配置来实现。

prometheus.yml 里的 targets 加上端口即可。node-exporter 的端口是 9100。多台机器都用引号引起来,中间用逗号隔开。

点击 Prometheus 菜单 Status 的 Targets,就可以看到当前配置的 target 了,包括当前的 Prometheus,以及 node-exporter,还有 pushgateway。

4.安装 grafana 并添加 prometheus 数据源,导入模板可以图形显示指标数据

安装 grafana

https://github.com/jianywu/cloud_learn/blob/main/prometheus/grafana/onekey-install.sh

配置 Prometheus 数据源

Configuration-->data source-->add datasource-->prometheus

配置 Prometheus 的 IP 和端口,然后点 Save & exit。

显示“Data source is working”表示工作正常。

导入模板看数据

Dashboards-->import-->模板 id 11074/8919

导入后,就可以看到数据了。

5.掌握 prometheus 的 promQL 语句的简单使用

有四种类型,Range Vector/Instance Vector 较常用。

点菜单 Graph,就会出现 PromQL 的界面,Execute 就会执行表达式。

点 Execute 前的地球图标,可以看到支持哪些字段。

按 tab 键可以自动补全。

排序可以使用 sort(node_network_receive_bytes_total)/1024/1024/1024 排序,看哪个网卡收法包最多。

count(node_os_version)可以知道 Prometheus 监控的有几个 node。

比如这里有 3 个 node。

6.部署 prometheus 联邦集群并实现指标数据收集

代码见链接:https://github.com/jianywu/cloud_learn/tree/main/prometheus/federal

federal 的配置:

连接了 2 个 Prometheus server。

idc1 的配置:

idc2 的配置:

Grafana 查看 Prometheus 的数据:

扩展 1.基于 pushgateway 实现指标数据收集

安装脚本见 GitHub

https://github.com/jianywu/cloud_learn/blob/main/prometheus/pushgateway/pushgateway-onekey-install.sh

pushgateway 主要用于自定义监控。流程是 App 把数据发到 pushgateway。把 pushgateway 加到 Prometheus 后,Prometheus 会来拉取数据。

安装 pushgateway,确认 ss -tnlp,看到 9091 端口开放,就说明 pushgateway 起来了。

把 pushgateway 关联到 Prometheus

增加配置到 Prometheus,然后 reload Prometheus。

curl -X POST http://124.223.157.166:9090/-/reload

推送数据到 pushgateway

echo "mytest_metric 2088" | curl --data-binary @- http://124.223.157.166:9091/metrics/job/mytest_job

push 后,可以看到 key 是 mytest_job,value 是 2088。


用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
极客时间运维进阶训练营第七周作业_好吃不贵_InfoQ写作社区