Grafana 插件用于 OpenObserve 是一项商业企业功能。如果您对此感兴趣,请通过hello@zinclabs.io 联系我们。
Grafana 是一款仪表板和绘图应用程序,最初是为时间序列数据构建的,但已经发展成为可以从多个来源提取数据并在一个仪表板上可视化日志和跟踪数据的工具。它是监控和可观察性的流行工具。
您不需要使用 grafana 来可视化来自 OpenObserve 的日志和指标数据,只需维护另一个应用程序即可。OpenObserve 有一个非常先进的 GUI,可用于日志、指标和跟踪。但是,如果您已经在使用它来满足某些需求(例如使用 prometheus 监控指标并且习惯于使用它而不想更改),则可以使用 OpenObserve grafana 插件将来自 OpenObserve 的日志和指标数据可视化在您的grafana仪表板上。您还可以使用 grafana explore 工具从OpenObserve 查询即时日志和指标数据。
以下是安装和配置插件的步骤。我们将提供如何在 kubernetes 环境中设置 grafana 的指南。您可以根据需要调整这些步骤以在非 kubernetes 环境中设置 grafana。
如果您已经熟悉 grafana 插件安装,可以从这里下载插件并开始使用,或者按照以下步骤操作。
安装 Grafana
Grafana 需要一个持久存储来存储其数据和配置。虽然配置可以存储在 configmap 或secret 中,但数据需要存储在数据库中。Grafana 支持 sqlite、mysql 和 postgres。我见过的大多数安装都是使用单个节点的 grafana 安装,并使用 sqlite。我也看到许多人使用 kubernetes 部署。
如果您正在使用使用 sqlite 的单个节点 grafana 安装,则应使用 statefulset 而不是deployment,以便在 pod 重新启动时不会丢失数据。如果您使用的是 mysql/postgres,则可以使用 deployment,因为数据存储在数据库中。
您还需要一个 grafana.ini 配置文件来配置 grafana。您可以使用以下最小化的可用grafana.ini 文件开始。根据需要可以添加更多配置。
配置
grafana.ini
[date_formats]
default_timezone = UTC
[server]
root_url = https://grafana.yourdomain.com
[plugins]
enable_alpha = true
app_tls_skip_verify_insecure = false
allow_loading_unsigned_plugins = zinclabs_openobserve
请将第 4 行更新为您的 grafana 安装的 root URL。这是您将用于访问 grafana 的URL,例如 https://grafana.yourdomain.com。
第 9 行很重要,我们在其中指定 grafana 应该使用未签名插件 zinclabs_openobserve
。这是我们将在有状态集的 init 容器中安装的插件。
创建文件后,您可以使用以下命令创建 kubernetes secret。
kubectl create secret generic grafana-config --from-file=grafana.ini
部署
接下来就是安装了
grafana_statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: grafana
spec:
serviceName: "grafana"
replicas: 1
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
securityContext:
fsGroup: 2000
runAsUser: 10000
runAsGroup: 3000
initContainers:
- name: openobserve-plugin-loader
image: wbitt/network-multitool
imagePullPolicy: IfNotPresent
command:
[
"sh",
"-c",
"curl -o /var/lib/grafana/plugins/zo_gp.tar.gz https://zincsearch-releases.s3.us-west-2.amazonaws.com/zo_gp/zo_gp.tar.gz && cd /var/lib/grafana/plugins && tar -zxvf zo_gp.tar.gz",
]
volumeMounts:
- name: grafana-base
mountPath: /var/lib/grafana
- name: grafana-plugins
mountPath: /var/lib/grafana/plugins
containers:
- name: grafana
image: grafana/grafana:latest
ports:
- containerPort: 3000
name: grafana
volumeMounts:
- name: grafana-base
mountPath: /var/lib/grafana
- name: grafana-plugins
mountPath: /var/lib/grafana/plugins
- name: grafana-config
mountPath: /etc/grafana
volumes:
- name: grafana-base
persistentVolumeClaim:
claimName: grafana-base
- name: grafana-plugins
persistentVolumeClaim:
claimName: grafana-plugins
- name: grafana-config
secret:
defaultMode: 420
secretName: grafana-config
volumeClaimTemplates:
- metadata:
name: grafana-base
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
- metadata:
name: grafana-plugins
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: grafana
spec:
ports:
- port: 3000
targetPort: 3000
selector:
app: grafana
我们在这里使用init容器来下载和配置 grafana 容器的 openobserve 插件。
现在让我们使用以下命令安装有状态集。
kubectl apply -f grafana_statefulset.yaml