前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于腾讯云Lighthouse自建Grafana和Prometheus服务

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

原创
作者头像
若海
发布2023-10-25 21:55:30
2.3K0
发布2023-10-25 21:55:30
举报
文章被收录于专栏:云原生拾遗云原生拾遗

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服务。

代码语言:shell
复制
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),我将分为不同的章节为大家一一介绍常用的数据采集器。请大家收藏若海の技术写真,关注后续的章节。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • Grafana
      • Prometheus
      • 准备Kubernetes集群
      • 创建kubernetes部署配置文件
      • 部署 Grafana 和 Prometheus
      • 测试和验证
        • Grafana
          • Prometheus
          • 写在最后
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档