Skip to content

mo ob deploy doc v0.7.0

xzxiong edited this page Apr 20, 2023 · 6 revisions

Prerequisites

本文档的安装环境是一个正常运行的k8s集群并装有MO-Opeatror,我们需要安装以下组件:

  1. 一套专门用于可观测的分布式 MO
  2. MO-Agent Helm Chart ( mo agent, prometheus agent, fluentbit, node exporter, cadvisor included )
  3. MO-Ruler Helm Chart ( mo ruler, grafana, alertmanager included )

Getting Started

首先,创建用于可观测的命名空间 mo-ob

$ kubectl create ns mo-ob

Install MO-Cluster

由于我们已经预先安装了 MO-Operator 我们可以直接创建一个k8s的资源文件并apply即可安装

$ curl https://raw.githubusercontent.com/matrixorigin/matrixone-operator/main/examples/mo-cluster.yaml > mo.yaml

根据需要,调整集群的配置),并安装

$ vim ./mo.yaml
# install
$ kubectl -n mo-ob apply -f ./mo.yaml
# uninstall
$ kubectl -n mo-ob delete matrixonecluster mo

推荐的配置在附录中,另外需要确认的是是否有在命名空间中配置aws s3的密钥(本地则是minio),s3默认的存储桶是 mo-ob/ob-data

kubectl -n mo-ob create secret generic aws --from-literal=AWS_REGION=us-west-2 --from-literal=AWS_ACCESS_KEY_ID=<ID> --from-literal=AWS_SECRET_ACCESS_KEY=<KEY>

需要稍微等待一段时间,输入以下命令验证,见到 PHASE 为 Ready 说明 MO-Cluster 已经安装成功

$ kubectl -n mo-ob get matrixonecluster
NAME   LOG   DN    TP    AP    VERSION            PHASE   AGE
mo     3     1     2           nightly-2ba279bb   Ready   102s

开放端口用于mysql连接(测试用,可跳过)

$ nohup kubectl -n mo-ob port-forward svc/mo-tp-cn 6001:6001 &
$ mysql -h 127.0.0.1 -P6001 -udump -p111

Install MO-Agent

Chart 包

  • 获取chart包
$ git clone [email protected]:matrixone-cloud/observability.git
$ cd observability/charts/mo-agent-stack
  • 目录结构
mo-agent-stack
├── Chart.lock
├── Chart.yaml
├── charts
├── mo.yaml          # 配置管理
├── templates
└── values.yaml

配置

安装MO-Agent之前只需要在chart包目录下的mo.yaml

  1. 指定好写入的DB相关的 hostname,password 即可:
moAgent:
  agentSpec:
    mo:
-      host: mo-tp-cn.<OB_NAMESPACE>
-      port: 6001
-      user: dump
-      password: 111
+      host: host
+      port: 6001
+      user: user
+      password: pwd
      connectTimeout: 15s
      maxOpens: 5
      maxIdles: -1
      initPingCnt: 60

默认配置是以命名空间为mo-ob前提的,如果使用别的命名空间,还需要修改相应配置项:

  1. fluent-bit写入mo-agent的http output信息:
    fluent-bit:
      config:
        outputs: |
          [OUTPUT]
              Name  http
              Match *
-              Host  mo-agent-service.mo-ob
+              Host  mo-agent-service.<OTHER_NAMESPACE>
              Port  8000
              URI   /v1/logs
              Format json
  1. prometheus-agent写入mo-agent的 remote write信息:
    prometheus:
        remoteWrite: 
-          - url: "http://mo-agent-service.<OB_NAMESPACE>:8000/v1/metrics"
+          - url: "http://mo-agent-service.mo-ob:8000/v1/metrics"
  1. (可选) 修改镜像
moAgent:
  ...
  image:
    containerName: mo-agent
    pullPolicy: IfNotPresent
-    repository: matrixorigin/observability
-    tag: mo-agent-0.7.0
+    repository: your_hub/observability
+    tag: your_image_tag

安装mo-agent的chart包

# install 
$ helm install mo-agent-stack ./charts/mo-agent-stack -n mo-ob -f ./charts/mo-agent-stack/mo.yaml
# uninstall 
$ helm uninstall mo-agent-stack -n mo-ob
# upgrade
$ helm upgrade mo-agent-stack ./charts/mo-agent-stack -n mo-ob -f ./charts/mo-agent-stack/mo.yaml

