Prometheus监控平台部署与应用

Prometheus特点

        多维数据模型

        PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询

        不依赖分布式存储,单个服务器节点可直接工作

        基于HTTP的pull方式采集时间序列数据

        推送时间序列数据通过PushGateway组件支持

        通过服务发现或静态配置发现目标

        多种图形模式及仪表盘支持

Grafana特点

        支持 Graphite、zabbix、InfluxDB、Prometheus、OpenTSDB、Elasticsearch 等作为数据源

        插件丰富,功能灵活

        

                        Zabbix,open-Falcon,Premetheus+Grafana 监控对比

监控方案

告警

特点

适用

Zabbix

Yes

大量定制工作

大部分的互联网公司

open-falcon(小米研发)

Yes

功能模块分解比较细,显得更复杂

系统和应用监控

Prometheus+Grafana

Yes

扩展性好

容器、应用、主机全方位监控

Prometheus 组件

        Prometheus 结构

                Prometheus Server用于收集指标和存储时间序列数据,并提供查询接口

                        Retrieval    TSDB(时序性数据库) HTTPserver 

                client Library客户端库(例如 Go,Python,Java 等),为需要监控的服务产生相应的/metrics 并暴露给 Prometheus Server。目前已经有很多软件原生就支持Prometheus 并提供/metrics,可以直接使用。对于像操作系统已经不提供/metrics, 可以使用 exporter,或者自己开发 exporter 来提供/metrics 服务

                push gateway主要用于临时性的 jobs。由于这类 jobs 存在时间较短,可能在Prometheus 来 pull 之前就消失了。Jobs 定时将指标 push 到 push gateway,再由 Prometheus Server 从 Push gateway 上 pull。这种方式主要用于服务层面的metrics

                exporter用于暴露已有的第三方服务的 metrics 给 Prometheus

                alertmanager从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对应的接受方式,发出报警。常见的接收方式有:电子邮件, pagerduty,OpsGenie, webhook 等

                Web UIPrometheus 内置一个简单的 Web 控制台,可以查询指标,查看配置信息或者 Service Discovery 等,实际工作中,查看指标或者创建仪表盘通常使用 Grafana,Prometheus 作为 Grafana 的数据源

在k8s中部署Prometheus(本次使用的以1.20版本的k8s为例部署)

                                                Kubeadm 安装Prometheus 环境

主机名

IP 地址

操作系统

主要软件

k8s-master

192.168.9.206

CentOS 7.3 x86_64

Prometheus,Grafana

k8s-node01

192.168.9.207

CentOS 7.3 x86_64

node_exporter

k8s-node02

192.168.9.208

CentOS 7.3 x86_64

NFS,node_exporter

        实验要求

                通过 Kubeadm 实现快速部署 Prometheus+Grafana 监控系统。完成对 K8s 资源监控并使用 Grafana 展示。完成对 K8s Node 节点基础资源监控并用 Grafana 展示

        在部署完成后可能会有状态不对 例如下图

         解决方法 打开配置文件

[root@master ~]# vi /etc/kubernetes/manifests/kube-scheduler.yaml
[root@master ~]# vi /etc/kubernetes/manifests/kube-controller-manager.yaml

        修改为下图所示  两个配置文件都是如此

        部署Prometheus

                1.上传文件

                2. 安装unzip

yum -y install unzip
unzip Prometheus.zip
cd Prometheus

                3.使用命令查询

grep 192.168.9. *.yaml 

                4.执行命令替换自己的IP

# 修改为自己的IP
sed -i 's/192.168.9.208/192.168.27.154/g' alertmanager-pvc.yaml
sed -i 's/192.168.9.208/192.168.27.154/g' grafana.yaml
sed -i 's/192.168.9.207/192.168.27.153/g' prometheus-configmap.yaml
sed -i 's/192.168.9.208/192.168.27.154/g' prometheus-configmap.yaml
sed -i 's/192.168.9.208/192.168.27.154/g' prometheus-statefulset.yaml#192.168.27.154 为规划的nfs节点的IP(即node2节点的IP)
#192.168.27.153 为规划的node1节点的IPgrep 192.168. *.yaml#过滤IP是否修改正确

        切换node2节点部署nfs服务

yum install nfs-utils -ymkdir -p /data/file/prometheus-data
# rw 读写
# sync 同时将数据写入到内存与硬盘中,保证不丢失数据
# insecure 允许客户端从大于1024的tcp/ip端口连接服务器
# no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
# no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
echo "/data/file 192.168.27.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)" > /etc/exports# 启动服务
systemctl start nfs
systemctl start rpcbind
systemctl enable nfs
systemctl enable rpcbind

        剩余节点也要安装nfs

yum install nfs-utils -y

                所有节点执行镜像加速

cat > /etc/docker/daemon.json << EOF
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://cf-workers-docker-io-8jv.pages.dev"]
}
EOF
systemctl daemon-reload
systemctl restart docker

                 切回master节点

kubectl apply -f prometheus-rbac.yaml
kubectl apply -f prometheus-configmap.yaml
kubectl apply -f prometheus-statefulset.yaml
kubectl apply -f prometheus-service.yamlkubectl get pod -n kube-system

        查看端口,查看web界面

