使用docker-compose搭建Prometheus+Grafana监控系统

news/2023/6/8 0:22:55

一、角色分配

  1. Prometheus 采集数据
  2. Grafana 用于图表展示
  3. redis_exporter 用于收集redis的metrics
  4. node-exporter 用于收集操作系统和硬件信息的metrics
  5. cadvisor 用于收集docker的相关metrics

二、安装Docker

可以参考:https://ximeneschen.blog.csdn.net/article/details/104923157

三、安装Docker-Compose

参考:https://ximeneschen.blog.csdn.net/article/details/125651027

四、部署Prometheus和Grafana

  1. 新增Prometheus配置文件

首先,创建/data/prometheus/目录,然后创建prometheus.yml,填入如下内容:

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: ['192.168.3.250:9093']# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:- "node_down.yml"# - "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: ['192.168.3.250:9094']- job_name: 'redis'static_configs:- targets: ['192.168.3.250:9121']labels:instance: redis- job_name: 'node'scrape_interval: 8sstatic_configs:- targets: ['192.168.3.250:9100']labels:instance: node- job_name: 'cadvisor'static_configs:- targets: ['192.168.3.250:8088']labels:instance: cadvisori#基于文件自动加载新监控任务- job_name: 'file_ds'file_sd_configs:- files: ['/etc/prometheus/reload/*.yml']refresh_interval: 5s
  1. 接着创建node_down.yml,添加如下内容:
groups:
- name: node_downrules:- alert: InstanceDownexpr: up == 0for: 1mlabels:user: testannotations:summary: "Instance {{ $labels.instance }} down"description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."
  1. 创建docker-compose
    继续在/data/prometheus/目录中创建docker-compose-prometheus.yml,添加如下内容:
version: '2'networks:monitor:driver: bridgeservices:prometheus:image: prom/prometheuscontainer_name: prometheushostname: prometheusrestart: alwaysvolumes:- /data/prometheus/reload:/etc/prometheus/reload- /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml- /data/prometheus/node_down.yml:/etc/prometheus/node_down.ymlports:- "9094:9090"networks:- monitorgrafana:image: grafana/grafanacontainer_name: grafanahostname: grafanarestart: alwaysports:- "3000:3000"networks:- monitorredis-exporter:image: oliver006/redis_exportercontainer_name: redis_exporterhostname: redis_exporterrestart: alwaysports:- "9121:9121"networks:- monitorcommand:- '--redis.addr=redis://192.168.3.250:6379'- '--redis.password=password'node-exporter:image: quay.io/prometheus/node-exportercontainer_name: node-exporterhostname: node-exporterrestart: alwaysports:- "9100:9100"networks:- monitormysql-exporter:image: prom/mysqld-exportercontainer_name: mysql-exporterhostname: mysql-exporterrestart: alwaysports:- "9104:9104"networks:- monitorenvironment:DATA_SOURCE_NAME: "user:password@(192.168.3.250:3306)/"cadvisor:image: google/cadvisor:latestcontainer_name: cadvisorhostname: cadvisorrestart: alwaysvolumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:roports:- "8088:8080"networks:- monitor
  • 使用下面的命令启动docker-compose定义的容器
docker-compose -f /data/prometheus/docker-compose-prometheus.yml up -d

输入如下内容即代表启动成功:

Creating network "prometheus_monitor" with driver "bridge"
Creating cadvisor       ... done
Creating prometheus     ... done
Creating node-exporter  ... done
Creating redis_exporter ... done
Creating grafana        ... done

也可通过docker ps命令查看是否启动成功。如果要关闭并删除以上5个容器,只需要执行如下命令即可:

docker-compose -f /data/prometheus/docker-compose-monitor.yml down

同样也会输出如下日志:

Stopping cadvisor       ... done
Stopping node-exporter  ... done
Stopping grafana        ... done
Stopping redis_exporter ... done
Stopping prometheus     ... done
Removing cadvisor       ... done
Removing node-exporter  ... done
Removing grafana        ... done
Removing redis_exporter ... done
Removing prometheus     ... done
Removing network prometheus_monitor

复制代码
打开 http://192.168.3.250:9090/targets ,如果State都是UP即代表Prometheus工作正常,如下图所示:
在这里插入图片描述