注:如果只需要采集日志/指标,可以将mo.yaml里的 promtheus-enabled / fluentbit-enabled 设为 false

Install MO-Ruler

Chart 包

  • 获取chart包
$ git clone [email protected]:matrixone-cloud/observability.git
$ cd observability/charts/mo-ruler-stack
  • 目录结构
mo-ruler-stack
├── Chart.lock
├── Chart.yaml
├── charts
├── grafana       # grafana dashboard 配置
├── mo.yaml       # MO 配置
├── templates
└── values.yaml

配置

安装MO-Ruler 之前需要修改 chart包目录下的 mo.yaml 配置

  1. 指定好写入的DB相关的hostname,password:
moRuler:
  ...
  rulerSpec:
    alerting:
      alertingEndpoint:
        scheme: http
        targets:
-          - "mo-ruler-stack-alertmanager.<OB_NAMESPACE>:9093"
+          - "mo-ruler-stack-alertmanager.mo-ob:9093"
    ...
    ruler:
      ...
      mo:
-        host: mo-tp-cn.<OB_NAMESPACE>
-        port: 6001
-        user: dump
-        password: 111
+        host: host
+        port: 6001
+        user: user
+        password: pwd
         connectTimeout: 15s
         maxOpens: 5
         maxIdles: -1
         initPingCnt: 60
  1. 以及告警相关的 alertmanager配置,为此需要创建一个secret存储smtp密码:
kubectl -n mo-ob create secret generic alertmanager-secret --from-literal=smtp-password=<password>
  1. 还需要填入告警邮件接受者邮箱以及smtp信息,也可以自行修改相应的mount信息(以下为默认值):
alertmanager:
  config:
    global: 
        smtp_from: '[email protected]'
        smtp_hello: 'smtp.exmail.qq.com:465'
        smtp_smarthost: 'smtp.exmail.qq.com:465'
        smtp_auth_username: '[email protected]'
        smtp_auth_password_file: '/tmp/smtp-password/smtp-password'
        smtp_require_tls: false
    receivers:
      - name: default-receiver
        email_configs:
-          - to: '[email protected]'
+          - to: 'email_receivce_addr'
            # send_resolved: true
  extraSecretMounts: 
  - name: smtp-files
    mountPath: /tmp/smtp-password
    subPath: ""
    secretName: alertmanager-secret
    readOnly: true
  • (可选)修改镜像
moRuler:
  containerName: mo-ruler
  replicaCount: 1
  image:
-    repository: matrixorigin/observability
-    tag: mo-ruler-0.7.0
+    repository: your_hub/observability
+    tag: your_image_tag
    pullPolicy: Always
    ...
  • 可选配置:为grafana添加数据源(也可以部署以后在UI页面天添加)

TODO:grafana的额外Auth方式

grafana:
  adminUser: admin
  adminPassword: admin
  datasources: 
    datasources.yaml:
      apiVersion: 1
      datasources:
      - name: MO-OB-QA-Control-Plane-Metrics
        type: prometheus
        url: http://mo-ruler-service.mo-ob:9199
        access: proxy
      - name: MO-OB-QA-Unit-Metrics
        type: prometheus
        url: http://aws-ap-southeast-1-mo-ruler-service.cos:9199
        access: proxy
      - name: MO-OB-QA-Control-Plane-Logs
        type: mysql
        # no http://
        url: host:3306
        user: mo_ob
        jsonData:
          database: mo_ob_logs
        secureJsonData:
          password: pwd

可选配置:如果需要添加dashboard,将json文件拷贝至 charts/mo-ruler-stack/grafana/dashboards/matrixone-cloud 下即可

可选配置:如果需要增加告警规则,使用prom规则语法将告警规则文件放在 charts/mo-ruler-stack/rules 下即可

安装mo-ruler的chart包

# install 
$ helm install mo-ruler-stack ./charts/mo-ruler-stack -n mo-ob -f ./charts/mo-ruler-stack/mo.yaml
# uninstall 
$ helm uninstall mo-ruler-stack -n mo-ob
# upgrade
$ helm upgrade mo-ruler-stack ./charts/mo-ruler-stack -n mo-ob -f ./charts/mo-ruler-stack/mo.yaml
Clone this wiki locally