Docker Prometheus(普罗米修斯)监控系统+grafana可视化

2023-05-16

目录

    • 一. Prometheus 概述
      • 1. 概述
      • 2. 监控系统作用及Prometheus的特点
      • 3. Prometheus 基本服务与作用
      • 4. 概念
    • 二. Prometheus exporter cadvisor 的部署
      • 1. docker部署prometheus
      • 2. prometheus.yml 模板
      • 3. 监控目标
      • 4. 通过exporter搜集主机服务资源接口
      • 5. 通过cAdvisor搜集容器资源使用信息
      • 6. 修改pometheus配置文件
    • 三. Grafana做可视化展示
      • 1. Grafana
      • 2. 效果
      • 3. grafana密码忘记问题
      • 4. 数据源扩展问题与grafana目录结构

一. Prometheus 概述

无监控不运维~

1. 概述

prometheus自16年k8s托管以来,几乎是容器技术应用的最广的监控系统,除了普罗米修斯,还有zabbix(图形界面友好,成熟,分级) 等 成熟的监控系统。

官方:
https://prometheus.io/
https://github.com/prometheus

2. 监控系统作用及Prometheus的特点

  • 装逼(给老板看)
  • 业务持续性(及时预警,监控)
  • 多维数据模型:由度量名称和键值对标识的时间序列数据 TSDB
  • PromQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
  • 不依赖分布式存储,单个服务器节点可直接工作
  • 基于HTTP的pull方式采集时间序列数据
  • 推送时间序列数据通过PushGateway组件支持
  • 通过服务发现或静态配置发现目标
  • 多种图形模式及仪表盘支持(grafana)

3. Prometheus 基本服务与作用

在这里插入图片描述

主要服务作用
Prometheus Server收集指标和存储时间序列数据,并提供查询接口
ClientLibrary客户端库
Push Gateway短期存储指标数据。主要用于临时性的任务
Exporters采集已有的第三方服务监控指标并暴露metrics
Alertmanager告警
Web UI简单的Web控制台

左边的采集,中间服务,右边展示

4. 概念

实例(被监控端 Instances)
作业(实例的集合 Job)

二. Prometheus exporter cadvisor 的部署

官方文档:
https://prometheus.io/docs/prometheus/latest/installation/

Prometheus支持二进制,docker等部署方式

1. docker部署prometheus

配置文件需要自己写的

$ docker container run -itd -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

2. prometheus.yml 模板

配置文件模板

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

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

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

  - job_name: "docker"
    static_configs:
    - targets: ['ip:8080']

  - job_name: "Cenots7"
    static_configs:
    - targets: ['ip:9100']

这是Prometheus自带的一个界面,通常用于 测试

在这里插入图片描述

3. 监控目标

  • 容器服务
  • 主机服务

容器的监控指标概念
内存,cpu,硬盘,网络,状态

主机服务监控指标
一般使用 exporter 来监控主机服务
https://github.com/prometheus/node_exporter/

$ docker stats --no-stream 452f0102c634
$ docker stats --no-stream 452f0102c634 |awk '{print $3}'
主机业务
主机一做nginx容器,和 cAdvisor 采集,做主机服务,和 exporter 的采集
主机二做pometheus监控(通过cAdvisor,exporter ),和Grafana可视化

4. 通过exporter搜集主机服务资源接口

因为主机监控的特殊性,官方不建议用docker监控主机服务,所以采用二进制本地安装
在这里插入图片描述
下载exporter二进制文件安装

$ wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
$ tar -zxvf node_exporter-0.17.0.linux-amd64.tar.gz
$ mv node_exporter-0.17.0.linux-amd64 /usr/local/node_exporter

systemctl service 服务
systemctl service在两个目录中:
/etc/systemd/system
/usr/lib/systemd/system
一般自己创建的service 直接放在 /etc/systemd/system 之中

$ vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=https://prometheus.io

[Service]
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter

[Install]
WantedBy = multi-user.target
$ systemctl start node_exporter

node_exporter暴露一个9100端口

访问即可得到指标

在这里插入图片描述

5. 通过cAdvisor搜集容器资源使用信息

官方:
https://github.com/google/cadvisor
https://grafana.com/grafana/download

cadvisor通过容器运行,通过本地映射。
这个是官方的文档,但这个下载链接是被墙了的

