k8s的部署管理以及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四种指标类型

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

go 复制代码
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差不多:
go 复制代码
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上配置相应的端口
go 复制代码
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets: ['192.168.60.169:9093']

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

go 复制代码
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

相关推荐
曦樂~2 小时前
【Docker】Dockerfile自定义镜像
运维·docker·容器
拾心212 小时前
【云运维】Kubernetes安装(基于 Docker + Calico)
运维·docker·kubernetes
Caster_Z2 小时前
Windows环境安装Docker
运维·docker·容器
不老刘2 小时前
使用 Docker Compose 一键更新:深入理解 docker-compose pull 的适用场景
docker·容器·eureka·cline
victory04314 小时前
K8S NFS PVC PV 挂载点路径问题
云原生·容器·kubernetes
小毅&Nora4 小时前
【云计算】【Kubernetes】 ① K8S的架构、应用及源码解析 - 核心架构与组件全景图
架构·kubernetes·云计算
踏浪无痕4 小时前
记一次被 K8s 网络 SNAT 坑惨的经历
网络协议·kubernetes
Mr_Dwj7 小时前
【运维】Docker 入门
运维·docker·云原生·容器
奋斗的蛋黄7 小时前
CI/CD 全流程指南:从概念到落地的持续交付实践
运维·ci/cd·kubernetes
肖祥7 小时前
OpenObserve日志分析平台
kubernetes·运维开发