Prometheus监控报警+Grafana loki日志聚合系统

news2024/11/19 19:42:40

Prometheus监控报警+Grafana loki日志聚合系统

参考文档

https://blog.csdn.net/m0_57480266/article/details/121190725?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121190725-blog-111992382.235%5Ev32%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121190725-blog-111992382.235%5Ev32%5Epc_relevant_default_base3&utm_relevant_index=2
https://www.yuque.com/fcant/sys/pxoiwq
https://www.cnblogs.com/zydev/p/16768810.html

image-20230427141657371

Prometheus的特点

- 多维度数据模型。
- 灵活的查询语言。
- 不依赖分布式存储,单个服务器节点是自主的。
- 通过基于HTTP的pull方式采集时序数据。
- 可以通过中间网关进行时序列数据推送。
- 通过服务发现或者静态配置来发现目标服务对象。
- 支持多种多样的图表和界面展示,比如Grafana等。

主要组件:

Prometheus server: 用于收集和存储时间序列数据
exporter: 客户端生成监控指标
Alertmanager: 处理警报
Grafana: 数据可视化和输出
Pushgateway:主动推送数据给Prometheus server

拉取镜像

服务器选择 192.168.31.241

docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana       

编辑prometheus配置文件

mkdir /etc/prometheus
vim /etc/prometheus/prometheus.yml

/etc/prometheus/prometheus.yml

# 全局配置
global:
  scrape_interval: 15s
  evaluation_interval: 15s
  # scrape_timeout is set to the global default (10s).
# 告警配置
alerting:
  alertmanagers:
    - static_configs:
        - targets: ['192.168.1.200:9093']
# 加载一次规则,并根据全局“评估间隔”定期评估它们。
rule_files:
  - "/etc/prometheus/rules.yml"
# 控制Prometheus监视哪些资源
# 默认配置中,有一个名为prometheus的作业,它会收集Prometheus服务器公开的时间序列数据。
scrape_configs:
  # 作业名称将作为标签“job=<job_name>`添加到此配置中获取的任何数据。
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:
      - targets: ['ip:9100']
        labels:
          env: dev
          role: docker

注意:修改IP地址,这里的ip就是本机地址

image-20230427144035838

2.3 编辑告警规则文件

/etc/prometheus/rules.yml

groups:
- name: example
  rules:
 # Alert for any instance that is unreachable for >5 minutes.
  - alert: InstanceDown
    expr: up == 0
    for: 1m
    labels:
      serverity: page
    annotations:
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."

image-20230427144105356

2.4 编辑告警配置文件

/etc/alertmanager/alertmanager.yml

global:
  resolve_timeout: 5m
  smtp_smarthost: 'xxx@xxx:587'
  smtp_from: 'zhaoysz@xxx'
  smtp_auth_username: 'xxx@xxx'
  smtp_auth_password: 'xxxx'
  smtp_require_tls: true
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'test-mails'
receivers:
- name: 'test-mails'
  email_configs:
  - to: 'scottcho@qq.com'

2.5 编辑docker-compose

/docker-compose/prometheus/docker-compose.yml

services:
  prometheus:
   image: prom/prometheus
   volumes:
     - /etc/prometheus/:/etc/prometheus/
     - prometheus_data:/prometheus
   command:
     - '--config.file=/etc/prometheus/prometheus.yml'
     - '--storage.tsdb.path=/prometheus'
     - '--web.console.libraries=/usr/share/prometheus/console_libraries'
     - '--web.console.templates=/usr/share/prometheus/consoles'
     - '--web.external-url=http://192.168.31.241:9090/'
     - '--web.enable-lifecycle'
     - '--storage.tsdb.retention=15d'
   ports:
     - 9090:9090
   links:
     - alertmanager:alertmanager
   restart: always
  alertmanager:
   image: prom/alertmanager
   ports:
     - 9093:9093
   volumes:
     - /etc/alertmanager/:/etc/alertmanager/
     - alertmanager_data:/alertmanager
   command:
     - '--config.file=/etc/alertmanager/alertmanager.yml'
     - '--storage.path=/alertmanager'
   restart: always
  grafana:
   image: grafana/grafana
   ports:
     - 3000:3000
   volumes:
     - /etc/grafana/:/etc/grafana/provisioning/
     - grafana_data:/var/lib/grafana
   environment:
     - GF_INSTALL_PLUGINS=camptocamp-prometheus-alertmanager-datasource
   links:
     - prometheus:prometheus
     - alertmanager:alertmanager
   restart: always

