Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。 Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。
Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。
Prometheus Server的联邦集群能力可以使其从其他的Prometheus Server实例中获取数据,因此在大规模监控的情况下,可以通过联邦集群以及功能分区的方式对Prometheus Server进行扩展。
在普罗米修斯配置单可以配置rule规则,根据rule规则Alotermanager在配置单中进行配置进行推送,可推送邮箱,手机短信、钉钉,顶顶、微信等需要通过webhook下的url进行触发告警。
Alertmanager告警模板
Alertmanager文件夹下的templates /*.html
{{ define "test.html" }}
{{ if gt (len .Alerts.Firing) 0 }}
{{ range $i, $alert := .Alerts }}
<h3>告警邮件</h3>
<table border="1">
<tr>
<td><strong>告警项:</strong></td>
<td>{{ index $alert.Labels "alertname" }}</td>
</tr>
<tr>
<td><strong>告警实例:</strong></td>
<td>{{ index $alert.Labels "instance" }}</td>
</tr>
<tr>
<td><strong>告警级别:</strong></td>
<td bgcolor="{{ index $alert.Labels "severity" }}">{{ index $alert.Labels "severity" }}</td>
</tr>
<tr>
<td><strong>告警主题:</strong></td>
<td>{{ index $alert.Annotations "summary" }}</td>
</tr>
<tr>
<td><strong>告警描述:</strong></td>
<td>{{ index $alert.Annotations "description" }}</td>
</tr>
<tr>
<td><strong>触发时间:</strong></td>
<td>{{ $alert.StartsAt }}</td>
</tr>
<tr>
<td><strong>当前告警值:</strong></td>
<td>{{ index $alert.Annotations "value" }}</td>
</tr>
</table>
{{ end }}
{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}
{{ range $i, $alert := .Alerts }}
<h3>告警恢复邮件</h3>
<table border="1">
<tr>
<td><strong>告警项:</strong></td>
<td>{{ index $alert.Labels "alertname" }}</td>
</tr>
<tr>
<td><strong>告警实例:</strong></td>
<td>{{ index $alert.Labels "instance" }}</td>
</tr>
<tr>
<td><strong>告警级别:</strong></td>
<td bgcolor="green"></td>
</tr>
<tr>
<td><strong>告警主题:</strong></td>
<td>{{ index $alert.Annotations "summary" }}</td>
</tr>
<tr>
<td><strong>告警描述:</strong></td>
<td>{{ index $alert.Annotations "description" }}</td>
</tr>
<tr>
<td><strong>触发时间:</strong></td>
<td>{{ $alert.StartsAt }}</td>
</tr>
<tr>
<td><strong>当前告警值:</strong></td>
<td>{{ index $alert.Annotations "value" }}</td>
</tr>
</table>
{{ end }}
{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}
{{ range $i, $alert := .Alerts }}
<h3>告警恢复邮件</h3>
<table border="1">
<tr>
<td><strong>告警项:</strong></td>
<td>{{ index $alert.Labels "alertname" }}</td>
</tr>
<tr>
<td><strong>告警实例:</strong></td>
<td>{{ index $alert.Labels "instance" }}</td>
</tr>
<tr>
<td><strong>告警级别:</strong></td>
<td bgcolor="green"></td>
</tr>
<tr>
<td><strong>告警主题:</strong></td>
<td>{{ index $alert.Annotations "summary" }}</td>
</tr>
<tr>
<td><strong>告警描述:</strong></td>
<td>{{ index $alert.Annotations "description" }}</td>
</tr>
<tr>
<td><strong>恢复时间:</strong></td>
<td>{{ $alert.EndsAt }}</td>
</tr>
<tr>
<td><strong>当前值:</strong></td>
<td>{{ index $alert.Annotations "value" }}</td>
</tr>
</table>
{{ end }}
{{ end }}
{{ end }}
