学习笔记——极客时间《运维监控系统实战笔记》 04|如何快速搭建Prometheus系统?
监控通用架构
prometheus架构图
部署prometheus
下载prometheus:prometheus.io/download/
下载后解压缩启动即可。
常用启动参数:
--config.file=/opt/prometheus/prometheus.yml
指定 Prometheus 的配置文件路径
--storage.tsdb.path=/opt/prometheus/data
指定 Prometheus 时序数据的硬盘存储路径
--web.enable-lifecycle
启用生命周期管理相关的 API,比如调用 /-/reload 接口就需要启用该项
--enable-feature=remote-write-receiver
启用 remote write 接收数据的接口,启用该项之后,categraf、grafana-agent 等 agent 就可以通过 /api/v1/write 接口推送数据给 Prometheus
--query.lookback-delta=2m
即时查询在查询当前最新值的时候,只要发现这个参数指定的时间段内有数据,就取最新的那个点返回,这个时间段内没数据,就不返回了
--web.enable-admin-api
启用管理性 API,比如删除时间序列数据的 /api/v1/admin/tsdb/delete_series 接口
启动后页面效果如下:
这里,prometheus自己会暴露一个/metrics接口,这样prometheus就可以自己采集自己的指标
部署node exporter
这里以node exporter为例进行部署
下载链接:prometheus.io/download/#n…
启动node exporter也是很简单:
nohup ./node_exporter &> output.log &
这样,node exporter就会暴露一个metrics接口:
curl -s localhost:9100/metrics
最后,把exporter的metrics地址配置到prometheus即可:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
配置告警
prometheus.yml 中可以指定告警规则配置文件:
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
具体的告警规则也是很简单,举例如下:
groups:
- name: node_exporter
rules:
- alert: HostDown
expr: up{job="node_exporter"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: Host down {{ $labels.instance }}
- alert: MemUtil
expr: 100 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 > 1
for: 1m
labels:
severity: warn
annotations:
summary: Mem usage larger than 1%, instance:{{ $labels.instance }}
当然,最后记得让prometheus重新加载配置文件,可以使用kill -1 (kill -HUP),也可以使用prometheus的内置接口reload
部署Alertmanager
Alertmanager也是prometheus系列中的产品,在下载prometheus的时候应该也一起下载下来了,直接启动即可
alertmanager可以配置告警对象,举例如下:
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://127.0.0.1:5001/'
- name: 'email'
email_configs:
- to: 'ulricqin@163.com'
当然,并不是只有alertmanager这一个告警途径,还能在UI页面中配置告警
部署Grafana
Grafana 是一个数据可视化工具,有丰富的图表类型,视觉效果很棒,插件式架构,支持各种数据源,是开源监控数据可视化的标杆之作。Grafana 可以直接对接 Prometheus,大部分使用 Prometheus 的用户,也都会使用 Grafana
下载地址:grafana.com/grafana/dow…
下载之后解压缩,执行 ./bin/grafana-server 即可一键启动
Grafana 社区有很多人制作了各式各样的大盘,以 JSON 格式上传保存在了 grafana.com,我们想要某个 Dashboard,可以先去这个网站搜索一下(grafana.com/grafana/das… ),看看是否有人分享过,特别方便。因为我们已经部署了 Node-Exporter,那这里就可以直接导入 Node-Exporter 的大盘,大盘 ID 是 1860,写到图中对应的位置,点击 Load,然后选择数据源点击 Import 即可。
最终效果如下: