Promethus+Grafana+Promtail+Loki+alert配置短信告警

1.prometheus

服务端:prometheus-2.37.4.linux-amd64.tar.gz
客户端:node_exporter-1.5.0.linux-amd64.tar.gz
服务端与客户端没有直接的版本对应关系,选择一个满足我们需求的服务端即可
下载链接:https://prometheus.io/download/

Prometheus总配置文件

[root@localhost prometheus-2.37.4.linux-amd64]# cat ./prometheus.yml
global:
alerting:
  alertmanagers:
    - static_configs:
        - targets:
rule_files:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "nodes"   #在Prometheus的ui界面中会显示的job
    file_sd_configs:
      - files:
        - targets/nodes-*.yaml  #相当于include 配置文件

include文件内容

[root@localhost prometheus-2.37.4.linux-amd64]# cat targets/nodes-all.yaml
- targets:
  - 192.168.1.222:9100
  - 192.168.0.145:9100
  labels:
    app: node-exporter  
    job: node
关于PromQL,在Prometheus页面中graph过滤,好像是说grafana获取数据逻辑就是从这里

Alertmanager告警,内网没配,线上配了

2.Grafana

Grafana可以直接下镜像,也可以去Grafana下载包解压。可以下载各种各样的模块,我就拿下好的操作了。

Grafana数据源data source添加Prometheus:
在这里插入图片描述

操作过程

	启动grafana(进入grafana的目录操作):nohup ./grafana-server &
	启动prometheus(进入prometheus的目录操作):nohup ./prometheus  &
	
	将192.168.2.100:/usr/local/node_exporter-1.5.0.linux-amd64.tar.gz 拷贝到 192.168.0.145
	解压到192.168.0.145:/usr/local/node_exporter
	启动客户端(port:9100):nohup ./node_exporter &
	修改/usr/local/prometheus/targets/node-all.yaml配置文件添加客户端
	
	重启Prometheus
	Prometheus页面增加一台192.168.0.145
	grafana仪表板自动添加,细节配合PromQL添加新的仪表盘

分享一些PromQL语句和展示结果

node_uname_info{vendor=~"$vendor",account=~"$account",group=~"$group",name=~"$name",name=~".*$sname.*"} - 0

sum(time() - node_boot_time_seconds{vendor=~"$vendor",account=~"$account",group=~"$group",name=~"$name",name=~".*$sname.*"})by(instance)/86400

node_memory_MemTotal_bytes{vendor=~"$vendor",account=~"$account",group=~"$group",name=~"$name",name=~".*$sname.*"} - 0

PromQL语句在这三个地方点点点是能点出来的
在这里插入图片描述

在这里插入图片描述

3.拉取一台服务器日志(promtail+loki+grafana)

Promtail:相当于efk中的filebeat,采集日志发送给loki
Loki:相当于efk中的es,用于存储日志和处理查询
Grafana:相当于efk中的kibana,用于ui展示

Promtail日志采集器
服务器:所有被采集日志的服务器
目录:/usr/local/promtail
配置文件:promtail-local-config.yaml

server:   
  http_listen_port: 9080  # 监听端口
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml   # 读取了多少日志,会写在这个文件中
clients:
  - url: http://192.168.2.100:3100/loki/api/v1/push  # 传到loki的地址
scrape_configs:
- job_name: dev-java-spring   # 这个job的名称,可以通过写多个job_name来获取多个日志,并取不同的标签
  static_configs:
  - targets:  # 好像只能从本地找,不管怎么写 值都是localhost,应该是可以去掉的
      - 192.168.0.168-spring
    labels:
      job: 168-spring-java  # job的标签,grafana取的就是这个
      __path__: /usr/local/spring/*/nohup.out  # 读取日志的路径

loki 日志服务器
服务器: loki日志服务器,跟grafana放一台也行
目录:/usr/local/docker_loki
配置文件:loki-local-config.yaml ----配置一些基本的信息,ip 端口 数据存放路径

Grafana
服务器:
目录: /usr/local/docker_grafana
配置:配置数据源(从哪里获取的loki数据)
localhost:3000/datasources
在这里插入图片描述

在这里插入图片描述

日志收集展示流程:

	先由promtail收集日志并在配置文件中配置loki的地址传到loki上
	Loki基本上不用配置什么,配置日志数据存放位置
	Grafana配置data source,从loki中获取数据

测试:
在这里插入图片描述
在这里插入图片描述

添加监控日志
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

统计图:
在这里插入图片描述

图的类型都可以选,但是要加个时间范围限制Count over time,这样才能根据日志统计出访问量。

插入

Prometheus页面:ip:9090
Prometheus监控概念:Prometheus本身可以接收客户端提供的各种数据,比如/根分区使用量、内存使用量等基础的数据;
需要一下高级的数据,比如redis、mysql的连接状态,进程的活动状态等,有对应的process-exporter,相当于插件。
只需把端口暴露给Prometheus服务端,即可监控对应数据。而Prometheus可以使用数据做图表给grafana展示,还可以使用数据定义告警规则

4.Alert告警

Prometheus没有告警功能,但是它可以通过写规则rules来定义告警名称、级别,再通过告警管理工具alertmanager接收rules的告警名称、级别来触发告警。

在这里插入图片描述

该图为Prometheus定义的监控进程状态的规则rules,在prometheus.yaml中引用该规则,上文说过,prometheus.yaml也监听targets里设置的ip:端口,规则rules里所使用的参数比如namedprocess_namegroup_num_procs,则会获取监听targets里客户端的ip:9256端口为9256的机器

配置文件:/usr/local/prometheus/alert_rules/process_down.yml

groups:
- name: Allprocess
  rules:
  - alert: InproessDown
    expr: namedprocess_namegroup_num_procs < 1    #promeQL语句,获取监听参数的
    for: 1m
    annotations:   #描述,等会会用到
      title: "process down"
      description: 'server is shutdown .'  
    labels:
      severity: 'critical'   #告警级别

配置文件:prometheus.yml 添加

rule_files:
  - "rules/*.yaml"
  - "alert_rules/*.yaml"
  #读取rules配置文件

expr: namedprocess_namegroup_num_procs < 1 怎么理解,如图(Prometheus界面)
在这里插入图片描述
配好之后,重启Prometheus,就能在Prometheus界面的Alters看见告警信息了在这里插入图片描述
在grafana也能看
在这里插入图片描述
配置alert之后,其实它只会在页面中显示,并不会通知到我们,不能算是真正意义上的告警,要想实现告警,我们还需一个工具alertmanager

5.alertmanager

alertmanager的作用:暴露端口,使得Prometheus可以将alert信息传给它,再通过配置的webhook,实现短信、钉钉、电话等告警

官网地址:https://prometheus.io/download/
Prometheus官网,下面就有alertmanager

alertmanager配置文件:/usr/local/alertmanager/alertmanager.yml

global:
  resolve_timeout: 5m

route:
  group_by: ['alertname','severity','namespace']   #这些是rules中的描述,告警名称、级别、命名空间
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 10h
  receiver: 'prometheusalert-phone'
  routes:
  - receiver: 'prometheusalert-phone'
    group_wait: 10s
    match:
      level: '1'
    group_interval: 15s
    repeat_interval: 10h
receivers:
- name: 'prometheusalert-phone'
  webhook_configs:
   #这是webhook的接口地址,在下文中配置prometheusalert获取。该url是发送一个请求,即接收到告警触发webhook
   #可以配置多个url,实现发送钉钉,发送邮件以及发送短信
  - url: 'http://192.168.1.5:8800/prometheusalert?type=alydx&tpl=ali-phone&phone=xxxxxx' 
    send_resolved: true

Prometheus配置文件添加

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
      - targets:
        - 192.168.1.5:9093

在Prometheus添加Alertmanager位置参数,把告警传给alertmanager
添加完成之后,可以在Prometheus页面的status中的configuration查看
在这里插入图片描述

6.webhook

1、webhook的url可以由开发提供,开发根据阿里云等服务商短信服务提供的api接口,实现短信服务的发送
2、当然最简单的方法就是用官方的PrometheusAlert

Prometheus Alert 是开源的运维告警中心消息转发系统,支持主流的监控系统 Prometheus,日志系统 Graylog 和数据可视化系统 Grafana 发出的预警消息。通知渠道支持钉钉、微信、华为云短信、腾讯云短信、腾讯云电话、阿里云短信、阿里云电话等。

  • PrometheusAlert 特性
    1.支持多种消息来源,目前主要有prometheus、graylog2、graylog3、grafana。
    2.支持多种类型的发送目标,支持钉钉、微信、腾讯短信、腾讯语音、华为短信。
    3.针对Prometheus增加了告警级别,并且支持按照不同级别发送消息到不同目标对象。
    4.简化Prometheus分组配置,支持按照具体消息发送到单个或多个接收方。
    5.增加手机号码配置项,和号码自动轮询配置,可固定发送给单一个人告警信息,也可以通过自动轮询的方式发送到多个人员且支持按照不同日期发送到不同人员。
    6.增加 Dashboard,暂时支持测试配置是否正确 部署方法 PrometheusAlert 可以部署在本地和云平台上,支持windows、linux、公有云、私有云、混合云、容器和kubernetes。
  • 部署方法 PrometheusAlert 可以部署在本地和云平台上,支持windows、linux、公有云、私有云、混合云、容器和kubernetes。

这段描述转载原文链接:https://blog.csdn.net/weixin_49566876/article/details/128930481

PrometheusAlert官网:https://github.com/feiyu563/PrometheusAlert

根据github文档下载部署PrometheusAlert

配置文件为./conf/app.conf
里面每一条参数都有注释

配置文件的配置就是各种告警的接口填写,钉钉、微信机器人的webhook,短信云服务商的api接口,邮箱的配置等

通过配置文件app.conf配置的端口,直接ip:端口进入
webhook url获取
在这里插入图片描述

其中的AlertTemplate里面的路径就是我们在altermanager配置文件webhook所填的url

在配置文件中配置完接口,还能通过页面中test进行测试
在这里插入图片描述

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
答:以下是一个示例的docker-compose.yml文件,用于启动PrometheusGrafana来监控一个或多个应用程序: ``` version: '3' services: prometheus: image: prom/prometheus container_name: prometheus ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' restart: always grafana: image: grafana/grafana container_name: grafana depends_on: - prometheus ports: - "3000:3000" environment: GF_SERVER_ROOT_URL: http://localhost:3000 GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin volumes: - ./grafana-data:/var/lib/grafana restart: always ``` 在该docker-compose.yml文件中,我们创建了两个服务:prometheusgrafanaPrometheus服务使用Prometheus Docker映像,并将端口映射到9090。它还将/prometheus.yml文件作为挂载卷传递给容器。在启动容器时,我们使用命令行参数来指定/config.file=/etc/prometheus/prometheus.yml。 Grafana服务程序使用Grafana Docker映像,并依赖于prometheus服务。Grafana服务映射端口3000,并将以下环境变量传递给容器:GF_SERVER_ROOT_URL:使用localhost:3000 (在该容器中内部)作为grafana的根URL,GF_SECURITY_ADMIN_USER和GF_SECURITY_ADMIN_PASSWORD管理Grafana管理员的凭据。此服务还挂载了grafana-data目录,以便可以在重启容器时保留所有Grafana的设置。 最后,我们定义了restart: always参数以确保容器在退出时自动重新启动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值