prometheus使用四(alertmanager&grafana告警及服务发现)

一.prometheus告警

(1)alertmanager告警

 有了监控和展示后,我们可以看到各种指标,但没有告警的话还是不方便。

1.下载安装

下载地址:https://prometheus.io/download/

tar -xvf alertmanager-0.20.0.linux-amd64.tar.gz

alertnatives --version

启动
./alertmanager --config.file=simple.yml

后台启动
nohup ./alertmanager &

 

2.编辑Prometheus配置文件prometheus.yml,并添加以下内容:

alerting:
alertmanagers:
- static_configs:
targets: ['localhost:9093']

 

rule_files:

 -"/usr/local/alertmanager_rules.yml"   #报警规则邮件

3.编写alertmanager.yml文件

global:
resolve_timeout: 5m
wechat_api_corp_id: "ww8b888888"
wechat_api_url: "https://qyapi.weixin.qq.com/cgi-bin"
wechat_api_secret: "FTzXYrR123123dsf"

templates:
- 'template/*.tmpl'

route:
group_by: ['alertname'] # 报警分组依据
group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知
group_interval: 10s # 在发送新警报前的等待时间
repeat_interval: 2m # 发送重复警报的周期 对于email配置中,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝
receiver: 'webhook' # 发送警报的接收者的名称,以下receivers name的名称


#两种方式,1转到特定url报警
receivers:
- name: 'webhook'
webhook_configs:
- url: 'http://ip:8080/user/alert'

#2.微信报警
receivers:
- name: 'wechat'
wechat_configs: # 企业微信报警配置
- send_resolved: true
to_party: '2' # 接收组的id
agent_id: '1000002' # (企业微信-->自定应用-->AgentId)
corp_id: 'ww8b888888' # 企业信息(我的企业-->CorpId[在底部])
api_secret: 'FTzXYrR123123dsf' # 企业微信(企业微信-->自定应用--

 

4.编写alertmanager_rules.yml文件

groups:

 - name: alertmanager_rules

   rules:

   - alert: InstanceDown # 告警名称

     expr: up == 0 # 告警的判定条件,参考Prometheus高级查询来设定

     for: 2m # 满足告警条件持续时间多久后,才会发送告警

     labels: #标签项

      team: node

     annotations: # 解析项,详细解释告警信息

      summary: "{{$labels.instance}}: has been down"

      description: "{{$labels.instance}}: job {{$labels.job}} has been down "

 

分别重启alertmanaget和prometheus完成。

以上案例未经过生产测试,需调试后使用。

 

(1)grafana告警

如果添加channel即可。选择

prometheus使用四(alertmanager&grafana告警及服务发现)

 

 

 有丰富的类型可以选择

prometheus使用四(alertmanager&grafana告警及服务发现)

 

然后在Dashboard上任意panel上添加即可

prometheus使用四(alertmanager&grafana告警及服务发现)

 

 

 

两种报警方式,第一种配置稍复杂,但报警规则灵活,及时。第二种配置简单,通知类型丰富不用自己开发。各位可按需选择。

 

 二.prometheus服务发现

(1)基于consul的服务发现

1.安装参考这里  https://cloud.tencent.com/developer/article/1096705

consul装好后启动,修改prometheus.yml

添加个job

 -job_name: 'consul'

  consul_sd_config:

   -server: 'localhost:8500'

 在consul里添加服务即可

 可在网关里配置端口转发到安装机器的8500端口即可访问consul的ui,可以看到有两个注册上了

prometheus使用四(alertmanager&grafana告警及服务发现)

 

 2.随着consul里服务的注册和删除,prometheus会自动监控,这样只维护consul即可,不需要修改prometheus的yml了

(2)基于文件的服务发现

 

 1.也是先配个job

 -job_name: 'prometheusfile'

  file_sd_configs:

  - files:['/usr/local/file/*.yml']

  refresh_interval: 5S #5s刷新一次

 2.写yml文件

  可以写多个,也可以在一个yml里写

 -targets: ['ip:1234‘]

  labels:

    job: "file1"

 #再写一个

 -targets: ['ip:2345']

  labels:

    job: "file2"

保存后发现,prometheus已发现了这些目标。

groups: - name: alertmanager_rules   rules:   - alert: InstanceDown # 告警名称     expr: up == 0 # 告警的判定条件,参考Prometheus高级查询来设定     for: 2m # 满足告警条件持续时间多久后,才会发送告警     labels: #标签项      team: node     annotations: # 解析项,详细解释告警信息      summary: "{{$labels.instance}}: has been down"      description: "{{$labels.instance}}: job {{$labels.job}} has been down "

上一篇:基于docker封装prometheus解决时区问题


下一篇:docker09-Prometheus