volumes:
  prometheus_data: {}
  grafana_data: {}
  alertmanager_data: {}

2.6 启动composer#

docker-compose up -d

2.7 访问端点#

  • http://localhost:9090 Prometheus server主页
  • http://localhost:9090/metrics Prometheus server自身指标
  • http://192.168.0.80:3000 Grafana

image-20230427151116335

三、 添加监控主机Job

3.1 安装Node_Export

如果需要多个就安装多个

node_export用于采集主机信息,本质是一个采用http的协议的api

RedHat家族的操作系统可以采用yum进行安装

启动node-exporter

  docker run -d -p 9100:9100 \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  prom/node-exporter

访问http://ip:9100/metrics

如下就是node-exporter作为agent收集到的可展示数据。

image-20230427151957804

访问targets,url如下:

http://ip:10050/targets   

image-20230427153542781

启动grafana

访问首页

http://192.168.31.236:30030 admin 123456
我这里用的k8s的运维大盘,我自己搭建的,都是内网服务器是可以通信的

添加数据源

image-20230427153900662

监测服务器负载配置

create->import填入8919模板引擎,选择prometheus数据源,就能加载出服务器负载到主页

image-20230427155733881

image-20230427155716144

image-20230428151318157

轻量级日志分析平台Loki搭建

img

Loki组成

  1. loki是主服务器,负责存储日志和处理查询。
  2. promtail是代理,负责收集日志并将其发送给 loki 。
  3. Grafana用于 UI 展示。

使用docker部署

下载yaml文件

wget https://raw.githubusercontent.com/grafana/loki/v2.2.0/production/docker-compose.yaml -O docker-compose.yaml
version: "3"

networks:
  loki:

services:
  loki:
    image: grafana/loki:2.0.0
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - loki

  promtail:
    image: grafana/promtail:2.0.0
    volumes:
      - /var/log:/var/log
    command: -config.file=/etc/promtail/config.yml
    networks:
      - loki

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    networks:
      - loki

image-20230428094508234

启动服务
image-20230428094841202

5、配置服务

http://192.168.106.202:3000/

默认granfna密码admin/admin,已经改成123456

5.1 配置数据源

image-20230428095118676

配置ip和默认数据源,配置完成点击测试/保存

image-20230428095139532

5.2 配置数据源

explore 查询样例

image-20230428095158235

5.3 输出匹配日志信息

image-20230428095222980

至此一次样例日志查询完成

6、promtail配置详解

promtail容器为日志采集容器,配置文件在promtail容器/etc/promtail/config.yml,将该容器部署在需要采集日志的服务器上就能正常采集日志传回loki服务收集整理

root@2a0cc144dd58:/# cat /etc/promtail/config.yml
server:
  http_listen_port: 3101
  grpc_listen_port: 0

positions:
  filename: /run/promtail/positions.yaml

clients:
  - url: http://192.168.31.241:3100/loki/api/v1/push     #这里配置的地址为loki服务器日志收集的信息

scrape_configs:
- job_name: nginx-two
  static_configs:
  - targets:
      - localhost
    labels:
      job: nginx-2                          #这里为刚才选择job下子标签
      __path__: /front/nginx/logs/*.log     #将采集的日志放在/var/log/*log下自动发现

image-20230428095954956

7.2 编写docker-compose.yaml配置文件

version: "v1"
services:
  promtail:
    image: grafana/promtail:2.0.0
    container_name: promtail-node
    volumes:
      - /promtail/config.yml:/etc/promtail/config.yml
      - /front/nginx/logs/:/front/nginx/logs/           #挂载目录日志目录要挂载进去
      - /run/promtail:/run/promtail        
    ports:
      - 3101:3101 

增加一台服务器日志采集

7.1 编写promtail的配置文件config.yml

mkdir /root/promtail &&cd /root/promtail

[root@node2 promtail]# cat config.yml 
server:
  http_listen_port: 3101
  grpc_listen_port: 0

positions:
  filename: /run/promtail/positions.yaml

clients:
  - url: http://192.168.31.241:3100/loki/api/v1/push 

scrape_configs:
- job_name: nginx-two
  static_configs:
  - targets:
      - localhost
    labels:
      job: nginx-2
      __path__: /front/nginx/logs/*.log 

- job_name: measureback 
  static_configs:
  - targets:
      - localhost
    labels:
      job: measureback 
      __path__: /beehooo/log/*.log 

image-20230427163730846

7.2 编写docker-compose.yaml配置文件

version: "v1"
services:
  promtail:
    image: grafana/promtail:2.0.0
    container_name: promtail-node
    volumes:
      - /promtail/config.yml:/etc/promtail/config.yml
      - /beehooo/log/:/beehooo/log/ 
      - /front/nginx/logs/:/front/nginx/logs/ 
      - /run/promtail:/run/promtail        
    ports:
      - 3101:3101  

image-20230427163849135

最终结果
-PVzf4SbL-1683535304402)]

7.2 编写docker-compose.yaml配置文件

version: "v1"
services:
  promtail:
    image: grafana/promtail:2.0.0
    container_name: promtail-node
    volumes:
      - /promtail/config.yml:/etc/promtail/config.yml
      - /beehooo/log/:/beehooo/log/ 
      - /front/nginx/logs/:/front/nginx/logs/ 
      - /run/promtail:/run/promtail        
    ports:
      - 3101:3101  

[外链图片转存中…(img-9TlWpf3e-1683535304403)]

最终结果
image-20230428140132368

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二十一、线索转换3:线索的备注转化为客户联系人的备注

功能需求 3.线索的备注信息--》客户备注 4.线索的备注---》联系人备注 5.线索市场活动关系---》联系人市场活动关系 流程图 代码实现&#xff1a;线索的备注转化为客户联系人的备注 1.clueRemarkMapper /*** 根据线索id 查询备注2*/List<ClueRemark> selectInitialC…

