2.点击 Add data source 按钮后,出来下面界面:
3.鼠标移到 Prometheus 上,点击 Select 按钮:
4.prometheus相关设置:
最主要设置获取数据的HTTP URL。
5.点击 save&test 按钮,它会提示你是否设置成功。
6.设置Dashboards
7.回到home
8:点击 prometheus
9:出来很多图表展示
grafana不仅有我们上面设置的那些图表模板,它还有其他很多模板,我们也可以设置。
官方模板dashboard 地址。
比如我们查找node exportet的模板,https://grafana.com/grafana/dashboards?search=node%20exporter,有一个模板 downloads 比较多,
它的地址为:
https://grafana.com/grafana/dashboards/8919
我们在grafana上来设置这个dashboard,import进来:
可以填写id和url,我们填写id,为 8919:
点击 load 出来下面界面:
然后选择prometheus-1,点击 import, 出来如下图的界面:
我们已经能够对收集的数据,通过grafana展示出来了,能查看数据。想一想,系统还缺失什么功能?
监控最重要的目的是什么?
第一:监控系统是否正常
第二:系统不正常时,可以告知相关人员及时的排查和解除问题,这就是告警通知。
所以,还缺一个告警通知的模块。
prometheus的告警机制由2部分组成:
告警规则
prometheus会根据告警规则rule_files,将告警发送给Alertmanager
管理告警和通知
模块是Alertmanager。它负责管理告警,去除重复的数据,告警通知。通知方式有很多如Email、HipChat、Slack、WebHook等等。
告警文档地址:告警规则官方文档。
我们新创建一个规则文件:alert_rules.yml,把它和prometheus.yml放在一起,官方有一个模板 Templating,直接copy过来:
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)"上面规则文件大意:就是创建了2条alert规则 alert: InstanceDown 和 alert: APIHighRequestLatency :
InstanceDown 就是实例宕机(up==0)触发告警,5分钟后告警(for: 5m);
APIHighRequestLatency 表示有一半的 API 请求延迟大于 1s 时(api_http_request_latencies_second{quantile="0.5"} > 1)触发告警
更多rules规则说明,请看这里 recording_rules。