21天学习打卡——Day1

323 阅读2分钟

学习笔记——极客时间《运维监控系统实战笔记》 04|如何快速搭建Prometheus系统?

监控通用架构

image.png

prometheus架构图

image.png

部署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 接口 

启动后页面效果如下:

image.png 这里,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 即可。
最终效果如下:

image.png