Windows本地MySQL升级

一、删除原来的MySQL 删除 C:\Programs Files、C:\Programs Files(x86)、C:\ProgramData 中的所有MySQL目录 找到MySQL数据库中的data保存到其他位置&#xff0c;升级后可以恢复数据库数据 【备份数据】 删除注册表中MySQL的信息 计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet…

Py01·环境搭建

Python环境搭建 官网下载python3.7.3&#xff1a;https://www.python.org/downloads/release/python-373/ 配置系统环境变量目录&#xff1a; E:\ldtools\python3.7.3\python.exe E:\ldtools\python3.7.3\Scripts\pip.exe python.exe 运行环境 pip.exe 包管理器 安装mysql环…

TypeScript 最近各版本主要特性总结

&#xff08;在人生的道路上&#xff0c;当你的期望一个个落空的时候&#xff0c;你也要坚定&#xff0c;要沉着。——朗费罗&#xff09; TypeScript 官网 在线运行TypeScript代码 第三方中文博客 特性 typescript是javascript的超集&#xff0c;向javascript继承额外的编辑…

K8s之Namespace名称空间详解

文章目录 一、名称空间概念二、名称空间基本操作1、创建Namespace的两种方式2、Namespace资源限额 一、名称空间概念 K8s中文手册&#xff1a; K8s名称空间中文官方手册&#xff1a; Kubernetes 支持多个虚拟集群&#xff0c;它们底层依赖于同一个物理集群。 这些虚拟集群被…

UUID使用

1.UUID是什么&#xff1f; UUID 是指&#xff08;Universally Unique Identifier&#xff09;通用唯一识别码&#xff0c;128位。RFC 4122描述了具体的规范实现。 2.UUID解决问题&#xff1f; 分库分表后自增Id重复问题。 3.UUID作用&#xff1f; UUID 的目的是让分布式系…

[数据库系统] 一、创建表以及使用主键约束(educoder)

1.任务&#xff1a;在数据库中创建一个表。 2.需要掌握&#xff1a; 如何在指定数据库中创建表。 知识点&#xff1a;如何在指定数据库中创建表。 我们先来了解一下在数据库中创建表的规则&#xff1a; CREATE TABLE 表名(字段名,数据类型,字段名,数据类型,.....) 例如&…

Oracle 体系结构

文章目录 Oracle体系结构Oracle的内存结构Oracle的进程结构服务器进程后台进程可选后台进程 物理存储结构逻辑存储结构 概念&#xff1a; Oracle server由Oracle instance和Oracle database组成&#xff0c;Oracle instance由后台进程和共享内存组成&#xff0c;Oracle的实例包…

《走进对象村4》之面向对象的第一大特性——封装

文章目录 &#x1f680;文章导读1、封装的概念2、访问限定修饰符3、如何进行封装4、封装的优点&#xff1a; &#x1f680;文章导读 在本篇文章中&#xff0c;将详细的对封装进行总结&#xff0c;文章仅仅是个人的一些理解&#xff0c;如果有错误的地方&#xff0c;还望指出看完…

八岁都能懂:O(N)条件下在N个元素中找出第K小的元素

