prometheus配置文档

Prometheus 配置文档

文档说明:

是本人在去年公司做监控系统的时候在网上查询各个论坛,Prometheus 官网等等地方整合而来,文档中有部分配置字段属于自己通过不断尝试得到的.

关于热加载文件

目前来说只能让 Prometheus 自身热加载,但是 alertmanager 告警规则热加载,在官网找到使用方法,但是自己尝试多次,无法进行热加载.所以这是本文目前存在的问题.

文档亮点

自定义字段,通过web.hook 推送到接收告警的服务上去.然后可以自己定义规则.这是之前在网上没有找到的.我是去年的时候整理的,现在没接触过,不知道Prometheus 现在是否有新的变化和操作.以下是文档全篇.有问题可以留言和私聊.

下载安装包(忽略)

服务配置

  • Prometheus (确保已下操作在服务目录下)

    1. 服务-热启动
      nohup ./prometheus --web.enable-lifecycle --config.file=prometheus.yml &
    
    2. 检验配置信息
      ./promtool check config prometheus.yml
    
    3. 保存热加载prometheus.yml
    curl  -XPOST ip:9090/-/reload
    
    4. 访问地址
    http://ip:9090
    
    5. 动态配置数据规则

    配置注意都是: 后面跟着一个空格

    prometheus.yml 原配置(静态规则)

    global:
      scrape_interval:     15s
      evaluation_interval: 15s
      scrape_timeout: 5s
    
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          - alertmanager:9093
    
    rule_files:
    scrape_configs:
      - job_name: 'prometheus'
        scrape_interval: 5s
        static_configs:
        metrics_path: '/metrics'
        - targets: ['localhost:9090']
    

    参数对应参照

    对应参数描述默认值
    scrape_interval全局每次数据收集的间隔15s
    evaluation_interval规则扫描时间间隔是15秒1m
    scrape_timeout超时时间5s
    alertmanager基于告警插件,监听IP 端口一般为部署alertmanager服务的ip端口 可以配置多个
    job_name监控的服务名称一般为监控服务对应的名称
    rule_files -scrape_interval这里如果单独设定的话,会覆盖全局设定的参数默认5秒
    metrics_path监视项访问的URL路径基于 prometheus 设置的插件 默认 ‘/metrics’
    - targets监控服务ip端口监控服务(可以为多个节点)

    prometheus.yml 服务发现配置

    将目前的配置文件,拆分3种文件

    • 核心集中配置文件(prometheus.yml)
      global:
        scrape_interval:     15s
        evaluation_interval: 15s
      
      alerting:
        alertmanagers:
        - static_configs:
          - targets:
            - 127.0.0.1:9093
      
      rule_files:
        - "/opt/prometheus/prometheus-2.21.0.linux-amd64/rules/*.rules"
      
      scrape_configs:
        config.
        - job_name: 'prometheus'
          metrics_path: '/metrics'
          file_sd_configs:
          - files:
            - /opt/prometheus/prometheus-2.21.0.linux-amd64/conf.d/prometheus.json
        - job_name: 'server'
          file_sd_configs:
          - files:
            - /opt/prometheus/prometheus-2.21.0.linux-amd64/conf.d/server.json  
        - job_name: 'mysql'
          file_sd_configs:
          - files:
            - /opt/prometheus/prometheus-2.21.0.linux-amd64/conf.d/mysql.json
      
    • 告警规则配置 (.rules)
      groups:
      - name: mysql
        rules:
        - alert: DOWN-00001
          expr: up{job="mysql"} == 0
          for: 1m
          labels:
            severity: critical
          annotations:
            summary: "Mysql服务宕机,服务节点为:{{ $labels.ip }}:{{$labels.port}}"
            description: ""
      
        - alert: QPS-HIGH-00002
          expr: rate(mysql_global_status_questions[5m]) > 120 
          for: 2m
          labels:
            severity: warning
          annotations:
            summary: "{{$labels.instance}}: Mysql_High_QPS detected"
            description: "{{$labels.instance}}: Mysql opreation is more than 500 per second ,(current value is: {{ $value }})"  
      
        - alert: MANY-CONNECT-00003
          expr: rate(mysql_global_status_threads_connected[5m]) > 200
          for: 2m
          labels:
            severity: warning
          annotations:
            summary: "{{$labels.instance}}: Mysql Too Many Connections detected"
            description: "{{$labels.instance}}: Mysql Connections is more than 100 per second ,(current value is: {{ $value }})"  
      
        - alert: SLOW-QUERY-00004
          expr: rate(mysql_global_status_slow_queries[5m]) > 3
          for: 2m
          labels:
            severity: warning
          annotations:
            summary: "{{$labels.instance}}: Mysql_Too_Many_slow_queries detected"
            description: "{{$labels.instance}}: Mysql slow_queries is more than 3 per second ,(current value is: {{ $value }})"  
      
        - alert: THREAD-STOP-00005
          expr: mysql_slave_status_slave_sql_running != 1
          for: 1m
          labels:
            severity: critical
          annotations:
            summary: "Instance {{ $labels.instance }} Sync Binlog is enabled"
            description: "SQL thread has stopped. This is usually because it cannot apply a SQL statement received from the master."
      

    参数对应参照

    对应参数描述默认值
    - name需要配置监控名称一般为监控服务名称
    - alert这个属于监控服务的具体问题目前我们做了内部规则,详情参考<告警规则定义文件> 定义–服务监控告警规则编码
    expr监控服务检测具体触发规则表达式
    for持续时间,多久获取不到触发告警1m
    serverity报警规则warning / info/ critical/ none
    summary自定义摘要目前我们只针对该字段进行配置
    description自定义具体描述
    • 监控服务的 ip:port(.json)
      [
          {
              "targets": [
                  "20.1.121.131:9104"
              ],
              "labels": {
            "job":"mysql",
            "port":"3306",
            "ip":"20.1.11.158",
            "systemId":"SYSTEM-MYSQL-20001",
            "env":"linux",
            "type":"1"
      
              }
          }
      ]
      

    参数对应参照

    对应参数描述默认值
    targets监控节点服务端口允许监控多个节点服务
    labels当前这个节点 可以进行拓展字段port ip systemId type 为内部定义字段
    job该参数与rules 配置文件中的 - name 应该保持一致
    port监控服务的端口对应监控服务的端口
    ip监控服务的ip对应监控服务的ip
    systemId属于内部监控规则详情参考<告警规则定义文件> 定义–系统服务编码定义
    type告警类型 1.违规操作 2.入侵攻击 3.信息测探 4.系统状态目前默认为4
    env环境默认 linux
  • Grafana (确保已下操作在服务目录下)

    1. 访问地址
    http://ip:3000
    
    2. 账号密码
    admin/admin
    
    3. 启动
    nohup ./grafana-server &
    
  • Alertmanager (确保已下操作在服务目录下)

    1. 访问地址
    ./alertmanager --config.file=alertmanager.yml &
    
    2. 校验 alertmanager 配置信息
    ./amtool check-config alertmanager.yml
    
    3.配置告警规则

    alertmanager.yml

    global:
      resolve_timeout: 5m
    route:
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 10s
      repeat_interval: 1m
      receiver: 'web.hook'
    
    receivers:
    - name: 'web.hook'
      webhook_configs:
      - url: 'http://20.1.11.159:2110/web/hook'
        send_resolved: true
    
    inhibit_rules:
      - source_match:
          severity: 'critical'
        target_match:
          severity: 'warning'
        equal: ['alertname', 'dev', 'instance']
    

    参数对应参照

    对应参数描述
    resolve_timeout解析超时时间 (5分钟) 当告警的状态有firing变为resolve的以后还要呆多长时间,才宣布告警解除。
    group_by根据标签分组
    group_wait发送告警等待时间,为了合并相同告警一起发送
    group_interval发送告警间隔时间
    repeat_interval重复告警时间,控制发送告警频率,根据情况设置
    receiver定义web.hook
    name定义web.hook 这个是说 PrometheUS把告警发送给webhook,也就是一个http的url,当然这个url需要我们自己定义服务实现了
    url定于推送到的告警服务路径
    send_resolved当告警问题解决了是否也要通知一下
  • node_exporter (确保已下操作在服务目录下)

    1. 运行命令
    nohup ./node_exporter &
    
  • mysql_exporter (确保已下操作在服务目录下)

    1. 配置 .my.cnf 文件 (没有就在当前目录下创建)
    [client]
    host=172.31.54.234
    user=root
    password=dxyt123
    
    2. 运行命令 (根据配置目录不同变更目前的路径)
    nohup /home/soft/mysqld_exporter-0.12.1.linux-amd64/mysqld_exporter --config.my-cnf=/home/soft/mysqld_exporter-0.12.1.linux-amd64/.my.cnf &
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值