$ VERSION=v0.36.0 # use the latest release version from https://github.com/google/cadvisor/releases
$ sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/google-containers/cadvisor:$VERSION

所以一般先在国内拉取cadvisor,在进行容器的创建。

$ docker container run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/dock er:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest

在这里插入图片描述
在这里插入图片描述

http://192.168.43.14:8080/metrics 暴露数据指标(接口),但cadvisor只负责采集,不负责存储,所以需要配合Prometheus

6. 修改pometheus配置文件

重启pometheus容器

在这里插入图片描述

在这里插入图片描述

数据也有了

在这里插入图片描述

三. Grafana做可视化展示

1. Grafana

Grafana的部署很简单,是一个纯静态的系统,拉取镜像暴露一个端口即可,

$ docker pull grafana/grafana
$ docker container run -d --name=grafand -p 3000:3000 grafana/g rafana

默认账号密码 admin

社区有教程美化Grafana ,有需求可以看一下
https://grafana.com/tutorials/grafana-fundamentals/?utm_source=grafana_gettingstarted#2

在这里插入图片描述
通过自己画或者社区导入自己喜欢的仪表盘
https://grafana.com/grafana/dashboards

推荐id:
nginx:193
linux:9276,8919

在这里插入图片描述

2. 效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. grafana密码忘记问题

修改数据库默认密码,user:admin pass:admin

$ update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'admin';

在这里插入图片描述

修修改后登录更改新密码

在这里插入图片描述

4. 数据源扩展问题与grafana目录结构

grafana自带的数据源不能满足部分需求,社区提供绝大多数数据源的安装接口

在这里插入图片描述

$ docker container exec -it dc5683c985b3 /bin/bash

在这里插入图片描述
自行导入重启即可

$ grafana-cli plugins install fastweb-openfalcon-datasource

在这里插入图片描述

grafana 目录结构

安装目录
/usr/share/grafana/
grafana-cli 路径
/usr/share/grafana/bin/grafana-cli
全局配置文件
/etc/grafana/grafana.ini
默认配置文件
/usr/share/grafana/conf/defaults.ini
plugins 安装目录
/var/lib/grafana/plugins/
默认数据存储文件路径
/var/lib/grafana/grafana.db
日志文件存储路径
/var/log/grafana/
邮件默认发送模板路径
/usr/share/grafana/public/emails/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker Prometheus(普罗米修斯)监控系统+grafana可视化 的相关文章

