基于docker部署prometheus

news/2024/5/18 23:24:05 标签: docker, prometheus, 服务器

prometheus_0">1、prometheus架构

Prometheus完整的部署方案+实战实例插图1

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

官方安装说明

https://prometheus.io/docs/prometheus/latest/installation/

准备两台服务器

192.168.75.160   #Prometheus服务端 
192.168.75.161   #被监控服务器

prometheus.yml主配置文件

# my global config
global:
  scrape_interval:     15s # 采集被监控段指标的一个周期
  evaluation_interval: 15s # 告警评估的一个周期

# 告警的配置文件
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# 告警规则配置
rule_files:
  # - "first_rules.yml"
# 被监控端的配置,目前只有一个节点,就是prometheus本身
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

下载镜像

docker pull   prom/prometheus 

开启内核路由转发

echo -e "net.ipv4.ip_forward = 1\nnet.ipv4.conf.default.rp_filter = 0 \nnet.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
sysctl -p

启动镜像,将主配置文件挂载到容器内

docker run -d  -p 9090:9090 --name prometheus  --restart on-failure 
-v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

在这里插入图片描述
http://192.168.75.160:9090/ 访问该地址,出现一个简单ui界面,说明部署成功,此时target只有本机一个节点。

在这里插入图片描述

2、实战一:监控一个容器服务

cAdvisor (Container Advisor) 用于收集正在允许的容器资源使用和性能信息。相当于zabbix-agent一样提供一个数据采集的接口。

docker部署cAdvisor:

docker run -d   \
--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 \
google/cadvisor:latest

访问该地址,就能看到实时采集到的数据

http://192.168.75.161:8080/containers/

在这里插入图片描述
http://192.168.75.161:8080/metrics / #该地址的数据为prometheus识别的数据的接口
在这里插入图片描述
去192.168.75.160上修改prometheus的配置文件,复制一个job文件,job_name 指名称,targets为cAdvisor服务器地址ip和端口
在这里插入图片描述
修改完成重启prometheus

docker  restart  prometheus 

http://192.168.75.160:9090/targets 可以看到监控指标说明获取数据成功
在这里插入图片描述

在192.168.75.160服务器上安装grafana

docker  run -d --name=grafana  -p 3000:3000  grafana/grafana

在这里插入图片描述

http://192.168.75.160:3000/   # 配置prometheus数据源,配置完成点击保存

在这里插入图片描述

https://grafana.com/grafana/download    #该地址下载grafana模板

在这里插入图片描述
保存,选择Prometheus数据源后可以看到如下图所示
在这里插入图片描述
可以看到192.168.75.161上所有容器都被监控到了,至此监控容器完成!

3、实战二:监控Linux主机

编写了一个采集linux主机metrics的脚本

cat   node_exporter.sh
 #!/bin/bash

wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz

tar zxf node_exporter-0.17.0.linux-amd64.tar.gz
mv node_exporter-0.17.0.linux-amd64 /usr/local/node_exporter

cat </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
EOF

systemctl daemon-reload
systemctl enable node_exporter
systemctl restart node_exporter

运行这个脚本就能监控Linux主机,测试访问

http://192.168.75.161:9100/metrics

在这里插入图片描述
说明采集信息成功,修改prometheus服务上的配置文件/tmp/prometheus.yml,增加一个Linux的job_name

在这里插入图片描述

docker restart prometheus

看到target出现Linux说明数据上传成功
在这里插入图片描述
然后配置grafana仪表盘,本次导入9276模板,和刚才导入模板的方式一致。导入完成即可看到如图所示模板
在这里插入图片描述

Segmentation fault报错

[root@monitor node_exporter]# ls
node_exporter  node_exporter-0.17.0.linux-amd64  NOTICE
[root@monitor node_exporter]# ./node_exporter
Segmentation fault

报错原因可能是之前的软件没有卸载完全导致冲突,可以重新下载软件包或者删除原有的安装目录


http://www.niftyadmin.cn/n/127756.html

相关文章

Qt广告机客户端(下位机)

目录功能结构adClient.promain.cppadclient.h 客户端adclient.cpp 客户端addate.h 时间处理addate.cpp 时间处理adsocket.h 客户端Socket处理adsocket.cpp 客户端Socket处理weather.h 天气信息处理weather.cpp 天气信息处理rollmassege.h 滚动信息处理rollmassege.cpp 滚动信息…

Linux命令·less

less 工具也是对文件或其它输出进行分页显示的工具&#xff0c;应该说是linux正统查看文件内容的工具&#xff0c;功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候&#xff0c;我们并没有办法向前面翻&#xff0c; 只能往后面看&#xff0c;但若使用了 less …

借助Spire.PDF,这家企业低成本实现在线文档签名和量打印

“公司主要是做跨国运输业务的&#xff0c;我们的客户在邮寄过程中需要提交和下载的确认材料非常多&#xff0c;这些材料大多需要客户分别下载后再手写签字确认上传&#xff0c;这导致我们订单操作效率非常低&#xff0c;还容易导致系统卡顿&#xff0c;我们一直在寻找合性能稳…

Kotlin协程:Flow的异常处理

示例代码如下&#xff1a;launch(Dispatchers.Main) {// 第一部分flow {emit(1)throw NullPointerException("e")}.catch {Log.d("liduo", "onCreate1: $it")}.collect {Log.d("liudo", "onCreate2: $it")}// 第二部分flow …

【C++】30h速成C++从入门到精通(继承)

继承的概念及定义继承的概念继承&#xff08;inheritance&#xff09;机制是面向对象程序设计使代码可以复用的重要手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序…

字节3次都没裁掉的7年老测试。掌握设计业务与技术方案,打开上升通道!

前言职场中的那些魔幻操作&#xff0c;研发最烦的是哪个&#xff1f;“面对业务需求的时候&#xff0c;可能都听过这样一句话&#xff1a;这个很简单&#xff0c;直接开发&#xff0c;三天内上线&#xff1b;”朋友说&#xff1a;“产品听了流泪&#xff0c;测试见了崩溃&#…

在VM16.X虚拟机上安装Android-X86 9.0

前提&#xff1a;电脑已安装好VM虚拟机&#xff0c; 第一步&#xff1a;下载好安卓9.0系统 https://www.fosshub.com/Android-x86.html 第二步&#xff1a;开始安装 1、新建虚拟机&#xff08;按图片上的点一下步&#xff09; 点浏览&#xff0c;确定虚拟机位置 处理器配置建…

11.Maxwell 部署

Maxwell 部署 一、环境准备 1、确保服务器上已经安装好了zookeeper、kafka、MySQL软件&#xff1b; &#xff08;1&#xff09;启动zookeeper: /usr/app/zookeeper3.4/bin/zkServer.sh start&#xff08;2&#xff09;启动三台主题的kafka 启动&#xff1a;bin/kafka-serv…