服务器监控

java 应用监控

Prometheus 概述:查看官网描述即可

概览 |普罗 米修斯 (prometheus.io)

一:服务器节点监控node-exporter

Prometheus服务器:用于周期性抓取被监控组件的状态

node_exporter 是一个用于采集服务器CPU, 内存,网络,文件系统等主机级别的metrics数据的工具,它是Prometheus监控生态中的一个简单的监控物理机的组件。

  1. 为Prometheus提供主机级别的监控数据:node_exporter 能够提供包括CPU、内存、磁盘、网络等在内的主机级别的监控数据。

  2. 简化监控配置:在服务器上部署node_exporter后,你不需要在Prometheus配置文件中手动添加每一个服务器的监控指标,node_exporter会自动发现并采集这些数据。

  3. 提高系统可用性:通过监控系统的主要资源,你可以了解系统的运行状况,及早发现潜在的问题

 docker 安装node-exporter:

docker run --name node-exporter -d -p 9100:9100 prom/node-exporter:latest

 二:服务器监控Alertmanager

Alertmanager是一个告警管理工具,用于接收来自Prometheus等监控系统的告警,并对这些告警进行处理,可以通过电子邮件、短信、微信等方式通知给相关的接收人。

在服务器监控中,我们通常需要对Alertmanager进行监控,以确保它能正确地接收和处理告警。以下是一个使用Prometheus监控Alertmanager的配置示例

alertmanager.yml  其中prometheusalert,后面讲,此处url可以只暂时填自己的机器人链接即可

global:
  resolve_timeout: 5m
  smtp_from: '自己的邮箱账号@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '自己的邮箱账号@qq.com'
  smtp_auth_password: '自己的邮箱授权密码'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  receiver: 'default'
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 30m
  
receivers:
- name: 'default'
  email_configs:
  - to: '自己的邮箱账号@qq.com'
    send_resolved: true
  webhook_configs:
  - url: 'http://安装的prometheusalert的ip:8090/prometheusalert?type=fs&tpl=prometheus-fs&fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/自己的飞书token'
    send_resolved: true

inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

 docker 安装Alertmanager:

docker run -d  --name alertmanager  -p 9093:9093 -v /data/prometheus/alertmanager.yml:/etc/alertmanager/alertmanager.yml  prom/alertmanager:latest

启动成功登录页面如下:

 三:服务器监控Prometheus

在路径下:/data/prometheus/  下创建的文件

prometheus.yml

global:
  scrape_interval:     15s 
  evaluation_interval: 15s  
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration  消息告警通知工具
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 自己安装Alertmanager 的ip:9093

# 告警规则设置文件

rule_files:
  - "/usr/local/prometheus/rules/*.rules"

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
#rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"


scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['自己安装prometheus的ip:9090']
 

# 项目部件
  - job_name: 'node-exporter'
    scrape_interval: 5s
    file_sd_configs:
      - files:
          - '/usr/local/prometheus/groups/nodegroups/node.json'
  - job_name: 'zss-boot'
    scrape_interval: 5s
    metrics_path: '/actuator/prometheus'
    file_sd_configs:
      - files:
          - '/usr/local/prometheus/groups/nodegroups/zss-boot.json'

在路径: /data/prometheus/groups/ 下创建文件

node.json

[
    {
        "targets": [
            "安装node_export的ip:9100"
        ],
        "labels": {
            "instance": "vm-安装node_export的ip",
            "service": "node-service"
        }
    }
]

zss-boot.json

[
    {
        "targets": [
            "自己的启动项目的ip:8080"
        ],
        "labels": {
            "instance": "zss-boot",
            "service": "zss-boot-service"
        }
    }
]

在路径:/data/prometheus/rules/   创建报警规则文件

node-up.rules :部件停止发告警通知

groups:
- name: node-up
  rules:
  - alert: node-up
    expr: up{job="zss-boot"} == 0
    for: 15s
    labels:
      severity: 1
      team: node
    annotations:
      summary: "{{ $labels.instance }} 已停止运行超过 15s!"

memory.rules  这边的规则,可以去官网直接复制即可:

Awesome Prometheus alerts | Collection of alerting rules (samber.github.io)

groups:
- name: server-status
  rules:
  - alert: HostOutOfMemory
    expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 2m
    labels:
       severity: warning
    annotations:
       summary: Host out of memory (instance {{ $labels.instance }})
       description: "Node memory is filling up (< 10% left)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  - alert: HostOutOfDiskSpace
    expr: ((node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 30 and ON (instance, device, mountpoint) node_filesystem_readonly == 0) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 2m
    labels:
        severity: warning
    annotations:
        summary: Host out of disk space (instance {{ $labels.instance }})
        description: "Disk is almost full (< 30% left)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  - alert: HostHighCpuLoad
    expr: (sum by (instance) (avg by (mode, instance) (rate(node_cpu_seconds_total{mode!="idle"}[2m]))) > 0.6) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 10m
    labels:
        severity: warning
    annotations:
        summary: Host high CPU load (instance {{ $labels.instance }})
        description: "CPU load is > 60%\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"

docker 安装Prometheus:

docker run -d  --name myprometheus  -p 9090:9090  -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  -v /data/prometheus/groups/:/usr/local/prometheus/groups/nodegroups/ -v /data/prometheus/rules/:/usr/local/prometheus/rules/  prom/prometheus  

启动成功后页面如下:

 此时,简单的发邮箱告警可以正常发送了

为了方便测试:HostOutOfMemory我把改成了50就开始告警,然后邮件就收到了告警,如左一。我把HostOutOfMemory改成了10了,就收到了恢复告警,如右一。

 此时:飞书还收不到通知,而且在alertmanager.yml 配置了飞书机器人链接不发送不了,飞书消息要有特定的json格式才能发送成功。

 四:服务器监控安装Prometheusalert

https://github.com/feiyu563/PrometheusAlert

配置文件app.conf 在如下地址,复制出来即可使用
PrometheusAlert/conf/app-example.conf at master · feiyu563/PrometheusAlert · GitHub
docker 安装Prometheusalert

docker pull feiyu563/prometheus-alert
docker run -d -p 8090:8080 -v /data/prometheus/prometheusalert-center/app.conf:/app/conf/app.conf --name prometheusalert-center feiyu563/prometheus-alert

启动成功后,可以看到界面如下,点飞书进入编辑,机器人地址,点模版测试,即可收到告警消息如下图三

 

 此时更改上面的Alertmanager 的alertmanager.yml 的webhook_configs 的url地址

后续飞书收到通知:

 五:服务器监控  Grafana Dashboard

docker 安装

docker run -d -p 3000:3000 --name=grafana grafana/grafana

 登录成功后,添加数据源可以参考下面链接:

Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能_springboot micrometer-CSDN博客

启动成功登录如下:可以点击红框标注图标进行添加监控指标

 可以编辑Alert设置消息告警规则:(折线图和柱状图会有Alert)

配置Alert 其他信息

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值