随机推荐

  • C++学习笔记 之 数组使用注意事项(持续补充ing)

    我是目录 在不知道数组长度时 xff0c 想要声明数组 数组名相当于指针常量 xff08 即 type const xff09 数据名在作为函数的参数时将失去其数据结构内涵 在不知道数组长度时 xff0c 想要声明数组 xff08 例如想要
  • C++学习笔记 之 常量指针与指针常量

    常量指针 形式 xff1a const int pt 特点 xff1a 防止通过该指针修改指向的值 指针的指向可以改 Int age 61 23 Const int pt 61 amp age 表明 pt 的值不能被修改 xff0c 或者说
  • Pytorch学习笔记 之 主体训练流程

    目录 数据读取部分DatasetDataLoader 模型训练优化器设置损失函数设置设备设置模型训练保存 加载模型 数据读取部分 pytorch官方文档链接 xff1a 这里 Dataset 数据类 xff0c 需要自己实现 xff0c 后
  • C++学习笔记 之 lower_bound & upper_bound

    用于查找有序序列中目标值的上下界 使用时需要包含头文件 include lt algorithm gt 内部实现是二分查找 xff0c 时间复杂度为 O l o g n
  • Git 学习笔记

    目录 教程链接常用命令 教程链接 廖雪峰Git教程 Git官方教程 常用命令 工程准备 git init git clone 新增 删除 移动文件到暂存区 git add git rm git mv 查看工作区 git diff git s
  • 对vector元素取址 时出现的问题

    一般不建议对vector里的元素进行取址 xff0c 除非vector已经填充完毕 xff0c 即size不再变化时才可取址 因为如果vector未填充完毕时 xff0c 此时把某一元素地址赋给一个指针p xff0c 后续如果对vector
  • maskrcnn_benchmark使用过程 错误记录

    在使用maskrcnn的benchmark框架的时候训练突然报错 xff1a Non existent config key MODEL ROI BOX HEAD NUM CLASSES 39 之前还能正常运行的 xff0c 突然就报错 x
  • CMakeLists.txt书写规则记录

    编写自己的CMakeLists txt 1 一个CMakeLists txt的基本内容2 项目包含多个文件或文件夹时添加方式3 添加链接库 1 一个CMakeLists txt的基本内容 span class token comment 编
  • 1-FreeRTOS入门指南

    本专栏是根据官方提供的文档进行FreeRTOS的各个功能函数的说明 xff0c 以及函数的使用 本专栏不涉及动手操作 xff0c 只是对原理进行说明 xff0c FreeRTOS基础知识篇更新完成会对如何在开发板上进行上手实战操作 这里不会
  • 2-FreeRTOS编码标准、风格指南

    1 编码标准 FreeRTOS源文件 对所有端口通用 xff0c 但对端口层不通用 符合MISRA编码标准指南 使用pc lint和链接lint配置文件检查遵从性 由于标准有很多页长 xff0c 并且可以从MISRA处以非常低的费用购买 x
  • 4-FreeRTOS队列、互斥、信号量

    1 队列 队列 xff08 我对队列的理解就是上体育课 xff0c 排队这种 xff09 是任务之间通信的一种方式 队列可以用于任务和任务之间或者中断和任务之间消息的接收与发送 在多数情况下 xff0c 他们消息缓冲是按照FIFO xff0
  • QT教程demo之串口助手代码设计实现

    关注WeChat Official Account 南山府嵌入式获取更多精彩 我创建了一个群关注V号后加入 因为这里不允许添加二维码 代码 xff1a QT Pr 1 QT开发串口助手需要的基本文件 在QT6开发串口助手时 xff0c 通常
  • 自己动手写全套无人驾驶算法系列(四)机器人2D SLAM

    自己动手写全套无人驾驶算法系列 xff08 四 xff09 机器人2D SLAM 目录 一 概述 1 1 系列整体概述 二 传感器层 2 1 轮式里程计 2 2 IMU 2 3 激光雷达 2 4 视觉VO 三 建图层 3 1 静态二值贝叶斯
  • 深入理解如何不费吹灰之力搭建一个无人驾驶车(一)2D-小车底盘部分

    一 搭建综述 无人驾驶最新很流行 xff0c 但是很多人都觉得这东西蛮高大上的 xff0c 因为CSDN还没有一个完整的介绍无人驾驶车如何做的博文 xff0c 都很零散或者简略 其实有了ROS xff0c 这东西一个小学生都可以搭 xff0
  • 深入理解如何不费吹灰之力搭建一个无人驾驶车(五)2.5D-汽车自主部分(从无到有自己写一个主流无人驾驶框架如apollo)(CSDN独创)

    五 从无到有自己动手写个主流无人驾驶汽车框架 xff08 如apollo xff09 xff08 CSDN独创 xff09 注1 xff1a 必须先看完前四章再看这一章 xff0c 如果想看得轻松请看 概率机器人 与 机器人学状态估计 完再
  • ORB_SLAM系列总结

    1 最早的特征点法 xff0c 并把定位与跟踪分为两个线程是PTAM Parallel Tracking and Mapping for Small AR Workspaces 可以说是特征点法SLAM的起源之一 论文 xff1a http
  • vmware下ubuntu18.04 安装ROS Melodic+gazebo9+PX4并roslaunch运行+QGroundConrtol控制

    官方推荐ubuntu18 04的对应ROS和gazebo版本为ROS Melodic 和 gazebo9 官方指导 xff1a ROS安装 xff1a http wiki ros org Installation Ubuntu gazebo
  • PX4自定义pkg包roslaunch

    创建pkg 首先在Ros工程目录src下 xff0c 创建新的功能包ref catkin create pkg span class token operator lt span pkg name span class token oper
  • PyTorch中FLOPs计算问题

    最近看了很多关于FLOPs计算的实现方法 xff0c 也自己尝试了一些方法 xff0c 发现最好用的还是PyTorch中的thop库 xff08 代码如下 xff09 xff1a device 61 torch device 34 cuda
  • Docker Prometheus(普罗米修斯)监控系统+grafana可视化

    目录 一 Prometheus 概述1 概述2 监控系统作用及Prometheus的特点3 Prometheus 基本服务与作用4 概念 二 Prometheus exporter cadvisor 的部署1 docker部署prometh