看到很多部署 prometheus 到 k8s 集群的教程,发现都是非常麻烦的各种配置,懒人的我就想整个一键部署的,开箱即用的,既然有了 helm 那肯定只要一个 charts 就可以搞定了吧,想着就是这样 PS: 本文适用于开发者单 k8s 集群部署 prometheus,如果是运维可建议进行独立部署,一方面不需要占用集群内部资源并保证多活,另一方面可以支持多集群扩展。 而当我们使用 k8s 部署 prometheus 的时候就会发现这件事很容易了。 官方的样例 总结 直接部署在 k8s 内部的 prometheus 能很容易获取到 k8s 中各种指标和参数,使用 helm 部署也非常方便,基本一个命令就搞定了 如果你只需要基本的 cpu 和内存信息 -2fbd 多集群部署参考:https://www.servicemesher.com/blog/prometheus-monitor-k8s-1/
安装在目标集群上,执行如下命令:kubectl apply -f https://github.com/512team/dhorse/raw/main/conf/kubernetes-prometheus.yml 使用1.在浏览器访问地址:http://master_ip:30000,如下图所示:图片2.查看k8s自带的指标数据,如下图所示:图片3.点击“Execute”按钮,并切换到“Graph”选项卡,可以看到指标的统计信息 ,如下图所示:图片dhorse配置在dhorse里,可以通过“发布管理”->“环境管理”->“操作栏”->“更多”菜单下的Prometheus菜单,配置每个环境的收集状态,如下图所示:图片开启收集状态以后
我们上一小节对Prometheus做了一个简单的介绍,本小节我们就来介绍下Prometheus的安装。 Prometheus支持通过二进制包、Docker 容器、Kubernetes Operator(如 Prometheus Operator)来进行安装。 1.添加helm仓库 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm (包含 Operator、Prometheus、Grafana 等) helm install prometheus prometheus-community/kube-prometheus-stack 4.prometheus容器 作用:Prometheus Server 实例。 功能:负责抓取、存储监控数据,并提供查询和告警规则评估。
ap-shanghai-k8s-master-1:~/prometh/redis# curl -X POST http://172.22.3.51:9090/-/reload 图片 登陆prometheus 实例加载配置文件: kubectl logs -f prometheus-k8s-1 -n monitoring 图片 也可以进入pod确认是否配置同步过来: kubectl exec -it prometheus-k8s -0 sh -n monitoring cd /etc/prometheus/rules/prometheus-k8s-rulefiles-0 cat monitoring-redis-exporter-rule.yaml 控制台查看metrics: 登陆prometheus 查看Targets: 图片 查看出现了各种elastic参数指标: 图片 报警alert: 告警规则随手抄了一个: 参照:k8s容器中通过Prometheus 还是希望能将类似腾讯云云监控中的这些指标采集到prometheus中,但是这过程应该还很遥远 grafana出图 prometheus查询语法这些东西有时间的好好研究一下。
同样在Prometheus监控中存在一个叫 服务发现的机制,在k8s容器环境中由于集群内实例网络地址是动态的,我们不可能每次创建或修改实例都将实例IP写入Prometheus的target中,借助 服务发现我们可以快速的将集群内的资源注册到 Prometheus中k8s服务发现的原理是通过 Kubernetes 的REST API 检索抓取目标,并始终与集群状态保持同步。 所以我们需要配置Kubernetessdconfigs来访问K8s API 比如我们要抓取k8s ingress,需要为Prometheus指定用于RBAC认证证书和serviceaccount的token 以上通过kubernetes-apiservers、kubernetes-nodes的实例简单介绍了Prometheus中如何实现k8s集群资源的服务发现以及相应的配置和操作。 亦可参考Prometheus示例配置prometheus-kubernetes
目前的很多网站为了加强宣传效果增加了视频,通过video标签很容易实现视频的播放功能,但是万恶的IE8不支持html5的视频播放。 虽然如此,我们也有解决的办法,flowplayer提供了一套兼容IE8的视频播放插件,请看下面的例子。
DOCTYPE html> 而且注意doctype前后不要有空行 使用meta标签来调节浏览器的渲染方式 IE 兼容模式 Bootstrap 不支持 IE 古老的兼容模式。 国产浏览器高速模式 国内浏览器厂商一般都支持兼容模式(即 IE 内核)和高速模式(即 webkit 内核),不幸的是,所有国产浏览器都是默认使用兼容模式,这就造成由于低版本 IE (IE8 及以下)内核让基于 query(媒体查询)兼容ie6-8 附上链接https://github.com/scottjehl/Respond 然后将其引入到页面中,一般是放在head中。 [endif]--> CSS3 通过respond.js和html5shiv,你的页面已经基本兼容ie8+了,当然你如果追求更高的话,想要解决css3的支持问题,可以采用一些hack方法,比较流行的如CSS3 /jquery-placeholder 后记 些文只列出了一些ie8下的兼容问题,还有诸好background-size,last-child,inline-block,max-width等问题没有提供详细的解决方案
生产环境下,prometheus的configmap修改后 ,如果apply后还是不能生效,一般就是语法报错了,reload失败。 我们可以使用如下的脚本来检查: #! /bin/bash # 用于检查 prometheus的配置文件和规则文件是否有错误 # 需要根据自己的部署和配置文件路径修改下面的脚本部分内容 kubectl exec -ti -n monitoring prometheus-stateful-0 -c prometheus-server -- /bin/sh -c "cd /etc/prometheus/ && /bin/promtool check config prometheus.yml" | grep -A 2 FAILED kubectl exec -ti -n monitoring prometheus-stateful-0 -c prometheus-server -- /bin/sh -c "cd /etc/prometheus/ && /bin/promtool check rules rules/*.yaml" | grep
虽然这个Prometheus组件部署以后这个指令还是不可用。但是我们可以通过这个Prometheus监控来看到这些资源使用情况。 目前在Kubernetes集群的监控里面Prometheus已经是事实上的标准,所以我们的的监控也是基于他来讲解的。 Exporters 将第三方系统(如 MySQL、Node.js、硬件)的指标转换为 Prometheus 格式。 Pushgateway 临时存储短暂任务(如批处理作业)推送的指标数据,供 Prometheus 拉取。 Alertmanager 处理 Prometheus 触发的告警,进行分组、抑制、静默,并发送通知。
监控k8s 集群节点 对于集群的监控一般我们需要考虑以下几个方面: Kubernetes 节点的监控:比如节点的 cpu、load、disk、memory 等指标 内部系统组件的状态:比如 kube-scheduler -7cb9f4dc8d-g9x75 1/1 Running 0 25m 10.0.2.134 saas-pre-node-dist-sz-02 < prometheus 的 ConfigMap 更新完成后,同样的执行 reload 操作,让配置生效: kubectl delete -f prometheus-cm.yaml;kubectl create -f prometheus-cm.yaml # 执行下面的 reload # kubectl get svc -A | grep prometheus monitoring prometheus 这里就需要使用到 Prometheus 提供的relabel_configs中的replace能力了,relabel 可以在 Prometheus 采集数据之前,通过Target 实例的 Metadata
/prometheus-k8s created clusterrolebinding.rbac.authorization.k8s.io/prometheus-k8s created networkpolicy.networking.k8s.io /prometheus-k8s-config created rolebinding.rbac.authorization.k8s.io/prometheus-k8s created rolebinding.rbac.authorization.k8s.io /prometheus-k8s created rolebinding.rbac.authorization.k8s.io/prometheus-k8s created role.rbac.authorization.k8s.io /prometheus-k8s-config created role.rbac.authorization.k8s.io/prometheus-k8s created role.rbac.authorization.k8s.io /prometheus-k8s created role.rbac.authorization.k8s.io/prometheus-k8s created service/prometheus-k8s
3.2prometheus-kube-prometheus-alertmanager:监控告警组件的状态。 3.6prometheus-kube-prometheus-kube-etcd:监控 etcd 集群的健康状态和性能。 3.10prometheus-kube-prometheus-operator:监控prometheus的opterator的状态。 3.11prometheus-kube-prometheus-prometheus:监控prometheus自己的监控。 3.12prometheus-kube-state-metrics:将 Kubernetes 资源状态(如 Deployment、Pod、Service)转换为 Prometheus 指标 3.13prometheus-prometheus-node-exporter
在 k8s 中部署 Prometheus 和 Grafana Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k8s 要把配置文件放到 ConfigMap 里单独管理,另外 Prometheus 涉及到要使用 k8s 服务发现,需要创建一个 serviceAccount 以有权限来获取 k8s 中的资源 部署 Grafana /v1 kind: ClusterRoleBinding metadata: name: prometheus roleRef: apiGroup: rbac.authorization.k8s.io __meta_kubernetes_service_annotation_prometheus_io_should_be_scraped 是我后面加上的,不加这个的话,会尝试从所有的 k8s 资源中获取 https://github.com/OpenReservation/ReservationServer/blob/dev/k8s/prometheus/configMap.yaml https://
最近在做k8s相关的开发工作,涉及不少k8s的相关知识,这里记录下。 问题引出 遇到一个需求,要使用prometheus监控多个k8s集群。 但甲方觉得上述方案中每个k8s集群都要部署prometheus,增加了每套k8s集群的资源开销,希望全局只部署一套prometheus,由它统一采集多个k8s集群的监控指标。 prometheus采集当前k8s监控数据 首先分析prometheus是如何采集单个k8s集群的监控指标。 prometheus采集其它k8s监控数据 从上述分析来看,假设其它k8s部署了node_exporter和kube-state-metrics,用prometheus采集其它k8s集群的监控数据也是可行的 解决问题的过程中查询了k8s和prometheus的各种资料,对K8S Apiserver、K8S RBAC Authorization、Prometheus Configration有了更深入的理解。
<<EOF apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: monitoring data : - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name ,查看下效果: k8s集群中的资源类型监控 上面配置了自动发现 Service(Pod也是一样的)的监控,但是这些监控数据都是应用内部的监控,需要应用本身提供一个/metrics接口,或者对应的 exporter 对于 Prometheus 来说,当然是需要引入新的 exporter 来暴露这些指标,Kubernetes 提供了一个kube-state-metrics就是我们需要的。 /scrape: ‘true’这样的一个annotation,因此 kube-state-metrics 的 endpoint 可以被 Prometheus 自动服务发现。
“可执行文件格式错误”表明你试图执行的二进制文件与操作系统或架构不兼容。检查架构确保你下载的二进制文件与系统的架构相匹配(例如,x86_64, arm64 等)。 可以使用以下命令检查系统的架构: uname -m下载正确的二进制文件如果架构不匹配,请从 Prometheus 的官方网站下载与你的系统相匹配的版本。 https://prometheus.io/download/验证文件类型使用 file 命令检查 prometheus 二进制文件的类型 file . /prometheus文件损坏重新下载 Prometheus,并确保下载过程中没有损坏文件。
如下是k8s-prometheus-adapter apiservice的定义,kube-aggregator通过下面的service将请求转发给adapter。 v1beta1.custom.metrics.k8s.io是写在k8s-prometheus-adapter代码中的,因此不能任意改变。 为空,则需要校验deploy中的Prometheus url是否正确,是否有权限等 通过如下方式查看完整的请求过程(--v=8) kubectl get --raw “/apis/custom.metrics.k8s.io --v=8 如果上述过程正确,但获取到的items为空 首先保证k8s-prometheus-adapter的参数--metrics-relist-interval设置值大于Prometheus的参数 scrape_interval 确保k8s-prometheus-adapter rules的seriesQuery规则可以抓取到Prometheus的数据 确保k8s-prometheus-adapter
" created 通过Deployment部署Prometheus,yaml文件如下: --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: namespace: ingress-nginx labels: app: prometheus --- apiVersion: rbac.authorization.k8s.io/v1beta1 namespace: ingress-nginx roleRef: kind: ClusterRole name: prometheus apiGroup: rbac.authorization.k8s.io 的UI界面,查看NodePort: [root@dtdream-dtwarebase-prod-k8s-01 monitoring]# kubectl -s10.90.2.100:8080 -ningress-nginx 上面用的yaml文件可以到github上查看https://github.com/jcops/k8s-yaml/tree/master/monitoring
一、添加钉钉机器人 参考钉钉官方文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq image.png 二、在k8s上部署钉钉告警deployment
ie11浏览器不兼容的解决办法 Edge浏览器已然成为最新win10系统的默认浏览器,但是用户量却远远不及IE11,IE11虽然性能得到了大的改进,但在浏览网页的时候还是会出现一些兼容性的问题,下面小编就讲为大家分享 IE 11浏览器网页不兼容的四个有效解决方法。 方法二、添加兼容性视图设置 1、打开IE11浏览器, 点击浏览器右上角的“工具”选项,再选择“兼容性视图设置”选项; 2、将该行网站添加到“兼容性视图中的网站”; 3、关闭IE11浏览器,重新登入。