k8s部署prometheus(第二版)

news/2024/5/19 0:21:48 标签: kubernetes, prometheus, docker

prometheus_0">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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


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

相关文章

外贸建站之独立站系统选择

不少刚跨入外贸电商行业或才以SASS建站系统转到独立的用户经常都会遇到一个问题&#xff0c;我到底选择哪种开源系统来建站呢&#xff1f;我们经常听到有zencart,opencart,wordpress,magento等等国外的优秀开源系统&#xff0c;甚至国内的一些被开源或破解的系统什么ecshop,fas…

【软考笔记】1. 计算机原理与体系结构

数据的表示 进制转换原码反码补码浮点运算 进制转换 十进制 > R 进制&#xff1a;短除法 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5JkqorG-1679403749037)(/assets/图片已粘贴至2022-11-21%2017-03.png)] 原码反码补码 原码就是符号…

《SpringBoot篇》26.SpringBoot整合Jackson超详细教程(附Jackson工具类)

陈老老老板&#x1f9b8;&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;SpringBoot篇&#xff08;主要讲一些与springboot整合相关的内容&#xff09;&#x1f468;‍&#x1f4bb;本文简述&#xff1a;本文讲一下Jackson常见用法&#xff0c;超级详细。&#x1f468;‍&am…

支持向量机(二)(非线性支持向量机与核函数)

文章目录核技巧正定核常用核函数References核技巧 假设给定一个特征空间上的训练数据集 T{(x1,y1),(x2,y2),⋯,(xN,yN)}T\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T{(x1​,y1​),(x2​,y2​),⋯,(xN​,yN​)}其中&#xff0c;实例 xi∈XRnx_i\in \mathcal{X}\mathbb{R}^nxi​…

记2023的几次面试

“金三银四”是一年中求职市场最为火热的时期&#xff0c;通常指的是3月到4月份和9月到10月份。 今年(2023年)的“金三银四”对于Java开发人员来说&#xff0c;有点凉凉。疫情刚刚过去&#xff0c;本来可以线上的面试&#xff0c;现在好多约线下让跑一趟甚至两三趟。 在往年的…

idea maven配置

找到 File>Settings… 打开 我找到这里这个 Maven 我们将这里打钩 然后 我们在本地建一个文件夹 注意 尽量选大点的盘符 这里我在D盘下创建了一个叫 MavenIibr的文件夹 这里名字是随便取的 然后顺着 User settings file 的内容 找到对应的位置 将他下面全部的东西 都拷…

贝叶斯分层模型(Hierarchical Models)

前言 许多统计应用涉及多个参数&#xff0c;这些参数可以通过问题的结构以某种方式被视为相关或连接&#xff0c;这意味着这些参数的联合概率模型应该反映它们的相关性。例如&#xff0c;在一项关于心脏治疗效果的研究中&#xff0c;由于j医院的患者具有生存概率θj&#xff0…

实现el-table中邮箱分行展示和逗号

<el-table-column prop"noticeEmailStr" label"通知邮箱"><template slot-scope"scope">{{scope.row.noticeEmailStr.split(",").map((noticeEmailStr,index,{length}) >(index1 ! length)?noticeEmailStr , \n:not…