k8s部署prometheus

k8s部署prometheus

版本说明:

k8s:1.24.4

prometheus:release-0.12(https://github.com/prometheus-operator/kube-prometheus.git)

本次部署采用operator的方式将prometheus部署到k8s中,需对k8s和prometheus有一定的了解

一、下载对应版本代码到服务器

git clone -b release-0.12 https://github.com/prometheus-operator/kube-prometheus.git

二、修改几个配置的镜像(国内无法访问registry.k8s.io)

vim prometheusAdapter-deployment.yaml

image: v5cn/prometheus-adapter:v0.10.0

vim kubeStateMetrics-deployment.yaml

image: bitnami/kube-state-metrics:2.8.1

另外修改下grafana的service类型为nodeport

vim grafana-service.yaml

  selector:
    app.kubernetes.io/component: grafana
    app.kubernetes.io/name: grafana
    app.kubernetes.io/part-of: kube-prometheus
  type: NodePort

二、部署

cd kube-prometheus/manifests
kubectl create -f setup/
kubectl create -f .

部署的时候看下输出,看有无报错,最后看下启动的pod

kubectl get pod -n monitoring

NAME                                   READY   STATUS    RESTARTS   AGE
alertmanager-main-0                    2/2     Running   0          16m
blackbox-exporter-58c9c5ff8d-l6x52     3/3     Running   0          70m
grafana-74f97479b9-pwdn9               1/1     Running   0          70m
kube-state-metrics-676764b849-4qjqw    3/3     Running   0          33m
node-exporter-46w4n                    2/2     Running   0          70m
node-exporter-4zwtf                    2/2     Running   0          28m
node-exporter-m6bgl                    2/2     Running   0          70m
prometheus-adapter-85df796f6c-cfgj6    1/1     Running   0          59m
prometheus-adapter-85df796f6c-p2vr5    1/1     Running   0          59m
prometheus-k8s-0                       2/2     Running   0          25m
prometheus-operator-5687547bb5-jgrb6   2/2     Running   0          31m

三、访问grafana

查看grafana的service地址和端口

kubectl get service -n monitoring |grep grafana

grafana                 NodePort    192.168.252.227   <none>        3000:30280/TCP               73m

然后使用node节点的公网ip加30280访问,默认账号密码是admin/admin

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

黑盒监控

一、部署

新版 Prometheus Stack 已经默认安装了 BlackboxExporter,可以通过以下命令查看:

kubectl get po -n monitoring -l app.kubernetes.io/name=blackbox-exporter

NAME                                 READY   STATUS    RESTARTS      AGE
blackbox-exporter-58c9c5ff8d-spvbz   3/3     Running   4 (23h ago)   23h

同时也会创建一个 Service,可以通过该 Service 访问 Blackbox Exporter 并传递一些参数:

kubectl get svc -n monitoring -l app.kubernetes.io/name=blackbox-exporter

NAME                TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)              AGE
blackbox-exporter   ClusterIP   192.168.253.141   <none>        9115/TCP,19115/TCP   27h

比如检测下 www.baidu.com(使用任何一个公网域名或者公司内的域名探测即可)网站的状态,可以通过如下命令进行检查:

 curl -s "http://192.168.253.141:19115/probe?target=www.baidu.com&module=http_2xx" | tail -1
 
 probe_success 1

probe 是接口地址,target 是检测的目标,module 是使用哪个模块进行探测。

如果集群中没有配置 Blackbox Exporter,可以参考https://github.com/prometheus/blackbox_exporter 进行安装。

二、Prometheus 静态配置

首先创建一个空文件,然后通过该文件创建一个 Secret,那么这个 Secret 即可作为Prometheus 的静态配置:

touch prometheus-additional.yaml
kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml -n monitoring

创建完 Secret 后,需要编辑下 Prometheus 配置:

cd /soft/yaml/prometheus/kube-prometheus/manifests
vim prometheus-prometheus.yaml

# 添加image下面的四行
  image: quay.io/prometheus/prometheus:v2.42.0
  additionalScrapeConfigs:
    key: prometheus-additional.yaml
    name: additional-configs
    optional: true

然后replace一下

