k8s的部署管理以及prometheus相关监控

news/2024/5/19 0:21:46 标签: kubernetes, prometheus, 容器
  1. 安装运行prometheus和grafana
  2. 编辑prometheus配置文件,增加采集prometheus自身数据的采集规则
  3. grafana上导入prometheus相关图表的dashboard

前面三步主要根据https://blog.csdn.net/shnu_cdk/article/details/132182858?spm=1001.2014.3001.5506

  1. 用Go编写一个prometheus exporter,包含prometheus四种指标类型

这一部分直接查看官方文档使用说明。

package main

import (
	"fmt"
	"math/rand"
	"net/http"
	"time"

	"github.com/prometheus/client_golang/prometheus"
	"github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
	// 创建并注册指标
	counter := prometheus.NewCounter(prometheus.CounterOpts{
		Name: "my_counter",
		Help: "A counter metric",
	})
	prometheus.MustRegister(counter)

	gauge := prometheus.NewGauge(prometheus.GaugeOpts{
		Name: "my_gauge",
		Help: "A gauge metric",
	})
	prometheus.MustRegister(gauge)

	histogram := prometheus.NewHistogram(prometheus.HistogramOpts{
		Name: "my_histogram",
		Help: "A histogram metric",
	})
	prometheus.MustRegister(histogram)

	summary := prometheus.NewSummary(prometheus.SummaryOpts{
		Name: "my_summary",
		Help: "A summary metric",
	})
	prometheus.MustRegister(summary)

	// 定期更新指标值
	go func() {
		for {
			counter.Inc()
			gauge.Set(rand.Float64() * 100)
			histogram.Observe(rand.Float64() * 100)
			summary.Observe(rand.Float64() * 100)
			time.Sleep(time.Second)
		}
	}()

	// 启动HTTP服务,暴露指标
	http.Handle("/metrics", promhttp.Handler())
	fmt.Println("Exporter is running on http://localhost:8080/metrics")
	http.ListenAndServe(":8080", nil)
}

  1. prometheus能够正常采集第四步中的exporter,并在grafana上展示
    在yml配置文件上配置相对应的端口,这一部分和配置一个node差不多:
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

  
  - job_name: 'export'
    
    static_configs:
      - targets: ['192.168.60.177:8080']
        labels:
          instance: export
  1. 了解alertmanager,知道alertmanager的webhook推送告警方式
    主要是要在prometheus上配置相应的端口
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets: ['192.168.60.169:9093']

然后在altermanager里面配置相应的路由树

route:
  group_by: ['alertname']
  group_wait: 1s
  group_interval: 1s
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
  - name: 'web.hook'
    webhook_configs:
      - url: 'http://192.168.60.188:8093/demo'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

接下来熟练操作k8s,我们采用搭建minikube来学习k8s
主要熟悉以下两个方面:

  1. 通过kubectl创建资源

  2. 使用client-go通过代码创建资源
    https://blog.51cto.com/daixuan/5184509


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

相关文章

WordPress(安装比子主题文件)zibll-7.5.1

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、新建网站二、配置ssl三.配置伪静态四.上传文件五.添加本地访问前言 提示:这里可以添加本文要记录的大概内容: 首先,我们要先理解什么是授权原理。 原理就是我们大家运营网站,点击授权…

TikTok美食狂潮:短视频如何塑造食物文化新趋势

短视频不仅成为分享美食的平台&#xff0c;更是塑造了一种全新的食物文化趋势。本文将深入探讨TikTok如何通过短视频影响食物文化&#xff0c;并推动美食体验的创新。 创意美食视频的崛起 传统的美食呈现方式通常通过图片或文字&#xff0c;而短视频带来了全新的美食呈现方式。…

rabbitmq如何保证消息的可靠性

RabbitMQ可以通过以下方式来保证消息的可靠性&#xff1a; 1. 持久化消息 在发布消息时&#xff0c;可以设置消息的delivery mode为2&#xff0c;这样消息会被持久化存储在磁盘上&#xff0c;即使RabbitMQ服务器重启&#xff0c;消息也不会丢失。 2. 持久化队列 可以创建持…

Java研学-IO流(三)

六 字节流 – 字节输出流系列 OutPutStream体系 1 OutPutStream系列 – 字节输出流 // 表示字节输出流所有类的超类&#xff0c;输出流接受输出字节并将其发送到某个接收器 public abstract class OutputStreamFileOutputStream/BufferedOutputStream 2 FileOutputStream类设…

ubuntu中删除镜像和容器、ubuntu20.04配置静态ip

1 删除镜像 # 短id sudo docker rmi 镜像id # 完整id sudo docker rmi 镜像id# 镜像名【REPOSITORY:TAG】 sudo docker rmi redis:latest2 删除容器 # 删除某个具体容器 sudo docker rm 容器id# 删除Exited状态/未运行的容器&#xff0c;三种命令均可 sudo docker rm docker …

CAPL语言 自动化测试

CAPL语言 自动化测试 CAPL&#xff08;CAN Access Programming Language&#xff09;是一种专为CAN&#xff08;Controller Area Network&#xff09;网络开发的编程语言。这种语言主要用于汽车行业&#xff0c;尤其是在自动化测试和网络通信方面。以下是关于其在自动化测试中…

Maven Helper插件——实现一键Maven依赖冲突问题

总结/朱季谦 业余在一个SpringBoot项目集成Swagger2时&#xff0c;启动过程一直出现以下报错信息—— An attempt was made to call a method that does not exist. The attempt was made from the following location: ​ springfox.documentation.schema.DefaultModelDepe…

软件测试经典面试题分析——软件测试流程(第1天)

需求分析 跟同事之间探讨客户需求 对需求文档进行测试 互相交换想法 2、需求评审 如何评审 首先提前一天发邮件给格个参会人员&#xff0c;准备参与XXX项目需求评审 参与人员&#xff1a;产品经理&#xff0c;项目经理&#xff0c;研发负责人&#xff0c;研发小组成员&a…