第四步下:安装rancher 监控,缺告警

本来想监控与告警一起写,但最近几天研究了rancher的告警,按照文档说法,配置了但没有触发,网上找了一些资料,有的在rancher 2.6成功的,但我用同样的方法在2.7.1和2.7.2配置了,都没有触发成功。我还专门在rancher github上留了贴 Can not send alert email · Issue #41274 · rancher/rancher · GitHub,希望后面的版本有改进,所以本文先以监控为主要内容

 

具体部署环境与第四步上一样

服务器IP用途环境说明
10.10.10.5 部署ranchercentos 8 安装docker
10.10.10.6 k8s-master1 ,etcdcentos 8 安装docker
10.10.10.7k8s-master2 ,etcdcentos 8 安装docker
10.10.10.8k8s-master3,etcdcentos 8 安装docker
10.10.10.9k8s-node1,workercentos 8 安装docker
10.10.10.10k8s-node2,workercentos 8 安装docker

这里要注意,由于安装监控的时候,启动了持久化,所以一定要先安装longhorn后才能安装告警

 

1、安装监控

在rancher管理界面进入某个集群,点击 “应用--->charts--->Monitoring”,具体如下图: 

fe69bd1c9ec4474587cdd90142daa0c4.png

 

2、设置prometheus和grafna持久化,设置存储类型为longhorn,使用longhorn来进行持久化,具体如下图:

c99c2071cf594d349598a0c44d45c140.png

 100ccef6dcd54ce4b03cb22d6a21f211.png

 

3、如果安装成功,会看到监控选项,点击能看到prometheus和grafana的入口,longhorn能看到prometheus和grafana的volumn,具体如下图:

ac0eb57c57874f11bcbbc286848c44db.png

8b2731c153d2452782199cc145387e02.png

 注意:可以使用  用户名:admin 密码:prom-operator来登录grafana

 

4、设置监控指标输出地址

  1)、预先准备了一个go gin的应用程序,并加入了prometheus指标的输出,默认指标输出地址是 /metrics,然后把该程序打包成镜像,部署到k8s,建立了一个service名字叫hellworld,具体代码和dockerfile如下:

package main
import (
	"github.com/prometheus/client_golang/prometheus/promhttp"
	"net/http"
    "github.com/gin-gonic/gin"
)
// prometheus metircs
func PromHandler(handler http.Handler) gin.HandlerFunc {
	return func(c *gin.Context) {
		handler.ServeHTTP(c.Writer, c.Request)
	}
}
func setupRouter() *gin.Engine {
	// 初始化 Gin 框架默认实例,该实例包含了路由、中间件以及配置信息
	r := gin.Default()
   // Ping 测试路由
	r.GET("/hi", func(c *gin.Context) {
		c.String(http.StatusOK, "hello world!")
	})
    r.GET("metrics", PromHandler(promhttp.Handler()))
    return r
}

func main() {
	// 设置路由信息
	r := setupRouter()
	// 启动服务器并监听 8080 端口
	r.Run(":8080")
}
FROM golang:1.20.2 
# AS build
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct
RUN mkdir -p /api
WORKDIR /api
COPY . .
RUN go mod download
RUN GOOS=linux CGO_ENABLED=1 GOARCH=amd64 go build   -o ./app
CMD ["./app"]

 

2)、 在helloworld服务加上  app =hellowrold标签,具体如下图:

aea6035fed904a73a63e9cdff62d5ac7.png

 

3)、建立 ServiceMonitor yaml,具体如下图,

 

067e0b0aa6bf449c8d18b5581330b5d6.png

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: helloworldsm
  namespace: test
spec:
  endpoints:
    - port: helloworldport
  selector:
    matchLabels:
      app: hellowrold

 注意如下内容:

 matchLabels:
      app: hellowrold   

 #这里是第2)步加入的service标签

 endpoints:
    - port: helloworldport

   #这里是在部署deployment的时候指定端口映射时起的名字,具体见下面第三幅图片

c3d94175bec64fc9ab0bf11521d8f923.png

 

4)、如果一切正常,能在prometheus 目标里面看到监控指标的地址,并显示up,具体如下图:

cc7dea1521534de49aa5faa40e68c2ca.png

 72ce40c36a914252b5e116e51243e6ff.png

 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