kubectl replace -f prometheus-prometheus.yaml

之后在 prometheus-additional.yaml 文件内编辑一些静态配置,此处用黑盒监控的配置进行演示:

注意回到刚才创建这个文件的路径

vim prometheus-additional.yaml

- job_name: 'blackbox'
  metrics_path: /probe
  params:
    module: [http_2xx] # Look for a HTTP 200 response.
  static_configs:
    - targets:
      - http://gaoxin.kubeasy.com # Target to probe with http.
      - https://www.baidu.com # Target to probe with https.
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: blackbox-exporter:19115 # The blackbox exporter's realhostname:port.

➢ targets:探测的目标,根据实际情况进行更改

➢ params:使用哪个模块进行探测

➢ replacement:Blackbox Exporter 的地址

可以看到此处的内容,和传统配置的内容一致,只需要添加对应的 job 即可。之后通过该文件更新该 Secret:

kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml --dry-run=client -oyaml | kubectl replace -f - -n monitoring

更新完成后,稍等一分钟即可在 Prometheus Web UI 看到该配置:

在这里插入图片描述

但是它这个state的取值有点奇怪,上面那个域名是无法访问的,但是在这里确是up状态

在这里插入图片描述

但是在graph这边查询对应的取值,是可以看到的,无法访问的那个取值为0,后面添加告警规则的时候通过这个来进行取值就行了

配置企业微信告警

一、部署alertmanager

新版本的prometheus-operator是已经部署好的

kubectl get pod -n monitoring 

alertmanager-main-0                    2/2     Running   0             20h

二、修改配置

cd /soft/yaml/prometheus/kube-prometheus/manifests
vim alertmanager-secret.yaml

整个拷贝即可

apiVersion: v1
kind: Secret
metadata:
  labels:
    app.kubernetes.io/component: alert-router
    app.kubernetes.io/instance: main
    app.kubernetes.io/name: alertmanager
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 0.25.0
  name: alertmanager-main
  namespace: monitoring
stringData:
  alertmanager.yaml: |-
    "global":
      "resolve_timeout": "5m"
    "inhibit_rules":
    - "equal":
      - "namespace"
      - "alertname"
      "source_matchers":
      - "severity = critical"
      "target_matchers":
      - "severity =~ warning|info"
    - "equal":
      - "namespace"
      - "alertname"
      "source_matchers":
      - "severity = warning"
      "target_matchers":
      - "severity = info"
    - "equal":
      - "namespace"
      "source_matchers":
      - "alertname = InfoInhibitor"
      "target_matchers":
      - "severity = info"
    "receivers":
    - "name": "web.hook"
      "webhook_configs":
      - "url": 'http://172.16.0.47:8880/wx'
    "route":
      "group_by": ['alertname']
      "group_wait": 10s
      "group_interval": 1m
      "repeat_interval": 5m
      "receiver": 'web.hook'
type: Opaque

我这边是发送到一个中转站- "url": 'http://172.16.0.47:8880/wx',有了这个中转站就可以直接发送到企业微信的群里面,而不用配置企业应用

三、部署中转站

微信群机器人 第三方钩子

docker run -itd --name webhook-adapter -p 8880:80 \
 guyongquan/webhook-adapter \
--adapter=/app/prometheusalert/wx.js=/wx=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=8255-9602-418e-a0b3-0b8deaa28}

部署的时候就修改一个地方,key后面的内容换成你自己企业微信群的机器人的key,也就是这一串8255-9602-418e-a0b3-0b8deaa28

四、添加告警规则

其实上面部署的时候已经自带了很多官方的告警规则,但很多不适用,然后我们自己来添加一些规则

mkdir -p /soft/yaml/prometheus/myself-config-prometheus/probe
cd /soft/yaml/prometheus/myself-config-prometheus/probe

vim blackbox-prometheusRule.yaml

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  labels:
    app.kubernetes.io/component: exporter
    app.kubernetes.io/name: blackbox-exporter
    prometheus: k8s
    role: alert-rules
  name: blackbox-rule
  namespace: monitoring
