-
Notifications
You must be signed in to change notification settings - Fork 127
[ISSUE #50] Feature add rocketmq exporter to nameserver #51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
cbd0f7a
aa26794
a50a2a7
faa70cb
9f32992
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -63,6 +63,9 @@ spec: | |
| items: | ||
| type: object | ||
| type: array | ||
| exporter: | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The |
||
| description: Exporter defines rocketmq metrics | ||
| type: object | ||
| required: | ||
| - size | ||
| - nameServiceImage | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,157 @@ | ||
| # Licensed to the Apache Software Foundation (ASF) under one or more | ||
| # contributor license agreements. See the NOTICE file distributed with | ||
| # this work for additional information regarding copyright ownership. | ||
| # The ASF licenses this file to You under the Apache License, Version 2.0 | ||
| # (the "License"); you may not use this file except in compliance with | ||
| # the License. You may obtain a copy of the License at | ||
| # | ||
| # http://www.apache.org/licenses/LICENSE-2.0 | ||
| # | ||
| # Unless required by applicable law or agreed to in writing, software | ||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| # See the License for the specific language governing permissions and | ||
| # limitations under the License. | ||
|
|
||
| apiVersion: v1 | ||
| kind: ConfigMap | ||
| metadata: | ||
| name: broker-config | ||
| data: | ||
| # BROKER_MEM sets the broker JVM, if set to "" then Xms = Xmx = max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB)) | ||
| BROKER_MEM: " -Xms2g -Xmx2g -Xmn1g " | ||
| broker-common.conf: | | ||
| # brokerClusterName, brokerName, brokerId are automatically generated by the operator and do not set it manually!!! | ||
| deleteWhen=04 | ||
| fileReservedTime=48 | ||
| flushDiskType=ASYNC_FLUSH | ||
| # set brokerRole to ASYNC_MASTER or SYNC_MASTER. DO NOT set to SLAVE because the replica instance will automatically be set!!! | ||
| brokerRole=ASYNC_MASTER | ||
|
|
||
| --- | ||
| apiVersion: rocketmq.apache.org/v1alpha1 | ||
| kind: Broker | ||
| metadata: | ||
| # name of broker cluster | ||
| name: broker | ||
| spec: | ||
| # size is the number of the broker cluster, each broker cluster contains a master broker and [replicaPerGroup] replica brokers. | ||
| size: 1 | ||
| # nameServers is the [ip:port] list of name service | ||
| nameServers: "" | ||
| # replicaPerGroup is the number of each broker cluster | ||
| replicaPerGroup: 0 | ||
| # brokerImage is the customized docker image repo of the RocketMQ broker | ||
| brokerImage: apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0 | ||
| # imagePullPolicy is the image pull policy | ||
| imagePullPolicy: Always | ||
| # resources describes the compute resource requirements and limits | ||
| resources: | ||
| requests: | ||
| memory: "2048Mi" | ||
| cpu: "250m" | ||
| limits: | ||
| memory: "12288Mi" | ||
| cpu: "500m" | ||
| # allowRestart defines whether allow pod restart | ||
| allowRestart: true | ||
| # storageMode can be EmptyDir, HostPath, StorageClass | ||
| storageMode: EmptyDir | ||
| # hostPath is the local path to store data | ||
| hostPath: /tmp/data/rocketmq/broker | ||
| # scalePodName is [Broker name]-[broker group number]-master-0 | ||
| scalePodName: broker-0-master-0 | ||
| # env defines custom env, e.g. BROKER_MEM | ||
| env: | ||
| - name: BROKER_MEM | ||
| valueFrom: | ||
| configMapKeyRef: | ||
| name: broker-config | ||
| key: BROKER_MEM | ||
| # volumes defines the broker.conf | ||
| volumes: | ||
| - name: broker-config | ||
| configMap: | ||
| name: broker-config | ||
| items: | ||
| - key: broker-common.conf | ||
| path: broker-common.conf | ||
| # volumeClaimTemplates defines the storageClass | ||
| volumeClaimTemplates: | ||
| - metadata: | ||
| name: broker-storage | ||
| spec: | ||
| accessModes: | ||
| - ReadWriteOnce | ||
| resources: | ||
| requests: | ||
| storage: 8Gi | ||
| selector: | ||
| matchLabels: | ||
| app: broker-storage-pv | ||
| --- | ||
| apiVersion: rocketmq.apache.org/v1alpha1 | ||
| kind: NameService | ||
| metadata: | ||
| name: name-service | ||
| spec: | ||
| # size is the the name service instance number of the name service cluster | ||
| size: 1 | ||
| # nameServiceImage is the customized docker image repo of the RocketMQ name service | ||
| nameServiceImage: apacherocketmq/rocketmq-nameserver:4.5.0-alpine-operator-0.3.0 | ||
| # imagePullPolicy is the image pull policy | ||
| imagePullPolicy: Always | ||
| # hostNetwork can be true or false | ||
| hostNetwork: true | ||
| # Set DNS policy for the pod. | ||
| # Defaults to "ClusterFirst". | ||
| # Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The exporter sidecar uses |
||
| # DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. | ||
| # To have DNS options set along with hostNetwork, you have to specify DNS policy | ||
| # explicitly to 'ClusterFirstWithHostNet'. | ||
| dnsPolicy: ClusterFirstWithHostNet | ||
| # resources describes the compute resource requirements and limits | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The example file uses |
||
| resources: | ||
| requests: | ||
| memory: "512Mi" | ||
| cpu: "250m" | ||
| limits: | ||
| memory: "1024Mi" | ||
| cpu: "500m" | ||
| # storageMode can be EmptyDir, HostPath, StorageClass | ||
| storageMode: EmptyDir | ||
| # hostPath is the local path to store data | ||
| hostPath: /data/rocketmq/nameserver | ||
| exporter: | ||
| enabled: true | ||
| annotations: | ||
| prometheus.io/path: /metrics | ||
| prometheus.io/port: "5557" | ||
| prometheus.io/scrape: "true" | ||
| env: | ||
| - name: WEB_TELEMETRY_PATH | ||
| value: /metrics | ||
| - name: ROCKETMQ_VERSION | ||
| value: V4_3_2 | ||
| - name: NAMESRV_ADDR | ||
| value: 127.0.0.1:9876 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it better to init the NAMESRV_ADDR env in nameservice_controller.go |
||
| image: miaolinjie/rocketmq-exporter:latest | ||
| imagePullPolicy: Always | ||
| resources: | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The example uses a personal Docker Hub image ( |
||
| requests: | ||
| memory: "512Mi" | ||
| cpu: "250m" | ||
| limits: | ||
| memory: "1024Mi" | ||
| cpu: "500m" | ||
| # volumeClaimTemplates defines the storageClass | ||
| volumeClaimTemplates: | ||
| - metadata: | ||
| name: namesrv-storage | ||
| spec: | ||
| accessModes: | ||
| - ReadWriteOnce | ||
| storageClassName: rocketmq-storage | ||
| resources: | ||
| requests: | ||
| storage: 1Gi | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The CRD schema defines
exporterastype: objectwith no properties specified. This means Kubernetes will not validate any of the exporter subfields (enabled, image, env, resources, etc.). The schema should be expanded with proper property definitions to enable server-side validation and prevent misconfigured exporter specs from being accepted silently.