zoukankan      html  css  js  c++  java
  • Prometheus 搭建监控系统

    安装准备

    这里我的服务器IP是192.168.125.156,登入,建立相应文件夹

    mkdir -p /data2/promethues/promethues
    mkdir -p /data2/promethues/promethues/server
    mkdir -p /data2/promethues/promethues/client
    touch /data2/promethues/promethues/server/rules.yml
    chmod 777 /home/chenqionghe/promethues/server/rules.yml

    下面开始三大套件的学习

    安装Prometheus Server

    通过docker方式
    首先创建一个配置文件/data2/promethues/test/prometheus.yml
    挂载之前需要改变文件权限为777,要不会引起修改宿主机上的文件内容不同步的问题

    global:
      scrape_interval:     60s     # 默认抓取间隔,15秒向目标抓取一次数据。
      evaluation_interval: 60s
    rule_files:
      - /etc/prometheus/rules.yml 
    scrape_configs:
      - job_name: prometheus
        static_configs:
          - targets: ['192.168.125.156:9090']
            labels:
              instance: prometheus

    运行

    docker run --name=prometheus -d 
    -p 9090:9090 
    -v /data2/promethues/test/prometheus.yml:/etc/prometheus/prometheus.yml 
    -v /data2/promethues/server/rules.yml:/etc/prometheus/rules.yml 
    prom/prometheus --config.file=/etc/prometheus/prometheus.yml
    

    访问http://192.168.125.156:9090
    我们会看到如下界面

    访问http://192.168.125.156:9090/metrics

      

     我们配置了9090端口,默认prometheus会抓取自己的/metrics接口

    在Graph选项已经可以看到监控的数据

     二.安装客户端提供metrics接口

    通过node exporter提供metrics

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

    然后把这两些接口再次配置到prometheus.yml, 重新载入配置

    global:
      scrape_interval:     60s
      evaluation_interval: 60s
    rule_files:
      - /etc/prometheus/rules.yml 
    scrape_configs:
      - job_name: prometheus
        static_configs:
          - targets: ['192.168.125.156:9090']
            labels:
              instance: prometheus
          - targets: ['192.168.125.156:9100']
            labels:
              group: 'client-node-exporter'
    

     可以看到接口都生效了

     三.配置告警规则

    vi /data2/promethues/server/rules.yml

    groups:
    - name: example
      rules:
    
      # Alert for any instance that is unreachable for >5 minutes.
      - alert: InstanceDown
        expr: up == 0
        for: 5m
        labels:
          severity: page
        annotations:
          summary: "Instance {{ $labels.instance }} down"
          description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."
    
      # Alert for any instance that has a median request latency >1s.
      - alert: APIHighRequestLatency
        expr: api_http_request_latencies_second{quantile="0.5"} > 1
        for: 10m
        annotations:
          summary: "High request latency on {{ $labels.instance }}"
    description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"

    参考官方文档

    https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#defining-alerting-rules

    这个规则文件里,包含了两条告警规则:InstanceDown 和 APIHighRequestLatency。顾名思义,InstanceDown 表示当实例宕机时(up === 0)触发告警,APIHighRequestLatency 表示有一半的 API 请求延迟大于 1s 时(api_http_request_latencies_second{quantile="0.5"} > 1)触发告警。配置好后,需要重启下 Prometheus server,然后访问http://192.168.125.156:9090/rules可以看到刚刚配置的规则:

    访问 http://192.168.177.156:9090/alerts 可以看到根据配置的规则生成的告警:

     

     这里我们将一个实例停掉,可以看到有一条 alert 的状态是 PENDING,这表示已经触发了告警规则,但还没有达到告警条件。这是因为这里配置的 for 参数是 5m,也就是 5 分钟后才会触发告警,我们等 5 分钟,可以看到这条 alert 的状态变成了 FIRING

     安装AlterManager

    mkdir -p /data2/promethues/alertmanager
    cd !$

    创建配置文件alertmanager.yml

    global:
      smtp_smarthost: 'smtp.163.com:25'       # smtp地址
      smtp_from: 'hjfxxxx@163.com'                # 谁发邮件
      smtp_auth_username: 'hjfxxxx@163.com'       # 邮箱用户
      smtp_auth_password: 'xxxxxx'                   # 邮箱授权码 
    smtp_require_tls: false route: group_by: ["alertname"] # 分组名 group_wait: 10s # 当收到告警的时候,等待三十秒看是否还有告警,如果有就一起发出去 group_interval: 10s # 发送警告间隔时间 repeat_interval: 1h # 重复报警的间隔时间 receiver: mail # 全局报警组,这个参数是必选的,和下面报警组名要相同 receivers: - name: 'mail' email_configs: - to: 'hjfxxxx@163.com'

     启动alertmanager

    docker run -d -p 9093:9093 
    --name alertmanager 
    -v /data2/promethues/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml 
    prom/alertmanager

    访问9093端口

    关掉node-exporter,这个时候再访问 Alertmanager,可以看到 Alertmanager 已经接收到告警了:

    下面的问题就是如何让 Alertmanager 将告警信息发送给我们了,上面alertmanager.yml已经配置了邮件告警的方式

    再到/data2/promethues/test/prometheus.yml,添加

    global:
      scrape_interval:     60s
      evaluation_interval: 60s
    rule_files:
      - /etc/prometheus/rules.yml 
    scrape_configs:
      - job_name: prometheus
        static_configs:
          - targets: ['192.168.125.156:9090']
            labels:
              instance: prometheus
          - targets: ['192.168.125.156:9100']
            labels:
              group: 'client-node-exporter'
    alerting:
      alertmanagers:
        - static_configs:
            - targets: ["192.168.125.156:9093"]

    163个人邮箱已经收到告警

    下面继续完善文档,服务器还是192.168.177.156,只不过ip地址变成了157

    普罗米修斯监控docker容器

    cadvisor 的安装

    docker run 
      --volume=/:/rootfs:ro 
      --volume=/var/run:/var/run:rw 
      --volume=/sys:/sys:ro 
      --volume=/var/lib/docker/:/var/lib/docker:ro 
      --volume=/dev/disk/:/dev/disk:ro 
      --publish=8080:8080 
      --detach=true 
      --name=cadvisor 
      google/cadvisor:latest

    当启动成功后,访问http://192.168.177.157:8080/

     访问http://192.168.177.157:8080/metrics

     

     修改主配置文件并重启

    global:
      scrape_interval:     60s
      evaluation_interval: 60s
    rule_files:
      - /etc/prometheus/rules.yml
    scrape_configs:
      - job_name: prometheus
        static_configs:
          - targets: ['192.168.125.157:9090']
            labels:
              instance: prometheus
          - targets: ['192.168.125.157:9100']
            labels:
              group: 'client-node-exporter'
          - targets: ['192.168.125.157:8080']
            labels:
              group: 'cAdvisor'
    alerting:
      alertmanagers:
        - static_configs:
            - targets: ["192.168.125.157:9093"]

    访问

    安装grafana,访问3000端口

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

    账号:admin

    密码:admin

    需要修改密码

    导入新的模版

     地址:https://grafana.com/grafana/dashboards/11558/revisions

    复制链接地址

    填进去即可

     效果显示

     先到这吧

     不是每个人都适合与你白头偕老。有的人是拿来成长的,有的人是拿来生活的,有的人是拿来一辈子怀念的。

  • 相关阅读:
    java在线学习-mybatis的缓存类及作用
    java架构师学习路线-MyBatis中的一些概念
    java架构师学习路线-Mybatis中单例模式的介绍
    java架构师学习路线-Mybatis中Builder模式的介绍
    竞赛图中三元环的期望个数
    求一个点前面第一个大于等于当前值的位置
    CF623D Birthday
    联赛模拟测试33
    网络流
    联赛模拟测试32
  • 原文地址:https://www.cnblogs.com/hanjianfei/p/14105170.html
Copyright © 2011-2022 走看看