目录 1 进入情境1-1 金字塔道具1-2 感觉还不够1-3 万能筛子1-4 怎么用呢 2 代码实现2-1 伪代码描述2-2 完整实例c 3 引申3-1 完美的折半舍弃3-2 找出前K小的元素(topK方法&#xff09;3-3 O(n)效率下求中位数参考资料 1 进入情境 生日&#xff0c;朋友送了一堆弹珠&#xff0c;…

[PyTorch][chapter31][卷积]

前言&#xff1a; 卷积神经网络 是 计算机视觉里面应用非常广泛的一个模型。 卷积神经网络 成功案例 人脸识别,指纹识别等应用. 卷积的本质是图像的特征提取&#xff0c; 在冈萨雷士版本《数字图像处理》处理有专门的章节讲解 各种卷积核&#xff0c;在通讯原理里面&#xff0…

MOD09A1、MYD09A1 文件说明

总体介绍 文件全称为 MODIS Terra/Aqua Surface Reflectance 8-Day L3 Global 500 m。文件名称的示例为 “MOD09A1.A2000337.h11v05.005.2006342055602.hdf”。下载下来的 hdf 包括 13 个子数据集&#xff0c;一个 tile 包括 2400*2400 个像元。各数据集的性质如下表所示。 Sci…

51单片机基础实验1

一.51单片机 51单片机&#xff0c;也称为AT89C51&#xff0c;是一种基于Intel 8051架构的8位单片机。它是广泛应用于嵌入式系统和微控制器领域的常见芯片之一。其具有高度灵活性、可编程性和可靠性&#xff0c;因此被广泛应用于各种应用场景中。 51单片机的主要特点包括&…

三十、组播技术——IGMP、IGMP-snooping、PIM-DM、PIM-SM

文章目录 组播概述1、IP组播通信概念2、组播和单播ip地址3、组播MAC4、组播应用场景5、PIM、IGMP、IGMP-snooping 一、IGMP 协议二、PIM DM&#xff08;密集模式&#xff09;1、配置示例如下&#xff1a;2、PIM DM的局限性 三、PM SM&#xff08;稀疏模式&#xff09; 组播概述…

【python学习】基础篇-文件与系统-os 模块及 os.path 相对路径与绝对路径

在 Python 中&#xff0c;内置了os 模块及其子模块 ospath&#xff0c;用于对目录或文件进行操作。 在使用 os 模块或者 os.path 模块时&#xff0c;应首先使用 import 语句将其导入&#xff0c;然后才可以使用它们提供的函数或方法。 1、常用操作目录函数 2.相对路径与绝对路…

如何手写一个支持H.265的高清播放器

概述 音视频编解码技术在当前的互联网行业中十分热门&#xff0c;特别是高清视频播放器的开发&#xff0c;其中包括4K、8K等超高清分辨率的播放器&#xff0c;具有极高的市场需求和广泛的应用场景。H265编码技术更是实现高清视频压缩的重要手段之一。如果想要掌握音视频编解码…

微服务部署:蓝绿发布、滚动发布、灰度发布、金丝雀发布

前言 在项目迭代的过程中&#xff0c;不可避免需要上线。上线对应着部署&#xff0c;或者重新部署&#xff1b;部署对应着修改,修改则意味着风险。 1.蓝绿发布(Blue/Green Deployment) ①定义 蓝绿部署是不停老版本&#xff0c;部署新版本然后进行测试。确认OK后将流量切到新…

ADSP21489之CCES开发笔记(十一)

一、主模式固件加载&#xff1a; 1、激活SPICLK信号&#xff0c;并将SPI_FLG0_O引脚拉低。 2、将读取命令0x03和24位地址0x000000写入从设备。如图24-4所示。 图24-4 二、PCAG时钟选择与配置。 1、来源晶振 2、来源Pin脚 其中来源Pin脚配置PCAG时&#xff0c;需将PCG_CTLx1上加…

如何生成api接口获取宝贝商品详情,商品详情接口,产品详情

API (Application Programming Interface)是指应用程序接口&#xff0c;它是一种通过编写一组统一的规则&#xff0c;开发一个软件来与其他应用程序进行通讯的技术。API可以方便应用程序之间的交流和数据共享&#xff0c;以及增强应用程序的功能。 在现代应用程序中&#xff0…

23.自定义指令

像是 v-if,v-for,v-model 这些是官方指令&#xff0c;vue允许开发者自定义指令 目录 1 mounted 1.1 基本使用 1.2 第一个形参 1.3 第二个形参 2 updated 3 函数简写 4 全局自定义指令 1 mounted 当指令绑定到元素身上的时候&#xff0c;就会自动触发mounted()…