基于腾讯云Lighthouse自建Grafana和Prometheus服务

Kubernetes 是一种强大的容器编排系统,它使您能够轻松地部署、管理和扩展容器化应用程序。在监控和可视化方面,Grafana 和 Prometheus 是两个非常有用的工具。本文将引导读者朋友们在 Kubernetes 集群上安装和配置 Grafana 和 Prometheus。

前言

当在Kubernetes集群上安装Grafana和Prometheus之前,让我们首先了解一下这两个工具的基本概念和功能。

Grafana

Grafana 的主要作用是帮助用户将监控数据可视化,从而更容易理解应用程序和系统的性能、健康状况以及趋势。它提供了一个用户友好的界面,可以让用户创建漂亮和有用的监控仪表板,用于监视和分析数据。当与Prometheus等数据源集成时,Grafana可以展示Prometheus采集到的数据。

Prometheus

Prometheus 是一个开源的监控和警报工具,最初由SoundCloud开发并开源。其工作原理是定期从各种目标(如应用程序、容器、操作系统、数据库等)中抓取指标数据,存储在本地数据库中,并提供查询和警报功能。这种方式使得Prometheus适合于云原生环境和容器化应用程序的监控。

准备Kubernetes集群

Lighthouse是腾讯云推出的一款轻量应用服务器产品,它提供了高性价比、高可用性、高安全性和高灵活性的云端计算服务。具体信息参阅官方文档:轻量应用服务器概述

为了部署Grafana和Prometheus服务,我们需要购买一台轻量应用服务器,并配置好相关的环境和依赖。购买步骤参见官方文档:使用轻量应用服务器一键创建应用应用类型请选择** k3s**。

创建kubernetes部署配置文件

1、将下面的代码保存为grafpro.yaml,可根据实际修改部分参数,或使用后文的脚本自动修改。

yaml 复制代码
kind: Deployment
apiVersion: apps/v1
metadata:
  name: &name grafpro
  labels:
    app: *name
spec:
  selector:
    matchLabels:
      app: *name
  template:
    metadata:
      labels:
        app: *name
    spec:
      containers:
        - name: grafana
          image: grafana/grafana
          securityContext:
            runAsUser: 0
          ports:
            - containerPort: 3000
          volumeMounts:
            - name: *name
              subPath: grafana
              mountPath: /var/lib/grafana
        - name: prometheus
          image: prom/prometheus
          securityContext:
            runAsUser: 0
          ports:
            - containerPort: 9090
          volumeMounts:
            - name: *name
              subPath: etc
              mountPath: /etc/prometheus
            - name: *name
              subPath: prometheus
              mountPath: /prometheus
      volumes:
        - name: *name
          hostPath:
            path: /srv/grafpro
            type: DirectoryOrCreate
---
kind: Service
apiVersion: v1
metadata:
  name: &name grafpro
  labels:
    app: *name
spec:
  selector:
    app: *name
  ports:
    - name: grafana
      port: 3000
      targetPort: 3000
    - name: prometheus
      port: 9090
      targetPort: 9090
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: &name grafpro
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web,websecure
spec:
  rules:
    - host: grafana.example.org
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: *name
                port:
                  name: grafana
    - host: prometheus.example.org
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: *name
                port:
                  name: prometheus
  tls:
    - secretName: default

2、将下面的代码保存为grafpro.sh,请注意修改GRAFPRO_STORAGEGRAFPRO_DOMAINPROMETHEUS_DOMAIN变量的值。

shell 复制代码
export GRAFPRO_STORAGE=${GRAFPRO_STORAGE:-"/srv/grafpro"}

export GRAFANA_DOMAIN=${GRAFPRO_DOMAIN:-"grafana.example.org"}
export PROMETHEUS_DOMAIN=${PROMETHEUS_DOMAIN:-"grafana.example.org"}

mkdir -p $GRAFPRO_STORAGE/etc

cat <<EOF >$GRAFPRO_STORAGE/etc/prometheus.yml
global:
  scrape_interval: 5s
  scrape_timeout: 5s
  evaluation_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets:
          - 127.0.0.1:9090
EOF

cat grafpro.yaml \
    | sed "s#/srv/grafpro#$GRAFPRO_STORAGE#g" \
    | sed "s#grafana.example.org#$GRAFANA_DOMAIN#g" \
    | sed "s#prometheus.example.org#$PROMETHEUS_DOMAIN#g" \
    | kubectl apply -f -

3、将grafpro.yamlgrafpro.sh文件上传到k8s主服务器上的同一目录内。注意检查grafpro.sh文件的换行是否为LF,否脚本可能无法执行。

部署 Grafana 和 Prometheus

通过ssh登录服务器,执行以下命令,部署Grafana和Prometheus服务。

bash 复制代码
chmod +x grafpro.sh
./grafpro.sh

测试和验证

Grafana

1、浏览器打开http://grafana.example.org,使用用户名admin和密码admin登录,此时会提示修改一个新的密码,修改后将自动转入控制台页面。

2、浏览器打开http://grafana.example.org/connections/datasources/edit/bc3e3d0a-090a-469f-8c25-f93818410784,在Prometheus server URL输入框内填入http://127.0.0.1:9090,点击Save & Test后保存。

3、浏览器打开http://grafana.example.org/connections/datasources/edit/bc3e3d0a-090a-469f-8c25-f93818410784/dashboards,导入Prometheus 2.0 Stats仪表盘。

Prometheus

浏览器打开http://prometheus.example.org,无需登录即可使用查询面板。生产环境建议至少添加Basic Auth认证,防止数据泄露。

写在最后

本文介绍了如何安装Grafana和Prometheus,并未添加数据采集器(exporter),我将分为不同的章节为大家一一介绍常用的数据采集器。请大家收藏若海の技术写真,关注后续的章节。

相关推荐
Kendra9198 小时前
Kubernetes 常用命令
云原生·容器·kubernetes
2501_9399090517 小时前
k8s基础与安装部署
云原生·容器·kubernetes
谷隐凡二18 小时前
Kubernetes Route控制器简单介绍
java·容器·kubernetes
李少兄1 天前
Kubernetes 日志管理
docker·容器·kubernetes
秋饼1 天前
【K8S测试程序--git地址】
git·容器·kubernetes
oMcLin1 天前
如何在RHEL 9上配置并优化Kubernetes 1.23高可用集群,提升大规模容器化应用的自动化部署与管理?
kubernetes·自动化·php
ghostwritten1 天前
Kubernetes 网络模式深入解析?
网络·容器·kubernetes
原神启动11 天前
K8S(七)—— Kubernetes Pod 基础概念与实战配置
云原生·容器·kubernetes
不想画图1 天前
Kubernetes(五)——rancher部署和Pod详解
linux·kubernetes·rancher
大都督老师1 天前
配置 containerd 使用镜像加速器拉取 Docker Hub 镜像
容器·kubernetes·k8s