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

  1. [date_formats]
  2. default_timezone = UTC
  3. [server]
  4. root_url = https://grafana.yourdomain.com
  5. [plugins]
  6. enable_alpha = true
  7. app_tls_skip_verify_insecure = false
  8. 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

  1. apiVersion: apps/v1
  2. kind: StatefulSet
  3. metadata:
  4. name: grafana
  5. spec:
  6. serviceName: "grafana"
  7. replicas: 1
  8. selector:
  9. matchLabels:
  10. app: grafana
  11. template:
  12. metadata:
  13. labels:
  14. app: grafana
  15. spec:
  16. securityContext:
  17. fsGroup: 2000
  18. runAsUser: 10000
  19. runAsGroup: 3000
  20. initContainers:
  21. - name: openobserve-plugin-loader
  22. image: wbitt/network-multitool
  23. imagePullPolicy: IfNotPresent
  24. command:
  25. [
  26. "sh",
  27. "-c",
  28. "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",
  29. ]
  30. volumeMounts:
  31. - name: grafana-base
  32. mountPath: /var/lib/grafana
  33. - name: grafana-plugins
  34. mountPath: /var/lib/grafana/plugins
  35. containers:
  36. - name: grafana
  37. image: grafana/grafana:latest
  38. ports:
  39. - containerPort: 3000
  40. name: grafana
  41. volumeMounts:
  42. - name: grafana-base
  43. mountPath: /var/lib/grafana
  44. - name: grafana-plugins
  45. mountPath: /var/lib/grafana/plugins
  46. - name: grafana-config
  47. mountPath: /etc/grafana
  48. volumes:
  49. - name: grafana-base
  50. persistentVolumeClaim:
  51. claimName: grafana-base
  52. - name: grafana-plugins
  53. persistentVolumeClaim:
  54. claimName: grafana-plugins
  55. - name: grafana-config
  56. secret:
  57. defaultMode: 420
  58. secretName: grafana-config
  59. volumeClaimTemplates:
  60. - metadata:
  61. name: grafana-base
  62. spec:
  63. accessModes: ["ReadWriteOnce"]
  64. resources:
  65. requests:
  66. storage: 1Gi
  67. - metadata:
  68. name: grafana-plugins
  69. spec:
  70. accessModes: ["ReadWriteOnce"]
  71. resources:
  72. requests:
  73. storage: 1Gi
  74. ---
  75. apiVersion: v1
  76. kind: Service
  77. metadata:
  78. name: grafana
  79. spec:
  80. ports:
  81. - port: 3000
  82. targetPort: 3000
  83. selector:
  84. app: grafana

我们在这里使用init容器来下载和配置 grafana 容器的 openobserve 插件。

现在让我们使用以下命令安装有状态集。

kubectl apply -f grafana_statefulset.yaml