首页 > 其他分享 >Prometheus+Grafana+Alertmanager实现监控系统

Prometheus+Grafana+Alertmanager实现监控系统

时间:2024-09-10 14:52:47浏览次数:13  
标签:Alertmanager instance labels prometheus grafana nginx Prometheus Grafana


1.介绍

监控系统有一下部分组成:

prometheus服务(接收所有exporter发送过来的消息,配置告警规则;默认端口:9090)

grafana可视化界面(将prometheus数据展示出来;默认端口:3000)

exporter代理服务(将server上报的数据转换为prometheus能看懂的格式;nginx-vts默认端口:9913;nginx默认端口:9113)

server服务(上报数据)

alertmanager报警管理器(将告警通过mail或者webhook通知开发者;默认端口:9093)

数据上报流程:

1.server上报数据给exporter;

2.exporter上报数据给prometheus

3.grafana配置连接prometheus读取数据,并且通过UI模板将prometheus数据展示出来

4.prometheus中配置rules,触发rules后向alertmanager推送消息

5.alertmanager收到消息后处理消息

2.安装prometheus

1.下载解压prometheus包
安装包见Prometheus相关文件

2.配置prometheus
修改prometheus.yml,scrape_configs中添加

- job_name: 'prometheus'
    static_configs:
    - targets: ['119.28.102.000:9090']

3.启动prometheus

nohup 解压目录/prometheus --config.file=解压目录/prometheus.yml --web.external-url=http://119.28.102.000:9090 >解压目录/log.log &

3.安装grafana

1.下载grafana包
安装包见Prometheus相关文件

2.安装grafana包

sudo apt-get install -y adduser libfontconfig1
sudo dpkg -i 包名
systemctl daemon-reload

3.启动grafana

systemctl restart grafana-server #重启
systemctl status grafana-server #查看运行状态
systemctl enable grafana-server #设置开机启动

4.配置grafana,设置prometheus数据源

1.访问grafana(ip:3000)

2.选择Configuration(左侧导航栏齿轮图标)>点击Data sources>点击Add data source>搜索并选择Prometheus

Prometheus+Grafana+Alertmanager实现监控系统_服务器

Prometheus+Grafana+Alertmanager实现监控系统_安装包_02

3.将Http-URL输入你的Prometheus服务地址(ip:9090),点击最底部的 Save & test

Prometheus+Grafana+Alertmanager实现监控系统_数据_03

5.导入grafana模板展示数据

1.选访问grafana(ip:3000)

2.选择Dashboards(左侧导航栏四个正方形图标)>点击New>点击Import>输入8918>点击Load

Prometheus+Grafana+Alertmanager实现监控系统_nginx_04


Prometheus+Grafana+Alertmanager实现监控系统_数据_05

3.选择Prometheus>点击Import

Prometheus+Grafana+Alertmanager实现监控系统_nginx_06

4.选择Search dashboards(左侧导航栏放大镜图标)就能看到刚刚添加的Dashboards

Prometheus+Grafana+Alertmanager实现监控系统_nginx_07

4.安装Alertmanager

1.下载解压Alertmanager

安装包见Prometheus相关文件

2.配置Prometheus

1.在Prometheus根目录创建rules文件夹,并且新增nginx_rules.yml

groups:
- name: nginx
  rules:

  - alert: nginx_waiting
    expr: nginx_server_connections{instance=~"119.28.102.000:9913", status=~"waiting"}>1
    for: 10s
    labels:
      instance: '{{$labels.instance}}'
      priority: "3"
      type: 'nginx'
    annotations:
      description: '{{ $labels.instance }} nginx waiting连接过大,请前往查看,当前waiting数量:{{$value}}'
      summary: '{{ $labels.instance }} nginx waiting连接过大,请前往查看,当前waiting数量:{{$value}}}'

  - alert: nginx_up
    expr: nginx_up{instance=~"119.28.102.000:9113"}==0
    for: 10s
    labels:
      instance: '{{$labels.instance}}'
      priority: "3"
      type: 'nginx'
    annotations:
      description: '{{ $labels.instance }} nginx 已宕机,请前往查看,{{$value}}}'
      summary: '{{ $labels.instance }} nginx 已宕机,请前往查看,{{$value}}}'

2.修改prometheus.yml

global:
  scrape_interval:     15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - 119.28.102.000:9093

# 规则文件地址
rule_files:
   - "rules/*.yml"

3.检查规则是否配置成功

重启Prometheus,访问http://119.28.102.000:9090/rules,查看是否存在数据

Prometheus+Grafana+Alertmanager实现监控系统_数据_08

3.配置Alertmanager

