• confd+consul配置prometheus


    confd的docker镜像Dockerfile,内容如下:
    FROM alpine:3.10
    MAINTAINER Alvin4u <firstep@qq.com>

    ENV CONFD_VERSION=0.16.0
    CONFD_INTERVAL=60
    CONFD_LOG_LEVEL=info
    CONFD_BACKEND=consul
    CONFD_NODE=localhost:8500
    CONFD_HOST_NODE=localhost:9090

    RUN apk add --update curl ca-certificates
    && curl -L -o /usr/bin/confd https://github.com/kelseyhightower/confd/releases/download/v$CONFD_VERSION/confd-$CONFD_VERSION-linux-amd64
    && chmod +x /usr/bin/confd

    ADD confd /etc/confd
    ADD start.sh /start.sh

    RUN chmod +x /start.sh

    VOLUME /etc/prometheus
    VOLUME /etc/confd

    ENTRYPOINT ["/start.sh"]

    启动confd脚本start.sh,内容:
    #!/bin/sh

    set -e

    echo "Starting confd..."

    until /usr/bin/confd -onetime -backend $CONFD_BACKEND -node $CONFD_NODE; do
    echo "[confd] Winting for create initail configuration."
    sleep 5
    done

    /usr/bin/confd -confdir="/etc/confd" -onetime=false -interval=$CONFD_INTERVAL -backend $CONFD_BACKEND -node $CONFD_NODE -log-level=$CONFD_LOG_LEVEL

    confd动态修改prometheus配置文件

    1.confd/templates下配置文件
    alertmanager.tmpl,内容:
    # 现有的配置项可在consul的/monitor/alertmanager/common配置(JSON格式)
    {{$config := getv "/monitor/alertmanager/common"|json}}
    global:
    resolve_timeout: {{or $config.resolve_timeout "5m"}}
    route:
    group_by: {{or $config.group_by "['alertname']"}} #分组方式
    group_wait: {{or $config.group_wait "10s"}} #组报警等待时间
    group_interval: {{or $config.group_interval "10s"}} #组报警间隔时间
    repeat_interval: {{or $config.repeat_interval "1m"}} #重复报警间隔时间
    receiver: {{or $config.receiver "'web.hook'"}}
    routes: #不同的规则不同的重复报警间隔
    {{range gets "/monitor/alarms/*/*"}}
    {{$rule := json .Value}}
    - receiver: 'web.hook'
    repeat_interval: {{or $rule.suppressDuration "1m"}}
    match:
    ruleId: {{$rule.ruleId}}
    {{end}}

    #在consul的/monitor/alertmanager/receivers配置接收者(YML格式)
    {{getv "/monitor/alertmanager/receivers"}}
    # receivers:
    # - name: 'web.hook'
    # webhook_configs:
    # - url: 'http://192.168.2.240:7002/webHook/send'
    # send_resolved: true

    #在consul的/monitor/alertmanager/inhibit配置抑制(YML格式)
    {{getv "/monitor/alertmanager/inhibit"}}
    # inhibit_rules:
    # - source_match:
    # severity: 'critical'
    # target_match:
    # severity: 'warning'
    # equal: ['alertname', 'dev', 'instance']

    prometheus.alert.tmpl,内容:
    groups:
    - name: alarms
    rules: {{range gets "/monitor/alarms/*/*"}}
    {{$rule := json .Value}}
    - alert: {{$rule.name}}
    expr: {{$rule.expression}}
    labels:
    level: {{$rule.level}}
    alarmStrategyId: {{$rule.strategyId}}
    ruleId: {{$rule.ruleId}}
    dimensionName: {{$rule.dimensionName}}
    annotations:
    value: {{`"{{ $value }}"`}}
    {{end}}

    2.confd/conf.d下配置文件
    alertmanager.toml,内容:
    [template]
    src = "alertmanager.tmpl"
    dest = "/etc/alertmanager/alertmanager.yml"
    keys = [
    "/monitor/alarms",
    "/monitor/alertmanager"
    ]
    reload_cmd = 'echo $CONFD_HOST_NODE && curl -XPOST http://{$CONFD_HOST_NODE}/-/reload'

    prometheus.toml,内容:
    [template]
    src = "prometheus.alert.tmpl"
    dest = "/etc/prometheus/rules/alert.yml"
    keys = [
    "/monitor/alarms"
    ]
    reload_cmd = 'echo $CONFD_HOST_NODE && curl -XPOST http://{$CONFD_HOST_NODE}/-/reload'

  • 相关阅读:
    函数总结
    python之内置函数,匿名函数
    列表推导式 生成器表达式
    迭代器和生成器函数
    最近练习题
    python----------闭包 、装饰器
    python的逻辑运算符
    python------函数嵌套及作用域链
    python ---------函数
    如何实现负载均衡
  • 原文地址:https://www.cnblogs.com/yaoyu1983/p/15219921.html
Copyright © 2020-2023  润新知