kubectl get svc -n kube-system

                在node节点开启服务

#推送服务到node节点
scp -r node/ 192.168.27.153:/root
scp -r node/ 192.168.27.154:/root

                切换node节点

cd node/
sh node_exporter.sh

                回到web界面 target页面的node节点的状态就变成up

部署Grafana 

                切换nfs节点(即为node2节点)

# 此步骤nfs节点创建
mkdir -p /data/file/grafana-data
chmod -R 777 /data/file/grafana-data

                修改Granfana的yaml文件

vi grafana.yaml

                

imagePullPolicy: "IfNotPresent"

                执行yaml文件

kubectl apply -f grafana.yaml

                浏览器访问 http://192.168.27.152:30007/

                创建数据源

 

 

 导入数据源

 

 

实现Prometheus报警

        浏览器搜索 http://192.168.27.154:30090/

        

        切换到master节点修改yaml文件

vi prometheus-statefulset.yaml
            - name: prometheus-rulesmountPath: /etc/config/rules

                添加如图位置

kubectl apply -f prometheus-rules.yaml
kubectl apply -f prometheus-statefulset.yaml
kubectl get pod -n kube-system

                等待加载成功后刷新页面 规则就应用上了

                 配置网络通信

vi prometheus-configmap.yaml
    alerting:alertmanagers:- static_configs:- targets: ["alertmanager:80"]
#这段加到配置文件最后就行了
#执行yaml文件
kubectl apply -f prometheus-configmap.yaml
kubectl apply -f prometheus-statefulset.yaml#修改邮箱报警信息
vi alertmanager-configmap.yaml

        网易邮箱授权码

                 在node2节点执行

# 此步骤node2节点创建
mkdir /data/file/alertmanager-data/
chmod -R 777 /data/file/alertmanager-data/

                切换master节点

# master节点执行
kubectl apply -f alertmanager-configmap.yaml
kubectl apply -f alertmanager-pvc.yaml
kubectl apply -f alertmanager-deployment.yaml
kubectl apply -f alertmanager-service.yamlkubectl get pod -n kube-system

                等待加载完毕

        验证报警邮件

        在Prometheus页面                在node1几点停止服务

systemctl stop node_exporter

                 等待类似如图信息

                 回到网易邮箱就可以看见邮箱信息

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

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

相关文章

vue3 栅栏式拖拽布局组件

先看效果&#xff1a; 使用方法&#xff1a; 1、npm install fencelayout 2、引入使用 <template><Fencelayout><!-- 需要写的模块直接嵌套在这个下面就可以 --><div class"aaaa"><a-button>模块1</a-button></div><…

探索设计模式:命令模式

探索设计模式&#xff1a;命令模式 &#x1f9d0;1. 概念&#x1f3af;2. 作用&#x1f4e6;3. 实现3.1 定义命令接口3.2 实现具体命令3.3 实现接收者3.4 实现调用者3.5 使用 &#x1f4bb;4. 应用场景 命令模式&#xff08;Command Pattern&#xff09;就是一种行为型设计模式…

茅台最新任务脚本

茅台最新任务脚本 –小白教程— 这个脚本的作用是实现i茅台应用的自动预约功能&#xff0c;主要功能包括生成请求头、预约商品、计算距离和库存情况、发送微信推送消息等。 代码如下#!/usr/bin/python3cron: 0 0 9/21 * * * new Env(i茅台) import logging import sysimpor…

​CSS之三

CSS三大特性 CSS 有三个非常重要的三个特性:层圣性、继承性、优先级 层叠性 相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖(层曼)另一个冲突的样式。层曼性主要解决样式冲突的问题 层叠性原则: - 样式冲突&#xff0c;遵循的原则是就近原则&#xff0c;哪个…

C++设计模式创建型模式———简单工厂模式、工厂方法模式、抽象工厂模式

文章目录 一、引言二、简单工厂模式三、工厂方法模式三、抽象工厂模式四、总结 一、引言 创建一个类对象的传统方式是使用关键字new &#xff0c; 因为用 new 创建的类对象是一个堆对象&#xff0c;可以实现多态。工厂模式通过把创建对象的代码包装起来&#xff0c;实现创建对…

python爬虫抓取豆瓣数据教程

环境准备 在开始之前&#xff0c;你需要确保你的Python环境已经安装了以下库&#xff1a; requests&#xff1a;用于发送HTTP请求。BeautifulSoup&#xff1a;用于解析HTML文档。 如果你还没有安装这些库&#xff0c;可以通过以下命令安装&#xff1a; pip install requests…

代码-画图函数示例

