{"id":8428,"date":"2020-04-21T06:00:53","date_gmt":"2020-04-21T13:00:53","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8428"},"modified":"2025-06-13T21:33:15","modified_gmt":"2025-06-14T04:33:15","slug":"step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/","title":{"rendered":"Couchbase Autonomous Operator 2.0 with Prometheus &#8211; Part 1"},"content":{"rendered":"<p><span style=\"font-weight: 400\">We recently announced the latest preview of the <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/announcing-couchbase-autonomous-operator-2-0\/\"><span style=\"font-weight: 400\">Couchbase Autonomous Operator (CAO) 2.0 beta<\/span><\/a><span style=\"font-weight: 400\">. This release is a significant update to the Couchbase Autonomous Operator. Couchbase Autonomous Operator 2.0 introduces several new enterprise-grade features with fully autonomous capabilities \u2013 security, monitoring, high-availability, and manageability. In this blog, we will examine in-depth how one of those works.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Prometheus Metrics Collection<\/span><\/h3>\n<p><span style=\"font-weight: 400\">The latest operator provides native integration with the Couchbase Prometheus Exporter for collecting and exposing Couchbase Server metrics. These exported metrics can be scraped by Prometheus and then visualized in tools like Grafana.<\/span><\/p>\n<p><span style=\"font-weight: 400\">We will describe the steps to deploy the cluster with the Couchbase Prometheus Exporter and look at some of the metrics through Grafana. This will be a simple single cluster test deployment and will not detail all the other necessary steps for a production level deployment.<\/span><\/p>\n<p><span style=\"font-weight: 400\">We will be closely following the <\/span><a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/tutorial-eks.html\"><span style=\"font-weight: 400\">Couchbase Autonomous Operator 2.0 Beta tutorial<\/span><\/a><span style=\"font-weight: 400\"> on installing on Amazon EKS.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Prerequisites<\/span><\/h3>\n<p><span style=\"font-weight: 400\">I assume you already have an <\/span><a href=\"https:\/\/aws.amazon.com\/vpc\/\"><span style=\"font-weight: 400\">Amazon Virtual Private Cloud<\/span><\/a><span style=\"font-weight: 400\"> (VPC) to use. Follow the documentation on <\/span><a href=\"https:\/\/docs.aws.amazon.com\/eks\/latest\/userguide\/getting-started.html\"><span style=\"font-weight: 400\">Getting Started with Amazon EKS<\/span><\/a><span style=\"font-weight: 400\"> and install the following:<\/span><\/p>\n<ul>\n<li><a href=\"https:\/\/kubernetes.io\/docs\/tasks\/tools\/install-kubectl\/\"><span style=\"font-weight: 400\">kubectl<\/span><\/a><\/li>\n<li><a href=\"https:\/\/docs.aws.amazon.com\/eks\/latest\/userguide\/install-aws-iam-authenticator.html\"><span style=\"font-weight: 400\">aws-iam-authenticator<\/span><\/a><\/li>\n<li><a href=\"https:\/\/github.com\/weaveworks\/eksctl\"><span style=\"font-weight: 400\">eksctl<\/span><\/a><\/li>\n<li><a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ec2-key-pairs.html\"><span style=\"font-weight: 400\">Amazon EC2 key pairs<\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/products\/cloud\/kubernetes\/\"><span style=\"font-weight: 400\">Couchbase Autonomous Operator 2.0 Beta<\/span><\/a><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400\">Deployment Architecture<\/span><\/h3>\n<p><span style=\"font-weight: 400\">A quick overview of the architecture of our deployment.<\/span><\/p>\n<p><span style=\"color: #343e47;font-family: Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 40px\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8456 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Blog1-architecture-1024x748.png\" alt=\"\" width=\"900\" height=\"657\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Blog1-architecture-1024x748.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Blog1-architecture-300x219.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Blog1-architecture-768x561.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Blog1-architecture-20x15.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Blog1-architecture-1320x964.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Blog1-architecture.png 1470w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/span><\/p>\n<p><span style=\"font-weight: 400\">Referring the above diagram:<\/span><\/p>\n<p><span style=\"font-weight: 400\">1: Create the Kubernetes cluster on Amazon EKS. The cluster manages Kubernetes Resources and Services.<br \/>\n<\/span><span style=\"font-weight: 400\">2: Add Couchbase Resources by installing the Couchbase Custom Resource Definitions.<br \/>\n<\/span><span style=\"font-weight: 400\">3: Install the Couchbase Autonomous Operator. This creates 2 Pods, the Operator and the Admission Controller in the Default namespace.<br \/>\n<\/span><span style=\"font-weight: 400\">4: Deploy a 3 node Couchbase Cluster in the Default namespace. This creates 3 pods, each pod has a Couchbase 6.5.0 container and a Couchbase Metrics Exporter container.<br \/>\n<\/span><span style=\"font-weight: 400\">5: Create a ServiceMonitor which tells Prometheus to monitor a Service resource that defines the endpoints Prometheus scrapes.<br \/>\n<\/span><span style=\"font-weight: 400\">6: Create a\u00a0 Service will define the port that we described in our ServiceMonitor at earlier in the Default namespace.<br \/>\n<\/span><span style=\"font-weight: 400\">7:\u00a0 Add Prometheus Resources by installing the Prometheus Custom Resource Definitions.<br \/>\n<\/span><span style=\"font-weight: 400\">8: Create the Prometheus\/Grafana Pods in the Monitoring namespace.\u00a0<\/span><\/p>\n<p><span style=\"color: #343e47;font-family: Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 40px\">Create the Cluster and Configure kubectl<\/span><\/p>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:sh decode:true\" title=\"Create Kubernetes cluster\">$ eksctl create cluster \\\r\n--name prasadCAO2 \\\r\n--region us-east-1 \\\r\n--zones us-east-1a,us-east-1b,us-east-1c \\\r\n--nodegroup-name standard-workers \\\r\n--node-type t3.medium \\\r\n--nodes 3 \\\r\n--nodes-min 1 \\\r\n--nodes-max 4 \\\r\n--ssh-access \\\r\n--ssh-public-key ~\/couchbase-prasad.pub \\\r\n--managed\r\n\r\n[\u2139]  eksctl version 0.16.0\r\n[\u2139]  using region us-east-1\r\n[\u2139]  subnets for us-east-1a - public:192.168.0.0\/19 private:192.168.96.0\/19\r\n[\u2139]  subnets for us-east-1b - public:192.168.32.0\/19 private:192.168.128.0\/19\r\n[\u2139]  subnets for us-east-1c - public:192.168.64.0\/19 private:192.168.160.0\/19\r\n[\u2139]  using SSH public key \"\/Users\/krishna.doddi\/couchbase-prasad.pub\" as \"eksctl-prasadCAO2-nodegroup-standard-workers-42:57:cd:cb:28:33:4a:d9:59:4e:73:3b:c0:e8:a3:fe\"\r\n[\u2139]  using Kubernetes version 1.14\r\n[\u2139]  creating EKS cluster \"prasadCAO2\" in \"us-east-1\" region with managed nodes\r\n[\u2139]  will create 2 separate CloudFormation stacks for cluster itself and the initial managed nodegroup\r\n[\u2139]  if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-east-1 --cluster=prasadCAO2'\r\n[\u2139]  CloudWatch logging will not be enabled for cluster \"prasadCAO2\" in \"us-east-1\"\r\n[\u2139]  you can enable it with 'eksctl utils update-cluster-logging --region=us-east-1 --cluster=prasadCAO2'\r\n[\u2139]  Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster \"prasadCAO2\" in \"us-east-1\"\r\n[\u2139]  2 sequential tasks: { create cluster control plane \"prasadCAO2\", create managed nodegroup \"standard-workers\" }\r\n[\u2139]  building cluster stack \"eksctl-prasadCAO2-cluster\"\r\n[\u2139]  deploying stack \"eksctl-prasadCAO2-cluster\"\r\n[\u2139]  building managed nodegroup stack \"eksctl-prasadCAO2-nodegroup-standard-workers\"\r\n[\u2139]  deploying stack \"eksctl-prasadCAO2-nodegroup-standard-workers\"\r\n[\u2714]  all EKS cluster resources for \"prasadCAO2\" have been created\r\n[\u2714]  saved kubeconfig as \"\/Users\/krishna.doddi\/.kube\/config\"\r\n[\u2139]  nodegroup \"standard-workers\" has 3 node(s)\r\n[\u2139]  node \"ip-192-168-13-207.ec2.internal\" is ready\r\n[\u2139]  node \"ip-192-168-62-181.ec2.internal\" is ready\r\n[\u2139]  node \"ip-192-168-93-184.ec2.internal\" is ready\r\n[\u2139]  waiting for at least 1 node(s) to become ready in \"standard-workers\"\r\n[\u2139]  nodegroup \"standard-workers\" has 3 node(s)\r\n[\u2139]  node \"ip-192-168-13-207.ec2.internal\" is ready\r\n[\u2139]  node \"ip-192-168-62-181.ec2.internal\" is ready\r\n[\u2139]  node \"ip-192-168-93-184.ec2.internal\" is ready\r\n[\u2139]  kubectl command should work with \"\/Users\/krishna.doddi\/.kube\/config\", try 'kubectl get nodes'\r\n[\u2714]  EKS cluster \"prasadCAO2\" in \"us-east-1\" region is ready\r\n<\/pre>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:zsh decode:true\" title=\"Kubernetes Service and Nodes\">$ kubectl get svc\r\n\r\nNAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE\r\nkubernetes   ClusterIP   10.100.0.1   &lt;none&gt;        443\/TCP   15m\r\n\r\n$ kubectl get nodes\r\n\r\nNAME \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 STATUS ROLES AGE VERSION\r\n\r\nip-192-168-13-207.ec2.internal \u00a0 Ready &lt;none&gt; 4d4h v1.14.9-eks-1f0ca9\r\nip-192-168-62-181.ec2.internal \u00a0 Ready &lt;none&gt; 4d4h v1.14.9-eks-1f0ca9\r\nip-192-168-93-184.ec2.internal \u00a0 Ready &lt;none&gt; 4d4h v1.14.9-eks-1f0ca9\r\n<\/pre>\n<h3>Configure kubectl<\/h3>\n<p>This command is vital as it sets the relevant Amazon Resource Name (ARN) variables in <code>~\/.kube\/config<\/code>. Optionally, you can add <code>--region regionName<\/code> to specify a cluster in a region that is different than the default. (Your default region should have been specified when you first setup the AWS CLI through <code>aws configure<\/code>command.)<\/p>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:default decode:true \" title=\"Configure kubectl\">$ aws eks update-kubeconfig --name prasadCAO2\r\n\r\nAdded new context arn:aws:eks:us-east-1:429712224361:cluster\/prasadCAO2 to \/Users\/krishna.doddi\/.kube\/config\r\n<\/pre>\n<p><span style=\"color: #343e47;font-family: Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 40px\">Install the Custom Resource Definitions (CRD)<\/span><\/p>\n<p><span style=\"font-weight: 400\">Note: I downloaded the Operator for MacOS, renamed the package from\u00a0 <\/span><b>couchbase-autonomous-operator-kubernetes_2.0.0-macos-x86_64<\/b><span style=\"font-weight: 400\"> to <\/span><b>cao-2<\/b><span style=\"font-weight: 400\"> and cd\u2019d into this directory.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The first step in installing the Operator is to install the custom resource definitions (CRD) that describe the Couchbase resource types.<\/span><\/p>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:zsh decode:true \" title=\"Extend Kubernetest API with Couchbase Custom Resource Definitions\">cao-2 $ kubectl create -f crd.yaml\r\n\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbasebuckets.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbaseephemeralbuckets.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbasememcachedbuckets.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbasereplications.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbaseusers.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbasegroups.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbaserolebindings.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbaseclusters.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbasebackups.couchbase.com created\r\ncustomresourcedefinition.apiextensions.k8s.io\/couchbasebackuprestores.couchbase.com created<\/pre>\n<h3><span style=\"font-weight: 400\">Install the Autonomous Operator 2.0<\/span><\/h3>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:zsh decode:true \" title=\"Create the Operator\">cao-2 $ bin\/cbopcfg | kubectl create -f -\r\n\r\nserviceaccount\/couchbase-operator-admission created\r\nclusterrole.rbac.authorization.k8s.io\/couchbase-operator-admission created\r\nclusterrolebinding.rbac.authorization.k8s.io\/couchbase-operator-admission created\r\nsecret\/couchbase-operator-admission created\r\ndeployment.apps\/couchbase-operator-admission created\r\nservice\/couchbase-operator-admission created\r\nmutatingwebhookconfiguration.admissionregistration.k8s.io\/couchbase-operator-admission created\r\nvalidatingwebhookconfiguration.admissionregistration.k8s.io\/couchbase-operator-admission created\r\nserviceaccount\/couchbase-operator created\r\nrole.rbac.authorization.k8s.io\/couchbase-operator created\r\nrolebinding.rbac.authorization.k8s.io\/couchbase-operator created\r\ndeployment.apps\/couchbase-operator created\r\nservice\/couchbase-operator created<\/pre>\n<h3><span style=\"font-weight: 400\">Check the status of the Operator<\/span><\/h3>\n<pre class=\"theme:dark-terminal toolbar:2 show-lang:1 show-plain:3 lang:default decode:true \" title=\"Check deployments\">cao-2 $ kubectl get deployments\r\n\r\nNAME \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 READY UP-TO-DATE AVAILABLE \u00a0 AGE\r\ncouchbase-operator \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 1\/1 1 1 \u00a0 96s\r\ncouchbase-operator-admission \u00a0 1\/1 1 1 \u00a0 97s<\/pre>\n<p><span style=\"font-weight: 400\">The Operator is ready to deploy CouchbaseCluster resources when both the Dynamic Admission Controller (couchbase-operator-admission) and Operator (couchbase-operator) deployments are fully ready and available.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Prepare the Couchbase Cluster Configuration<\/span><\/h3>\n<p><span style=\"font-weight: 400\">I\u2019ll deploy a 3 node Couchbase Server 6.5.0 Cluster with Prometheus Couchbase Exporter. For this, I created <\/span><b>my-cluster.yaml<\/b><span style=\"font-weight: 400\"> file in the current directory. This is just my sample. Here is the file:<\/span><\/p>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:default decode:true \" title=\"My sample: my-cluster.yaml\">apiVersion: v1\r\nkind: Secret\r\nmetadata:\r\n\u00a0\u00a0name: cb-example-auth\r\ntype: Opaque\r\ndata:\r\n\u00a0\u00a0username: QWRtaW5pc3RyYXRvcg== # Administrator\r\n\u00a0\u00a0password: cGFzc3dvcmQ= \u00a0 \u00a0 \u00a0 \u00a0 # password\r\n---\r\napiVersion: couchbase.com\/v2\r\nkind: CouchbaseCluster\r\nmetadata:\r\n\u00a0\u00a0name: cb-example\r\nspec:\r\n\u00a0\u00a0image: couchbase\/server:6.5.0\r\n\u00a0\u00a0security:\r\n\u00a0\u00a0\u00a0\u00a0adminSecret: cb-example-auth\r\n\u00a0\u00a0paused: false\r\n\u00a0\u00a0antiAffinity: true\r\n\u00a0\u00a0softwareUpdateNotifications: true\r\n\u00a0\u00a0serverGroups:\r\n\u00a0\u00a0- us-east-1a\r\n\u00a0\u00a0- us-east-1b\r\n\u00a0\u00a0- us-east-1c\r\n\u00a0\u00a0securityContext:\r\n\u00a0\u00a0\u00a0\u00a0runAsUser: 1000\r\n\u00a0\u00a0\u00a0\u00a0runAsNonRoot: true\r\n\u00a0\u00a0\u00a0\u00a0fsGroup: 1000\r\n\u00a0\u00a0platform: aws\r\n\u00a0\u00a0cluster:\r\n\u00a0\u00a0\u00a0\u00a0clusterName: cb-example\r\n\u00a0\u00a0\u00a0\u00a0dataServiceMemoryQuota: 512Mi\r\n\u00a0\u00a0\u00a0\u00a0indexServiceMemoryQuota: 256Mi\r\n\u00a0\u00a0\u00a0\u00a0searchServiceMemoryQuota: 256Mi\r\n\u00a0\u00a0\u00a0\u00a0indexStorageSetting: memory_optimized\r\n\u00a0\u00a0\u00a0\u00a0autoFailoverTimeout: 120s\r\n\u00a0\u00a0\u00a0\u00a0autoFailoverMaxCount: 3\r\n\u00a0\u00a0\u00a0\u00a0autoFailoverOnDataDiskIssues: true\r\n\u00a0\u00a0\u00a0\u00a0autoFailoverOnDataDiskIssuesTimePeriod: 120s\r\n\u00a0\u00a0\u00a0\u00a0autoFailoverServerGroup: false\r\n\u00a0\u00a0\u00a0\u00a0autoCompaction:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0databaseFragmentationThreshold:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0percent: 30\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0size: 1Gi\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0viewFragmentationThreshold:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0percent: 30\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0size: 1Gi\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0parallelCompaction: false\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0timeWindow:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0start: 02:00\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0end: 06:00\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0abortCompactionOutsideWindow: true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0tombstonePurgeInterval: 72h\r\n\u00a0\u00a0servers:\r\n\u00a0\u00a0- size: 3\r\n\u00a0\u00a0\u00a0\u00a0name: all_services\r\n\u00a0\u00a0\u00a0\u00a0services:\r\n\u00a0\u00a0\u00a0\u00a0- data\r\n\u00a0\u00a0\u00a0\u00a0- index\r\n\u00a0\u00a0\u00a0\u00a0- query\r\n\u00a0\u00a0\u00a0\u00a0- search\r\n\u00a0\u00a0buckets:\r\n\u00a0\u00a0\u00a0\u00a0managed: false\r\n\u00a0\u00a0\u00a0\u00a0selector:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0matchLabels:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cluster: cb-example\r\n\u00a0\u00a0monitoring:\r\n\u00a0\u00a0\u00a0\u00a0prometheus:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0enabled: true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0image: couchbase\/exporter:1.0.1\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resources:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0requests:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cpu: 100m\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0memory: 100Mi<\/pre>\n<p><span style=\"font-weight: 400\">Notes:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I have used only a minimum set of configuration parameters. Please refer to the <\/span><a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/reference-couchbasecluster.html\"><span style=\"font-weight: 400\">Couchbase Cluster Resource documentation <\/span><\/a><span style=\"font-weight: 400\">for a complete list.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Included the secrets section in the same file to keep things simple.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Used only the Data, Query, Index and Search services.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Managing my own buckets instead of leaving it to the Operator.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Make a note of the cluster label <\/span><b>cb-example<\/b><span style=\"font-weight: 400\"> as this will be used by Prometheus to discover the service later.<\/span><\/li>\n<\/ul>\n<p><strong>Tip<\/strong>: Make sure that buckets.managed is set to false. Otherwise, if you create a bucket manually once the cluster is up and running, Kubernetes will automatically drop it.<\/p>\n<h3><span style=\"font-weight: 400\">Deploy the Couchbase Cluster<\/span><\/h3>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:default decode:true\" title=\"Deploy Couchbase secret and cluster\">cao-2 $ kubectl create -f my-cluster.yaml\r\n\r\nsecret\/cb-example-auth created\r\ncouchbasecluster.couchbase.com\/cb-example created<\/pre>\n<p><span style=\"font-weight: 400\">Both the secret as well as the cluster are created. This does not mean they are up and running yet, for that you will have to verify as described in the next step.<\/span><\/p>\n<p><span style=\"color: #343e47;font-family: Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 40px\">Verify the deployment<\/span><\/p>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:default decode:true\" title=\"Pods running in the default namespace\">cao-2 $ kubectl get pods\r\n\r\nNAME\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 READY STATUS RESTARTS AGE\r\ncb-example-0000 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 2\/2 Running 0 9m5s\r\ncb-example-0001 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 2\/2 Running 0 8m53s\r\ncb-example-0002 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 2\/2 Running 0 8m42s\r\ncouchbase-operator-5c4bd54bbf-fcj9m \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 1\/1 Running 0 10m\r\ncouchbase-operator-admission-6789cd5847-w9rfd \u00a0 1\/1 Running 0 10m\r\n<\/pre>\n<p>Make sure that all the pods are <strong>Ready<\/strong> and <strong>Running<\/strong>. In case there is some problem, you can get the logs from the Operator.<\/p>\n<h3><span style=\"font-weight: 400\">Optional: Get the Logs<\/span><\/h3>\n<p><span style=\"font-weight: 400\">If you encounter any problems in the previous step, you can check the logs as shown below.<\/span><\/p>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:default decode:true\" title=\"Logs from the Couchbase Operator (truncated)\">cao-2 $ kubectl logs couchbase-operator-5c4bd54bbf-fcj9m\r\n\r\n{\"level\":\"info\",\"ts\":1586879846.061044,\"logger\":\"main\",\"msg\":\"couchbase-operator\",\"version\":\"2.0.0\",\"revision\":\"release\"}\r\n......\r\n{\"level\":\"info\",\"ts\":1586879986.2216492,\"logger\":\"cluster\",\"msg\":\"Pod added to cluster\",\"cluster\":\"default\/cb-example\",\"name\":\"cb-example-0002\"}\r\n{\"level\":\"info\",\"ts\":1586879987.0798743,\"logger\":\"couchbaseutil\",\"msg\":\"Rebalancing\",\"cluster\":\"default\/cb-example\",\"progress\":0}\r\n{\"level\":\"info\",\"ts\":1586879993.087347,\"logger\":\"cluster\",\"msg\":\"Rebalance completed successfully\",\"cluster\":\"default\/cb-example\"}\r\n{\"level\":\"info\",\"ts\":1586879993.124682,\"logger\":\"cluster\",\"msg\":\"Reconcile completed\",\"cluster\":\"default\/cb-example\"}<\/pre>\n<p><span style=\"font-weight: 400\">Here, the Couchbase cluster deployed without any errors.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Optional: Examine a Couchbase pod.<\/span><\/h3>\n<p>Let&#8217;s describe a Couchbase pod to check what its running.<\/p>\n<pre class=\"theme:dark-terminal toolbar:1 show-lang:2 show-plain:3 lang:default decode:true \" title=\"Describe Couchbase Pod (truncated)\">cao-2 $ kubectl describe pod cb-example-0000\r\n\r\nName: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cb-example-0000\r\nNamespace:\u00a0 \u00a0 \u00a0 default\r\n...\r\nLabels: \u00a0 \u00a0 \u00a0 \u00a0 app=couchbase\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0couchbase_cluster=cb-example\r\n...\r\n{\"containers\":[{\"name\":\"couchbase-server\",\"image\":\"couchbase\/server:6.5.0\",\"ports\":[{\"name\":\"admin\",\"containerPort\":8091,\"protocol\":\"TCP\"}\r\n...\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 server.couchbase.com\/version: 6.5.0\r\nStatus: \u00a0 \u00a0 \u00a0 \u00a0 Running\r\n...\r\nControlled By:\u00a0 CouchbaseCluster\/cb-example\r\nContainers:\r\n\u00a0\u00a0couchbase-server:\r\n\u00a0\u00a0\u00a0\u00a0Container ID: \u00a0 docker:\/\/7b0e5df433582ad432114248fdce922fd92f63435b110265b823c013fea8c2ac\r\n\u00a0\u00a0\u00a0\u00a0Image:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 couchbase\/server:6.5.0\r\n...\r\n\u00a0\u00a0\u00a0\u00a0State:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Running\r\n...\r\n\u00a0\u00a0metrics:\r\n\u00a0\u00a0\u00a0\u00a0Container ID:\u00a0 docker:\/\/b4406ec41d2119978971c8fa41fb8077ace782611298ba23d254a0d4383ab5ca\r\n\u00a0\u00a0\u00a0\u00a0Image: \u00a0 \u00a0 \u00a0 \u00a0 couchbase\/exporter:1.0.0\r\n\u00a0\u00a0\u00a0\u00a0Image ID:\r\n...\r\n\u00a0\u00a0\u00a0\u00a0Port:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 9091\/TC\r\n...\r\n\u00a0\u00a0\u00a0\u00a0State:\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Running\r\n<\/pre>\n<p>From the output above, we see that each Couchbase pod is running 2 containers. The first is running Couchbase Server 6.5.0 and and the other is running the Couchbase Prometheus Exporter which is using Port 9091.<\/p>\n<h3><span style=\"font-weight: 400\">Access the Couchbase Administration UI<\/span><\/h3>\n<p><span style=\"font-weight: 400\">In an actual production environment, you would typically deploy using DNS and a LoadBalancer acting as the proxy and would access Couchbase UI securely, with SSL using DNS SRV records. Since we are in a test environment, we will access the Couchbase UI directly from Port 8091. We do need one more step to achieve this and that is Port Forwarding.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">Port Forwarding<\/span><\/h4>\n<pre class=\"theme:dark-terminal toolbar:2 show-lang:2 show-plain:3 lang:zsh decode:true \">cao-2 $ kubectl port-forward cb-example-0000 8091 &amp;\r\n[1] 11375\r\ncao-2 $ Forwarding from 127.0.0.1:8091 -&gt; 8091\r\nForwarding from [::1]:8091 -&gt; 8091<\/pre>\n<p><span style=\"font-weight: 400\">We now have deployed three pods, however, it&#8217;s enough to port forward from one pod to access the Couchbase Admin UI.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">Access the UI<\/span><\/h4>\n<div id=\"attachment_8431\" style=\"width: 920px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8431\" class=\"wp-image-8431\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Blog1-CB-UI-300x58.png\" alt=\"\" width=\"910\" height=\"176\" \/><p id=\"caption-attachment-8431\" class=\"wp-caption-text\">https:\/\/localhost:8091<\/p><\/div>\n<h4><span style=\"font-weight: 400\">Create the buckets<\/span><\/h4>\n<div id=\"attachment_8432\" style=\"width: 924px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8432\" class=\" wp-image-8432\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Blog1-CB-UI-Buckets-300x42.png\" alt=\"\" width=\"914\" height=\"128\" \/><p id=\"caption-attachment-8432\" class=\"wp-caption-text\">Add sample bucket and create pillow bucket<\/p><\/div>\n<h3><span style=\"font-weight: 400\">Run a workload to generate some metrics<\/span><\/h3>\n<p><span style=\"font-weight: 400\">We will use <\/span><a href=\"https:\/\/docs.couchbase.com\/sdk-api\/couchbase-c-client\/md_doc_cbc-pillowfight.html\"><span style=\"font-weight: 400\">cbc-pillowfight<\/span><\/a><span style=\"font-weight: 400\"> to generate the workload. Luckily, this is bundled along with the Operator and lets deploy this. Let&#8217;s make a minor modification to the YAML file first, so that it doesn\u2019t stop with loading the data but performs operations on the bucket. We will use the pillow bucket we just created.<\/span><\/p>\n<pre class=\"theme:dark-terminal toolbar:1 show-plain:3 lang:yaml decode:true\" title=\"pillowfight-data-loader.yaml\">apiVersion: batch\/v1\r\nkind: Job\r\nmetadata:\r\n  name: pillowfight\r\nspec:\r\n  template:\r\n    metadata:\r\n      name: pillowfight\r\n    spec:\r\n      containers:\r\n      - name: pillowfight\r\n        image: sequoiatools\/pillowfight:v5.0.1\r\n        command: [\"cbc-pillowfight\",\r\n                  \"-U\", \"couchbase:\/\/cb-example-0000.cb-example.default.svc\/pillow?select_bucket=true\",\r\n                  \"-I\", \"10000\", \"-B\", \"1000\", \"-c\", \"10000\", \"-t\", \"1\", \"-u\", \"Administrator\", \"-P\", \"password\"]\r\n      restartPolicy: Never<\/pre>\n<p>Change the bucket from default to pillow and changed the -c (number of loops) option from 10 to 10,000.<\/p>\n<p>Then:<\/p>\n<pre class=\"theme:dark-terminal toolbar:2 show-lang:2 show-plain:3 lang:default decode:true\">cao-2 $ kubectl create -f pillowfight-data-loader.yaml\r\njob.batch\/pillowfight created<\/pre>\n<h3>Testing Prometheus and Grafana locally<\/h3>\n<p><span style=\"font-weight: 400\">We now have a three node Couchbase Cluster with the Prometheus Couchbase Exporter. The Exporter is scraping Couchbase metrics to Port 9091. Now, we could forward that port just like we forwarded port 8091 to access the Couchbase Web Console UI from our desktop. With that forwarded port, we could then have Prometheus and Grafana running in Docker containers on the desktop and use the forwarded 9091 port to get the metrics into Prometheus and visualize it in Grafana.<\/span><\/p>\n<p><strong>With the above approach, there is a limitation<\/strong><span style=\"font-weight: 400\">. First is, we would have to forward port 9091 from all 3 nodes and those node names would be hardcoded. Hardcoding node names is a huge problem in a Kubernetes environment. Moreover, you would really not be doing port forwarding in a Production environment, where you would be typically deploying with DNS and would use the DNS SRV to connect to the cluster. Finally, its best practice to run Prometheus and Grafana in Kubernetes itself, aligning with the Cloud Native paradigm.<\/span><\/p>\n<h3>Next Steps<\/h3>\n<p><span style=\"font-weight: 400\">In <a href=\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-2\/\">Part 2<\/a>, we will be doing just that, apart from DNS since we still want to keep this as simple as possible for quick testing.<\/span><\/p>\n<h4>Resources:<\/h4>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/downloads?family=kubernetes&amp;product=open-source-kubernetes-developer\">Download Couchbase Autonomous Operator 2.0 Beta for Kubernetes<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/overview.html\">Getting started Couchbase Autonomous Operator 2.0 Beta<\/a><\/li>\n<li>Tutorial \u2013 <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/tutorial-eks.html\">Couchbase Autonomous Operator on EKS<\/a><\/li>\n<li>Share your thoughts on the <a href=\"https:\/\/www.couchbase.com\/forums\/c\/couchbase-server\/Kubernetes\/\">Couchbase Forums<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>We recently announced the latest preview of the Couchbase Autonomous Operator (CAO) 2.0 beta. This release is a significant update to the Couchbase Autonomous Operator. Couchbase Autonomous Operator 2.0 introduces several new enterprise-grade features with fully autonomous capabilities \u2013 security, [&hellip;]<\/p>\n","protected":false},"author":57747,"featured_media":10442,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1821,9284,2225,1816,2322,2334],"tags":[2384,1545,1335,2383,1500],"ppma_author":[9106],"class_list":["post-8428","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-architecture","category-couchbase-autonomous-operator","category-cloud","category-couchbase-server","category-kubernetes","category-monitoring","tag-grafana","tag-kubernetes","tag-monitoring","tag-prometheus","tag-tutorial"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase Autonomous Operator 2.0 with Prometheus - Part 1 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"A step by step guide for running the Couchbase Autonomous Operator with Prometheus on Amazon EKS and visualizing with Grafana\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Autonomous Operator 2.0 with Prometheus - Part 1\" \/>\n<meta property=\"og:description\" content=\"A step by step guide for running the Couchbase Autonomous Operator with Prometheus on Amazon EKS and visualizing with Grafana\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-21T13:00:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:33:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"667\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Prasad Doddi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prasad Doddi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/\"},\"author\":{\"name\":\"Prasad Doddi\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7870a85b21341a1cdbdd737ba6e6e077\"},\"headline\":\"Couchbase Autonomous Operator 2.0 with Prometheus &#8211; Part 1\",\"datePublished\":\"2020-04-21T13:00:53+00:00\",\"dateModified\":\"2025-06-14T04:33:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/\"},\"wordCount\":1174,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png\",\"keywords\":[\"Grafana\",\"kubernetes\",\"monitoring\",\"Prometheus\",\"tutorial\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Couchbase Autonomous Operator\",\"Couchbase Capella\",\"Couchbase Server\",\"Kubernetes\",\"Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/\",\"name\":\"Couchbase Autonomous Operator 2.0 with Prometheus - Part 1 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png\",\"datePublished\":\"2020-04-21T13:00:53+00:00\",\"dateModified\":\"2025-06-14T04:33:15+00:00\",\"description\":\"A step by step guide for running the Couchbase Autonomous Operator with Prometheus on Amazon EKS and visualizing with Grafana\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png\",\"width\":1200,\"height\":667},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Autonomous Operator 2.0 with Prometheus &#8211; Part 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7870a85b21341a1cdbdd737ba6e6e077\",\"name\":\"Prasad Doddi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/eefad0ed7be820b285621aa4d67f7578\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a9ce547feba43afcbcf1425142725c663678810966eaa0ddc7d38702e647ee63?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a9ce547feba43afcbcf1425142725c663678810966eaa0ddc7d38702e647ee63?s=96&d=mm&r=g\",\"caption\":\"Prasad Doddi\"},\"description\":\"Prasad is a Senior Product Manager in Couchbase Cloud. Prior to Couchbase, he worked at IBM in various departments including Development, QA, Support and Technical Sales. Prasad holds a master\u2019s degree in Chem. Engg. from Clarkson University, NY.\",\"sameAs\":[\"www.linkedin.com\/in\/krishna-prasad-doddi\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/prasad-doddi\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Autonomous Operator 2.0 with Prometheus - Part 1 - The Couchbase Blog","description":"A step by step guide for running the Couchbase Autonomous Operator with Prometheus on Amazon EKS and visualizing with Grafana","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/","og_locale":"en_US","og_type":"article","og_title":"Couchbase Autonomous Operator 2.0 with Prometheus - Part 1","og_description":"A step by step guide for running the Couchbase Autonomous Operator with Prometheus on Amazon EKS and visualizing with Grafana","og_url":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-04-21T13:00:53+00:00","article_modified_time":"2025-06-14T04:33:15+00:00","og_image":[{"width":1200,"height":667,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png","type":"image\/png"}],"author":"Prasad Doddi","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prasad Doddi","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/"},"author":{"name":"Prasad Doddi","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7870a85b21341a1cdbdd737ba6e6e077"},"headline":"Couchbase Autonomous Operator 2.0 with Prometheus &#8211; Part 1","datePublished":"2020-04-21T13:00:53+00:00","dateModified":"2025-06-14T04:33:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/"},"wordCount":1174,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png","keywords":["Grafana","kubernetes","monitoring","Prometheus","tutorial"],"articleSection":["Best Practices and Tutorials","Couchbase Architecture","Couchbase Autonomous Operator","Couchbase Capella","Couchbase Server","Kubernetes","Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/","url":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/","name":"Couchbase Autonomous Operator 2.0 with Prometheus - Part 1 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png","datePublished":"2020-04-21T13:00:53+00:00","dateModified":"2025-06-14T04:33:15+00:00","description":"A step by step guide for running the Couchbase Autonomous Operator with Prometheus on Amazon EKS and visualizing with Grafana","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/background-1.png","width":1200,"height":667},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/step-by-step-guide-for-running-couchbase-autonomous-operator-2-0-with-prometheus-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Autonomous Operator 2.0 with Prometheus &#8211; Part 1"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7870a85b21341a1cdbdd737ba6e6e077","name":"Prasad Doddi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/eefad0ed7be820b285621aa4d67f7578","url":"https:\/\/secure.gravatar.com\/avatar\/a9ce547feba43afcbcf1425142725c663678810966eaa0ddc7d38702e647ee63?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a9ce547feba43afcbcf1425142725c663678810966eaa0ddc7d38702e647ee63?s=96&d=mm&r=g","caption":"Prasad Doddi"},"description":"Prasad is a Senior Product Manager in Couchbase Cloud. Prior to Couchbase, he worked at IBM in various departments including Development, QA, Support and Technical Sales. Prasad holds a master\u2019s degree in Chem. Engg. from Clarkson University, NY.","sameAs":["www.linkedin.com\/in\/krishna-prasad-doddi"],"url":"https:\/\/www.couchbase.com\/blog\/author\/prasad-doddi\/"}]}},"authors":[{"term_id":9106,"user_id":57747,"is_guest":0,"slug":"prasad-doddi","display_name":"Prasad Doddi","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a9ce547feba43afcbcf1425142725c663678810966eaa0ddc7d38702e647ee63?s=96&d=mm&r=g","author_category":"","last_name":"Doddi","first_name":"Prasad","job_title":"","user_url":"","description":"Prasad is a Senior Product Manager for Couchbase Supportability, Manageability and Tools. Prior to Couchbase, he worked at IBM in various departments including Development, QA, Support and Technical Sales. Prasad holds a master\u2019s degree in Chem. Engg. from Clarkson University, NY."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/57747"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=8428"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8428\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/10442"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=8428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=8428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=8428"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=8428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}