考虑从Munin迁移到Prometheus ⑤ 〜 迁移评估 第二部分 〜

目前为止,已经基本完成了对服务器资源、Nginx和phpfpm的监控。在这里,我们将设置各种警报邮件。

建立规则

以下是可供选择的种类:
– cpu.yml
– disk.yml
– memory.yml
– nginx.yml
– php-fpm.yml
– system.yml(包括实例宕机和负载平均)

我只以经常查看的部分作为警报对象。

警報邮件的样本

我并没有检查所有的邮件通知设置。
从一开始我就是摸索着进行的,所以可能会有些错误。

中央处理器


- name: cpu_check
  rules:
  - alert: cpu_used_warn
    # CPU 使用率が 80% を超えた時を条件にしています
    expr: 100 * (1 - avg(rate(node_cpu{mode='idle'}[5m])) BY (instance)) > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "cpu used over 80%"
      description: "CPU使用率が80%を超えて5分経過してます"
  - alert: cpu_used_err
    # CPU 使用率が 90% を超えた時を条件にしています
    expr: 100 * (1 - avg(rate(node_cpu{mode='idle'}[5m])) BY (instance)) > 90
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "cpu used over 90%"
      description: "CPU使用率が90%を超えて5分経過してます"
スクリーンショット 2018-05-02 18.19.18.png

硬盘

我本来想用sum来设定阈值,而不是固定的「/」,但是没能成功。


groups:
- name: disk_check
  rules:
  - alert: disk_space_warn
    expr: node_filesystem_avail{mountpoint='/', device!~'rootfs'} / node_filesystem_size * 100 < 30
    for: 5m
    labels:
      severity: warnings
    annotations:
      summary: "running out of hard drive space"
      description: "ディスクスペースが70%をきってから5分経過してます"
  - alert: disk_space_warn
    expr: node_filesystem_avail{mountpoint='/', device!~'rootfs'} / node_filesystem_size * 100 < 20
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "running out of hard drive space"
      description: "ディスクスペースが80%をきってから5分経過してます"

记忆


groups:
- name: memory_check
  rules:
  - alert: memory_warn
    expr: 100 * ((node_memory_MemFree + node_memory_Active_file + node_memory_Inactive_file)/node_memory_MemTotal) < 30
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "memory is getting low"
      description: "メモリ空き容量が30%以下になって5分経過してます"
  - alert: memory_critical
    expr: 100 * ((node_memory_MemFree + node_memory_Active_file + node_memory_Inactive_file)/node_memory_MemTotal) < 20
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "memory is getting low"
      description: "メモリ空き容量が20%以下になって5分経過してます"

nginx – nginx

我设定了一个以活动连接数为阈值的监控,并且使用了{$labels.value}来显示数值。


groups:
- name: nginx_check
  rules:
  - alert: status
    expr: nginx_up == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "nginx down"
      description: "nginxが停止してから5分が経過してます"
  - alert: active_connections_warn
    expr: nginx_connections_current{state="active"} > 700
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "active connection over 700"
      description: "nginxでアクティブなコネクションが700を超えて5分経過してます 値={{ $labels.value }}"
  - alert: active_connections_critical
    expr: nginx_connections_current{state="active"} > 900
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "active connection over 900"
      description: "nginxでアクティブなコネクションが900を超えて5分経過してます 値={{ $labels.value }}"

PHP-FPM

我把它做得与nginx相似。


groups:
- name: phpfpm_check
  rules:
  - alert: process_count_warn
    expr: phpfpm_active_max_processes > 700
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: " process over 700"
      description: "phpfpmのプロセスが700を超えて5分経過してます 値={{ $labels.value }}"
  - alert: process_count_critical
    expr: phpfpm_active_max_processes > 900
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "process over 900"
      description: "phpfpmのプロセスが900を超えて5分経過してます 値={{ $labels.value }}"

系统

虽然只是实例下降,但希望借助“node_load1”等加载函数来处理负载平衡。


groups:
- name: system_check
  rules:
  # alert: アラート名
  - alert: InstanceDown
    # expr: alert push の閾値
    expr: up == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Instance down"
      description: "停止してから5分が経過してます"

总结

如前所述,這些並不是全部檢查過的。這只是作為樣本進行確認,如果打算實際使用監控工具,則需要進一步驗證並設定。

经过一番试用后,我认为可以考虑从munin迁移到grafana。
使用grafana让人很愉快,而且对于警报控制似乎确实很强大。
不过,alertmanager的warning和critical的汇总处理不够完善,
导致两者都一起通知,所以需要进一步确认这个问题。

广告
将在 10 秒后关闭
bannerAds