我试着添加Rook和PostgreSQL的出口器

这篇文章是2018年PostgreSQL on Kubernetes Advent Calendar的第19天。
昨天我们尝试在PostgreSQL on Kubernetes环境中添加了Prometheus和Grafana来进行监控。

诚实地说,这次确实相当艰难。在Prometheus的跨命名空间监控方面,有很多案例,但实际尝试时往往不容易成功。

简而言之

    • 今日は失敗事例。

 

    PrometheusのNamespaceではまってます

增加对Rook/Ceph的监控

Rook在意识到Ceph的监控,并在GitHub上准备了一个名为”monitoring”的目录。

基本上,只需要在monitoring目录中创建一个Prometheus操作员并启动Prometheus本身即可,但我们已经在#18中完成了这一步骤。因此,本次我们将使用现有的Prometheus操作员。

    • Rook/CephのServiceMonitorを追加する。

 

    PostgreSQLのexporterとそれを取り込むServiceMonitorを追加する。

我打算试试(做) 。

添加ServiceMonitor

以下是位于rook的gituhub上的ServiceMonitor,请将其改写为之前构建的Prometheus版本。

以下是Rook的gituhub中的ServiceMonitor文件,现在需要将其更改为之前为Prometheus构建的版本。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: pg-rook-ceph-mgr
  namespace: monitoring
  labels:
    prometheus: pg
    app: rook-ceph-mgr
spec:
  namespaceSelector:
    matchNames:
      - rook-ceph
  selector:
    matchLabels:
      app: rook-ceph-mgr
      rook_cluster: rook-ceph
  endpoints:
  - port: http-metrics
    path: /metrics
    interval: 5s

我的意思是如下。

    • ServiceMonitorのpg-rook-ceph-mgrはPrometheusと同じNamespace:monitoringとする。

 

    spec以下はrook-ceph-mgrのポッド配置とあわせて、Namespace:rook-cephとする。

Prometheus与其他系统无法完美协同。

然而,如果在这种情况下通过Prometheus的用户界面进行确认,结果如下。

    • Service Discoveryでpg-rook-ceph-mgrは1つ見つかっている状態。

 

    Targetsで見るとrook-ceph-mgrはstate:DOWNになっている。

Endpoint 的地址是 http://:9283/metrics,看起来没有问题,而且使用curl命令也可以获取到metrics数据。

在进行了各种调查之后,我发现在Prometheus的Github上有许多与Namespace有关的问题,并且还有这样的文档。但是,我目前还不清楚如何具体添加Namespace。

只能无奈地改变Prometheus一侧的命名空间。

正如这篇文章所提到的,我觉得使用ClusterRole可能能解决问题,所以尝试了很多方法,但是效果不太好。

为了解决问题,我尝试更改了命名空间。
首先,我会使用helm delete –purge命令删除昨天安装的环境。

然后,更改Namespace并重新安装。

$ helm install coreos/prometheus-operator --name pg-op --namespace rook-ceph -f prometheus-operator-value.yaml

$ helm install coreos/kube-prometheus --name pg --namespace rook-ceph -f kube-prometheus-value.yaml

# 結果はこうなる
$ helm ls
NAME            REVISION        UPDATED                         STATUS          CHART                                   APP VERSION     NAMESPACE
pg              1               Fri Dec 21 14:36:23 2018        DEPLOYED        kube-prometheus-0.0.105                                 rook-ceph
pg-op           1               Fri Dec 21 14:33:39 2018        DEPLOYED        prometheus-operator-0.0.29              0.20.0          rook-ceph

在这种情况下,Prometheus的目标也变为State:UP。看起来这是一个与命名空间有关的确定问题。

导入Rook/Ceph的Grafana仪表板

一旦到这一步,Grafana的设置就很简单了。
我们将在昨天创建的Grafana中添加Ceph的仪表板。请参考此处。

image.png

添加对PostgreSQL的监控

PostgreSQL也有适用于Prometheus的exporter。你可以试试这个helm chart来使用它。

安装 Prometheus-Postgres-Exporter。

用 Helm 进行安装也适用于这里。
同样,虽然也存在命名空间的问题,但暂时将其安装在已经构建了 PostgreSQL 的默认目标位置上。

$helm install --name pg-postgres --set serviceAccount.name=postgres  stable/prometheus-postgres-exporter -f pg-rook-sf-exporter-value.yaml

$ kubectl apply -f pg-rook-sf-exporter-monitor.yaml

然而,这里也遇到了Rook/Ceph相同的问题。

    • Service Discoveryでpg-postgres-exporterは1つ見つかっている状態。

 

    Targetsで見るとpg-postgres-prometheus-postgres-exporterはstate:DOWNになっている。

在之前的Prometheus文件中,

默认情况下,Prometheus服务器仅限于三个必需的命名空间:default、kube-system和通过$._config.namespace进行堆栈配置运行的命名空间。

因为写着这样,所以我以为默认值没问题,但结果不行。如果能突破这一点,我觉得Grafana会很简单,但今天我放弃了。

概括

遗憾的是,Prometheus的监控不能按照预期的方式进行。实际上,我本打算尝试使用Prometheus+Grafana以及ElasticSearch+Kibana这两种与Kubernetes常常搭配使用的工具组合,但是并不那么容易呢。

我想再多学一些,然后再进行战斗。请多关照。

广告
将在 10 秒后关闭
bannerAds