热力图 import matplotlib.pyplot as plt import seaborn as sns import numpy as npdef create_heatmap(people, categories, dataNone, title热力图, xlabel类别, ylabel人员,value_range(0.6, 0.95), figsize(10, 6),cmapYlOrRd, decimal_places3):"""创建热…

2024最新Twitter养号全面指南,品牌起号必看!

X (Twitter)作为活跃用户数以亿计的社交媒体平台&#xff0c;用户数依然在不断增长&#xff0c;其中巨大的流量吸引着个人用户与品牌和卖家。 Twitter养号是有必要的&#xff0c;有大量案例表明养好号&#xff0c;可以大幅度降低账号被冻结的几率&#xff0c;并提升账号的稳定…

百度如何打造AI原生研发新范式?

&#x1f449;点击即可下载《百度AI原生研发新范式实践》资料 2024年10月23-25日&#xff0c;2024 NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。本届大会邀请了工业界和学术界的专家&#xff0c;优秀的工程师和产品经理&#xff0c;以及其它行…

基于大语言模型(LLM)自主Agent 智能体综述

近年来,LLM(Large Language Model)取得了显著成功,并显示出了达到人类智能的巨大潜力。基于这种能力,使用LLM作为中央控制器来构建自助Agent,以获得类人决策能力。 Autonomous agents 又被称为智能体、Agent。指能够通过感知周围环境、进行规划以及执行动作来完成既定任务。…

电脑怎么设置开机密码:保障个人信息安全的第一步

在数字化时代&#xff0c;个人信息的安全至关重要。电脑作为我们日常工作和生活中不可或缺的设备&#xff0c;存储了大量的私人数据和敏感信息。为了防止未经授权的访问&#xff0c;设置开机密码是保护个人隐私和信息安全的基本措施之一。本文将详细介绍如何在不同操作系统下为…

分析 std::optional 的使用与常见错误

文章目录 引言常见错误及解决方案1. 错误使用 std::optional 变量进行算术运算2. 错误检查 std::optional 是否有值3. 忽视 std::optional 的默认值 结论 引言 std::optional 是 C17 引入的一个模板类&#xff0c;用于表示可能有也可能没有值的情况。它特别适用于函数返回值&a…

DB-GPT系列(二):DB-GPT部署(镜像一键部署、源码部署)

一、简介 DB-GPT 是一个开源项目&#xff0c;其将大语言模型 LLM 与数据库紧密结合。该项目主要致力于探索如何让预训练的大规模语言模型&#xff08;例如 GPT&#xff09;能够直接与数据库进行交互&#xff0c;从而生成更为准确且信息丰富的回答。 DB-GPT部署后能否直接使用…

Web组件之 Listener (监听器)

文章目录 1.1 Listener概述1.2 Listener快速入门① xml版本② 注解版本 1.3 案例&#xff1a;模拟spring框架 1.1 Listener概述 ​ JavaWeb 中的监听器是监听 ServletContext HttpSession HttpServletRequest 三个数据域对象创建和销毁以及监听数据域对象中数据的变化&#xf…

【论文翻译】IJCAI 2019 | Graph WaveNet:用于深度时空图建模的Graph WaveNet

论文题目Graph WaveNet for Deep Spatial-Temporal Graph Modeling作者团队Zonghan Wu, Shirui Pan, Guodong Long, Jing Jiang, Chengqi Zhang机构澳大利亚悉尼科技大学人工智能中心 (UTS) 和 澳大利亚莫纳什大学发表会议IJCAI 2019论文链接https://www.ijcai.org/proceedings…

Java数组的定义与使用

今天来学习Java数组的定义与使用 目录 1 数组的基本概念1.1 数组的意义1.2 数组的定义1.3 数组的创建及初始化1.3.1 数组的创建1.3.2 数组的初始化 1.4 数组的使用1.4.1 数组中的元素访问1.4.2 遍历数组运行结果运行结果 2 数组是引用类型2.1 初始 JVM 的内存分布2.2 基本类型变…

https://tieba.baidu.com/p/9247698007

微深节能的库区智能化无人天车管理系统结合了格雷母线技术&#xff0c;提供了一种高精度的定位解决方案。格雷母线系统能够实现连续或断续的位置检测&#xff0c;精度高达≤5mm&#xff0c;适用于需要高精度作业的场景&#xff0c;如货物搬运和堆放。这种系统通过实时交互&…

创作里程碑:纪念日回顾与展望

目录 机缘&#xff1a;创作者初心 1. 实战项目 2. 日常学习 3. 技术交流 4. 总结 收获&#xff1a;创作者动力 创作与工作、学习的关系 憧憬&#xff1a;职业规划与创作规划 职业规划&#xff1a; 创作规划&#xff1a; 机缘&#xff1a;创作者初心 回望自己踏上…

软考(中级-软件设计师)数据库篇(1101)

第6章 数据库系统基础知识 一、基本概念 1、数据库 数据库&#xff08;Database &#xff0c;DB&#xff09;是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储&#xff0c;具有较小的冗余度、较高的数据独立性和扩展…

go-zero 的使用

目录 1. 生成 user api 服务 2. 生成 user rpc 服务 3. 生成 user model 模型 4. 编写 user rpc 服务 1 修改配置文件 user.yaml 2 添加 user model 依赖 3 添加用户登录逻辑 Login 5. 编写 user api 服务 1 修改配置文件user.yaml 2 添加 user rpc 依赖 3 添加用户…