spec:
  groups:
  - name: blackbox-exporter
    rules:
    - alert: DomainAccessDelayExceeds1s
      annotations:
        description: 域名:{{ $labels.instance }} 探测延迟大于 1 秒,当前延迟为:{{ $value }}
        summary: 域名探测,访问延迟超过 1 秒
      expr: sum(probe_http_duration_seconds{job=~"blackbox"}) by(instance) > 1
      for: 1m
      labels:
        severity: warning
    - alert: ServiceIsDown
      annotations:
        description: 服务:{{ $labels.instance }} 挂了,当前取值为:{{ $value }}
        summary: 服务探测,30s内已经访问不到了
      expr: probe_success < 1
      for: 30s
      labels:
        severity: error

这个写的比较简单,需根据自己业务去自定义规则

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot+vue驾校管理系统 idea科目一四预约考试,练车

加大了对从事道路运输经营活动驾驶员的培训管理力度&#xff0c;但在实际的管理过程中&#xff0c;仍然存在以下问题&#xff1a;(1)管理部门内部人员在实际管理过程中存在人情管理&#xff0c;不进行培训、考试直接进行发证。(2)从业驾驶员培训机构不能严格执行管理部门的大纲…

SpringBoot解析指定Yaml配置文件

再来个文章目录 文章目录前言1、自定义配置文件2、配置对象类3、YamlPropertiesSourceFactory下面还有投票&#xff0c;帮忙投个票&#x1f44d; 前言 最近在看某个开源项目代码并准备参与其中&#xff0c;代码过了一遍后发现多个自定义的配置文件用来装载业务配置代替数据库…

使用 Python 从点云生成 3D 网格

从点云生成 3D 网格的最快方法 已经用 Python 编写了几个实现来从点云中获取网格。它们中的大多数的问题在于它们意味着设置许多难以调整的参数&#xff0c;尤其是在不是 3D 数据处理专家的情况下。在这个简短的指南中&#xff0c;我想展示从点云生成网格的最快和最简单的过程。…

继承和派生

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…

手撕数据结构—队列

队列队列的话只允许在一端插入&#xff0c;在另外一端删除。插入数据的那一段叫做队尾&#xff0c;出数据的那一段叫做队头&#xff08;从尾巴插入&#xff09;。因此的话队列是先进先出的。入的顺序与出的顺序的话是一样的。这个与栈是不一样的&#xff0c;因为栈的话就是说如…

问题【Java 基础】

基础1、成员变量与局部变量的区别2、静态变量有什么作用3、字符型常量和字符串常量的区别4、静态方法为什么不能调用非静态成员5、静态方法和实例方法有何不同6、重载和重写有什么区别7、什么是可变长参数8、Java 中的几种基本数据类型了解么9、基本类型和包装类型的区别10、包…

【数据结构】树和二叉树的概念及结构

目录 1.树概念及结构 1.1 树的概念 1.2 树的相关概念 1.3树的表示 1.4 树在实际中的应用 2.二叉树概念及结构 2.1 概念 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 1.树概念及结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n(n>0) 个有…

一款专门为自动化测试打造的集成开发工具【Aqua】,“能快速构建自动化测试项目”,就问你爽不爽吧,,,

你好&#xff0c;我是不二。 随着行业内卷越来越严重&#xff0c;自动化测试已成为测试工程师的必备技能&#xff0c;谈及自动化测试肯定少不了编程&#xff0c;说到编程肯定离不开集成开发工具&#xff0c;比如&#xff1a;IntelliJ IDEA可以帮助我们快速构建Maven项目、sprin…

前端已死?后端已亡?弯弯绕绕,几分真几分假

前段时间&#xff0c;我在掘金分享了一篇GPT-4 性能文章&#xff0c;也许是过于强大带来的威胁性&#xff0c;引来评论区的排队哀嚎&#xff08;如下图&#xff09;&#xff0c;所以“前端已死&#xff0c;后端已亡”这个概念真的成立吗&#xff1f;本文着重探讨前端。 前端和后…

警惕,3月20日WOS目录更新,50本SCI/SSCI被剔除,这个出版社多达18本