CentOS7的防火墙firewall将对应的端口添加到防火墙策略里:

firewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --zone=public --add-port=9121/tcp --permanent
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --reload

可通过如下命令查看端口策略是否已经生效

firewall-cmd --permanent --zone=public --list-ports

五、配置Grafana

打开http://192.168.3.250:3000, 使用默认账号密码admin/admin登录并修改密码后,默认进来是创建数据库的页面,在如下图所示中,选择Prometheus。
在这里插入图片描述

选择完成后,打开新的页面,在HTTP的URL中输入Prometheus的地址http://192.168.3.250:9094, 点击保存并测试。

在这里插入图片描述

使用Grafana模板进行数据展示,以Node-exporter为例子

在 https://grafana.com/grafana/dashboards 中搜索需要的Dashboard模版,并将其json文件下载下来。我本次主要监控node,于是只需要下载下面这个即可:
https://grafana.com/grafana/dashboards/17577-node-exporter-dashboard-22-04-17/
在Grafana菜单栏中第一个+号中,选择import

在这里插入图片描述
效果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

吉他指板上音符的几个把位

音阶是非常重要的&#xff0c;当我们演奏&#xff0c;即兴&#xff0c;编曲&#xff0c;创作的时候&#xff0c;都要时刻的明白我们需要哪些音符&#xff0c;而这些音符的位置在哪里。所以我们要非常熟练的记住指板的上的音符。然后6根弦最少21品的琴颈&#xff0c;死记硬背起来…

吉他 c大调第一把位

2019独角兽企业重金招聘Python工程师标准>>> 4根手指分别控制&#xff1a;食指&#xff1a;1品&#xff0c;中指&#xff1a;2品&#xff0c;无名指&#xff1a;3品&#xff0c;小指&#xff1a;无。 手指与音品 音弦对应位置 吉他所有的音阶及对应的品弦 do re mi …

SPSS分析技术:二阶聚类分析;为什么出现大学生“裸贷”业务,因为放贷者知道贷款者还不起...

SPSS分析技术&#xff1a;二阶聚类分析&#xff1b;为什么出现大学生“裸贷”业务&#xff0c;因为放贷者知道贷款者还不起 今天将介绍一种智能聚类法&#xff0c;二阶聚类法&#xff0c;在开始介绍之前&#xff0c;先解答很多人在后台提出的一个疑问&#xff1a;那就是很多分析…

IBM SPSS Modeler案例:信用风险评分方法

在现代社会中&#xff0c;信用对个人和企业都是无比重要的品质。无论是办理信用卡业务&#xff0c;开通国际长途业务&#xff0c;还是获取大额融资额度&#xff0c;都跟你的信用级别挂钩。那么应该如何评价个人或者企业的信用情况&#xff1f;也许可以使用决策树或者神经网络等…

合宙ESP32S3 CameraWebServe 测试demo

合宙ESP32S3 CameraWebServe 合宙ESP32S3 CameraWebServe测试&#xff0c;我们需要一个OV2640的摄像头模组用来采集图像传输给ESP32的&#xff0c;这里使用的OV2640是之前安信可十周年的白嫖的。现在直接插到合宙ESP32S3开发板&#xff0c;简直完美。还是白嫖好&#xff01;&a…

这个柱状和折线组合图,画的完美!

下面的图我打磨三天&#xff0c;全部使用Python绘制。这类图的完整使用方法&#xff0c;我已录制为视频&#xff0c;并上传到我的视频号&#xff0c;想要完整源码的&#xff0c;长按两秒关注我的视频号&#xff0c;然后私信或微信我。拿到源码后&#xff0c;你可以将它用在项目…

微信小程序echart 折线图legend不显示的问题

最近使用小程序echart折线图&#xff0c;遇到表头一直不显示问题&#xff0c;查询之后解决方案&#xff1a; 转载于:https://www.cnblogs.com/bing0709/p/10457076.html

uniapp中使用ucharts图表,饼状图,柱状图,折线图

好久没写笔记了&#xff0c;总结下最近在项目中遇到的问题&#xff0c;首先就是如何在uniapp中构建图表&#xff0c;之前做pc端用的Echarts, 后来Echarts为了满足微信小程序&#xff0c;也出了小程序ECharts组件。之前做过在小程序里面实现图表&#xff0c;大家有需要的可以看下…