1.修改alertmanager.yml

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1m
  receiver: 'webhook'                      #定义接受告警组名 
receivers:

- name: 'webhook'
  webhook_configs:
  - url: 'http://119.28.102.000:8082/index/prometheusWebHook' #需要自己实现接口和Cat一样

2.启动alertmanager

nohup 解压地址/alertmanager > 解压地址/log.log &

3.测试

这边配置的规则是监控nginx是否存活,杀死nginx即可


标签:Alertmanager,instance,labels,prometheus,grafana,nginx,Prometheus,Grafana
From: https://blog.51cto.com/u_16338191/11971648

相关文章

  • aalertmanager+prometheus-webhook-dingtalk推送至钉钉群
    揭秘业务背后的守护者,真实业务场景带你领略运维技术的魅力!看了很多技术大佬的博客,都是在讲技术,缺乏业务场景的构建,很多运维人员遇到问题找不到解决方案。因此我想分享真实的业务场景,大家一起沟通业务问题,快速的提升技术,快速升职加薪。-----------------------正文开始-------------......
  • 13.3 alertmanager分组功能
    本节重点介绍:启动3个alert_receive接收端在alertmanager配置文件中编写相关路由prometheus编写rule文件触发告警观察3个接收端5001收到alert_g_15002收到alert_g_25003收到alert_g_1和alert_g_2分组说明alertmanager可以根据设置的路由将告警可以分组处理,发送给对应......
  • grafana重复面板
    关于Grafana重复面板的问题,我之前给过以下答案:Grafana中可以通过模板变量(Variables)和重复功能来动态生成多个面板,这对类似的面板进行数据展示非常有用。你可以通过如下步骤来实现:1.创建模板变量(变量管理)在Grafana仪表板上,点击面板顶部的齿轮图标(DashboardSettings)->......
  • Prometheus数据压缩和持久化实现原理
    Prometheus的数据压缩和持久化是其设计中的关键部分,确保在高效存储监控数据的同时,能够快速查询和访问这些数据。以下是Prometheus数据压缩和持久化的实现原理:1.数据存储结构Prometheus使用时间序列数据库(TSDB)来存储监控数据,其数据结构主要由以下几个部分组成:时间序列(Time......
  • Prometheus可以对接哪些exporter,请举几个列子,这些exporter的功能是什么?
    Prometheus可以对接多种类型的exporter,以便从不同的系统和应用程序中收集监控数据。以下是一些常见的Prometheusexporter及其功能:1.NodeExporter功能:用于收集主机(节点)的硬件和操作系统指标,如CPU使用率、内存使用、磁盘I/O、网络流量等。用途:监控服务器的整体性能,帮......
  • Prometheus operator怎么添加targets和告警规则
    使用PrometheusOperator来管理Prometheus实例、添加targets和告警规则是一个相对简单的过程。以下是如何通过PrometheusOperator添加targets和告警规则的详细步骤。1.安装PrometheusOperator如果尚未安装PrometheusOperator,可以通过Helm或Kubernetes清单文......
  • Prometheus的拉取模式与zabbix推送模式有何区别?各有什么优缺点?
    Prometheus的拉取模式与Zabbix的推送模式在监控数据收集和处理方式上存在显著区别。以下是它们的主要区别及各自的优缺点:1.数据收集模式Prometheus拉取模式:Prometheus定期从被监控的目标(如Exporter、应用程序等)主动拉取数据。每个目标都需要暴露一个HTTP接口,Prome......
  • k8s集群外exporter怎么使用Prometheus监控
    要在Kubernetes集群外部使用Exporter并通过Prometheus监控它,您可以按照以下步骤进行配置:1.部署Exporter首先,确保您已经在Kubernetes集群外部的主机上部署了Exporter(如NodeExporter、BlackboxExporter等)。以下是以NodeExporter为例的安装步骤:#下载并解压Nod......
  • Prometheus告警从触发到收到通知延迟在哪
    Prometheus的告警机制涉及多个步骤,从触发到收到通知的过程可能会遇到延迟。这些延迟主要来自以下几个方面:1.规则评估延迟评估周期:Prometheus会在配置的时间间隔内评估告警规则(通常是每1分钟)。如果在这个周期内没有检测到触发条件,告警将不会被触发。数据拉取延迟:Prometheu......
  • thanos rule组件和prometheus区别
    ThanosRuler和Prometheus在功能上有一些相似之处,但它们在设计目的、功能和使用场景上存在显著区别。以下是对这两个组件的详细比较:1.设计目的ThanosRuler:作为Thanos生态系统的一部分,ThanosRuler旨在提供高可用性和跨多个数据源的规则评估和告警功能。它可以与多......