2023年3月SCI、SSCI期刊目录更新 2023年3月20日&#xff0c;Web of Science核心期刊目录再次更新&#xff01;此次2023年3月SCIE & SSCI期刊目录更新&#xff0c;与上次更新&#xff08;2023年2月&#xff09;相比&#xff0c;共有50本期刊被剔除出SCIE & SSCI期刊目录…

[ 网络 ] 应用层协议 —— HTTP协议

目录 1.HTTP协议 1.1URL urlencode和urldecode 2. HTTP协议格式 HTTP请求 HTTP响应 3.告知服务器意图的HTTP方法 GET&#xff1a;获取资源 POST&#xff1a;传输实体主体 GET和POST的区别 使用Cookie的状态管理 4.返回结果的HTTP状态码 状态码告知从服务器端返回的…

三月份跳槽了,历经字节测开岗4轮面试,不出意外,被刷了...

大多数情况下&#xff0c;测试员的个人技能成长速度&#xff0c;远远大于公司规模或业务的成长速度。所以&#xff0c;跳槽成为了这个行业里最常见的一个词汇。 前几天&#xff0c;我看到有朋友留言说&#xff0c;他在面试字节的测试开发工程师的时候&#xff0c;灵魂拷问三小…

【Shell】脚本

Shell脚本脚本格式第一个Shell脚本&#xff1a;hello.sh脚本常用执行方式1. bash或sh脚本的相对路径或绝对路径2. 输入脚本的绝对路径或相对路径3. 在脚本的路径前加上.或者source脚本格式 脚本以#!/bin/bash开头&#xff08;指定解析器&#xff09; #! 是一个约定的标记&…

让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析

让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析 标签&#xff1a;new bing、GPT-4 文章目录让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析前言1 让 bing 编写一个画螺旋线的程序1.1 我的要求&#xff08;1&#xff09;1.2 bing 的回答全文&#xff08;…

p81 红蓝对抗-AWD 监控不死马垃圾包资源库

数据来源 注意&#xff1a;一下写的东西是在p80 红蓝对抗-AWD 模式&准备&攻防&监控&批量这篇文章的基础上进行的 演示案例&#xff1a; 防守-流量监控-实时获取访问数据包流量 攻击-权限维持-不死脚本后门生成及查杀 其他-恶意操作-搅屎棍发包回首掏共权限…

WPF 认识WPF

什么是WPF?WPF是Windows Presentation Foundation(Windows展示基础)简称&#xff0c;顾名思义是专门编写表示层的技术。WPF绚丽界面如下&#xff1a;GUI发展及WPF历史&#xff1f;Windows系统平台上从事图形用户界面GUI(Graphic User Interface)已经经历了多次换代&#xff0c…

web前端开发和后端开发哪个难度大?

前言 因为涉及到的具体的应用的领域不同&#xff0c;所以说不能简单地说哪一个难&#xff0c;对于前端而言你会感觉到入门会非常的简单&#xff0c;这也是会给许多人一种错觉&#xff0c;前端很简单&#xff0c;但是只能说是在入门理解上是有利于新手的&#xff0c;前端在主要…

二叉树系统刷题1

文章目录**BM26** **求二叉树的层序遍历****BM27** **按之字形顺序打印二叉树****BM28** **二叉树的最大深度****BM29** **二叉树中和为某一值的路径(一)****BM30** **二叉搜索树与双向链表****BM31** **对称的二叉树****BM32** **合并二叉树****BM34** **判断是不是二叉搜索树…

【数据结构】KMP算法细节详解

KMP算法细节详解前言一、字符串匹配问题1.BF算法2.KMP算法二、next数组三、手写nex思想四、机算next思想五、next数组细节理解六、nextVal数组七、KMP算法代码实现八、nextVal数组代码实现完结前言 KMP算法是为了字符串匹配问题而被研究出来的&#xff0c;字符串匹配问题就是查…

真实的软件测试日常工作是咋样的?

最近很多粉丝问我&#xff0c;小姐姐&#xff0c;现在大环境不景气&#xff0c;传统行业不好做了&#xff0c;想转行软件测试&#xff0c;想知道软件测试日常工作是咋样的&#xff1f;平常的工作内容是什么&#xff1f; 别急&#xff0c;今天跟大家细细说一下一个合格的软件测…