← Back to Blog

Hands On Prometheus With Thanos RemoteWrite EndPoint

Hands On Prometheus With Thanos RemoteWrite EndPoint Introduction Clearly explain the need for highly available and scalable storage solutions for Prometheus metrics in a cloud-native environment. The intro should set the context for using Thanos in an OpenShift setup.

Hands On Prometheus With Thanos RemoteWrite EndPoint

Introduction

  • Clearly explain the need for highly available and scalable storage solutions for Prometheus metrics in a cloud-native environment. The intro should set the context for using Thanos in an OpenShift setup.

Source > https://github.com/rifaterdemsahin/thanosremotewriteendpoint

Start Journey on CRC > The environment you have!

hands on prometheus 1

**Objectives **

In Thanos, the Remote Write feature is used to send metrics from multiple Prometheus instances to a centralized Thanos Store or object storage. This setup enables the global querying of metrics across several Prometheus instances, providing a unified view of all metrics data.

How Remote Write Works in Thanos:

  • Prometheus Instance: Each Prometheus instance collects and stores its own local metrics data.

  • Remote Write: Prometheus uses the remote_write feature to send the metrics data to a Thanos Receiver or Thanos Sidecar for long-term storage and querying.

  • Thanos Store Gateway: Thanos Store Gateway acts as a query layer to access these distributed metrics across different Prometheus instances.

  • Global Metrics Access: With Thanos Querier, you can query metrics stored across various Prometheus instances, making it possible to gather insights from all your systems without accessing each Prometheus instance individually.

Benefits:

  • Scalability: You can scale your metrics infrastructure by adding more Prometheus instances without worrying about centralized storage limitations.

  • Durability: Metrics are written to long-term storage, allowing you to retain data for long periods.

  • Federated Queries: Access metrics globally from multiple instances, making troubleshooting, monitoring, and optimizing systems much more efficient.

In short, Thanos Remote Write allows you to gather metrics from several Prometheus instances and aggregate them in one central place for easier querying and long-term storage.

Components Overview

Thanos

Image Reference > https://www.redhat.com/en/blog/federated-prometheus-with-thanos-receive

hands on prometheus 2

A highly scalable system for global querying and long-term storage of Prometheus data. It extends Prometheus by providing an additional layer for multi-cluster aggregation and high availability.

  • Key Feature: Enables global querying of metrics across multiple Prometheus instances with minimal performance overhead.

  • Use Case: When you need to retain metrics for long periods and query data from multiple Prometheus setups across different clusters.


🔍 Query

hands on prometheus 3

Image Reference > https://developers.redhat.com/articles/2024/07/09/get-started-openshift-cluster-observability-operator

This component serves as the user interface to perform queries against Prometheus and Thanos systems.BOTH SYSTEMS! It acts as the central gateway for retrieving and visualizing your metrics data.

  • Key Feature: It unifies all queries, enabling users to aggregate metrics from multiple sources seamlessly.

  • Use Case: Perfect for when you need quick insights into your system’s performance by querying data from both current and long-term storage.


🏎️ Sidecar

hands on prometheus 4

Image Reference > https://www.redhat.com/en/blog/thanos-long-term-storage-for-your-prometheus-metrics-on-openshift

A sidecar is deployed alongside Prometheus to stream metrics data into Thanos object storage for long-term archiving. It also enables the federation of Prometheus instances.

  • Key Feature: Efficient data transfer from Prometheus to Thanos object storage for high availability and durability.

  • Use Case: Use this when you need to make Prometheus metrics available for longer-term storage and global querying.

Image Reference > https://medium.com/@yakuphanbilgic3/thanos-for-multi-cluster-monitoring-in-aws-eks-clusters-using-s3-storage-09c684e05e2b

Observability Cluster Idea

hands on prometheus 5


📈 Prometheus

hands on prometheus 6

Reference > https://uk.devoteam.com/expert-view/observability-in-openshift-with-prometheus/

An open-source systems monitoring and alerting toolkit. It scrapes metrics from services at defined intervals, evaluates rule expressions, and triggers alerts based on thresholds.

  • Key Feature: Powerful, flexible, and designed to handle large volumes of time-series data in a cloud-native environment.

  • Use Case: Central tool for collecting metrics and enabling real-time monitoring and alerting.


📊 Metrics

Metrics are the key data points collected by Prometheus, representing system or application performance. They can be scraped from various services and visualized to monitor trends or trigger alerts.

  • Key Feature: Provides critical insights into the operational health of your infrastructure.

  • Use Case: Use metrics to ensure your applications and systems are running smoothly, efficiently, and within acceptable thresholds.

Image Reference > https://uk.devoteam.com/expert-view/observability-in-openshift-with-prometheus/

hands on prometheus 7


This overview with emojis provides a quick and enjoyable snapshot of each component! 😊

To enhance the prerequisites section for deploying Prometheus and Thanos on OpenShift using CRC, you could include a brief overview of setting up an OpenShift cluster with CRC and links to relevant documentation. Here's how you can structure it:


Prerequisites

Before starting the deployment of Prometheus and Thanos on OpenShift using CRC, make sure you meet the following prerequisites:

  • OpenShift Cluster with CRC (CodeReady Containers):

  • Ensure you have CRC installed and set up for OpenShift. CRC is a tool that enables you to run a local OpenShift cluster on your machine.

  • CRC Installation Guide

  • Setting Up an OpenShift Cluster using CRC

  • User Permissions:

  • You must have the appropriate permissions to deploy and manage resources in OpenShift. Ensure your user account has the cluster-admin role or the necessary permissions to manage projects, namespaces, and cluster resources.

hands on prometheus 8

hands on prometheus 9

To see your role and assigned permissions in OpenShift, you can use the following oc command:

oc whoami --show-console

This command will show the currently logged-in user. To see the roles or permissions assigned to your user, you can use:

To view your roles in a specific project (namespace):

oc get rolebinding -n default --user $(oc whoami)

To convert the following command from Bash to PowerShell:

oc get rolebinding -n default --user $(oc whoami)

The equivalent PowerShell command would look like this:

$whoami = oc whoami
oc get rolebinding -n default --user $whoami

In PowerShell, $whoami stores the output of the oc whoami command, and then you pass it to the --user option of the oc get rolebinding command. This should work similarly to the Bash version.

Replace <namespace> with the project name you're interested in.

hands on prometheus 10

To view all roles assigned to your user:

oc get clusterrolebindings --all-namespaces | grep $(oc whoami)

This will show all cluster-wide role bindings associated with your user.

Let me know if you need further help with these!

  • Prometheus Operator & Thanos Setup:

  • You'll need the Prometheus Operator to manage Prometheus instances, and Thanos for long-term storage and scaling.

  • Installing the Prometheus Operator

  • Thanos Quickstart

  • Sufficient Resources:

  • Ensure your system has sufficient resources (CPU, memory) to run CRC, Prometheus, and Thanos. Typically, CRC requires a minimum of 4 CPUs and 9GB of RAM.

hands on prometheus 11


To install the Prometheus Operator on OpenShift using oc, you can follow these steps:

1. Ensure OpenShift Monitoring is Enabled

Ensure that your OpenShift cluster has the monitoring stack enabled. The Prometheus Operator is part of the OpenShift Monitoring stack.

At the end we are going to get pod monitors enabled

hands on prometheus 12

2. Create a Namespace for Monitoring

If you want to install the Prometheus Operator in a specific namespace, you can create one. For example, you can create a monitoring namespace:

oc create namespace monitoring

hands on prometheus 13

3. Install Prometheus Operator using OperatorHub

OpenShift includes an integrated OperatorHub where you can install the Prometheus Operator. If you want to install it via the CLI, follow these steps:

Option 1: Using the CLI with oc

  • Create a Subscription to the Prometheus Operator:

cat <<EOF | oc apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: prometheus
namespace: openshift-operators
spec:
channel: stable
installPlanApproval: Automatic
name: prometheus
source: community-operators
sourceNamespace: openshift-marketplace
EOF

This will create a subscription to install Prometheus from the Community Operators catalog.

In PowerShell, there is no direct equivalent to the cat <<EOF | ... syntax used in Bash. Instead, you can use PowerShell's @-here strings to construct the YAML file content and pipe it to the oc apply -f - command. Here's the PowerShell equivalent:

$yaml = @"
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: prometheus
namespace: openshift-operators
spec:
channel: stable
installPlanApproval: Automatic
name: prometheus
source: community-operators
sourceNamespace: openshift-marketplace
"@

Apply the YAML to OpenShift

$yaml | oc apply -f -

This PowerShell script defines the YAML content in the @-here string and then pipes it directly to the oc apply -f - command, just as you would in the Bash version.

Copy paste is ready and it works

hands on prometheus 14

Operator Coming in

hands on prometheus 15

Still test the oc command with a linux box is an option

hands on prometheus 16

Try installing from this side

hands on prometheus 17

hands on prometheus 18

Operator install more success > why people use the operators

hands on prometheus 19

hands on prometheus 20

hands on prometheus 21

hands on prometheus 22

hands on prometheus 23

Service Running

hands on prometheus 24

hands on prometheus 25

Option 2: Using OperatorHub in the OpenShift Console

  • Navigate to OperatorHub in the OpenShift web console.

  • Search for Prometheus.

  • Install the Prometheus Operator from the available options.

hands on prometheus 26

4. Verify Installation

After the installation, you can check if the Prometheus Operator is running by verifying the ClusterServiceVersion (CSV) status:

oc get clusterserviceversion -n openshift-operators

hands on prometheus 27

You should see the Prometheus Operator CSV with a status of Succeeded.

hands on prometheus 28

hands on prometheus 29

hands on prometheus 30

To create

hands on prometheus 31

hands on prometheus 32

hands on prometheus 33

hands on prometheus 34

5. Deploy Prometheus and Alertmanager Instances

hands on prometheus 35

Once the Prometheus Operator is installed, you can deploy Prometheus instances. Here's an example of deploying Prometheus using a custom resource:

cat <<EOF | oc apply -f -
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: example-prometheus
namespace: monitoring
spec:
replicas: 1
serviceAccountName: prometheus
serviceMonitorSelector: {}
EOF

This will deploy a Prometheus instance in the monitoring namespace.

The given code snippet in PowerShell is using a heredoc style to pass a YAML configuration to the oc (OpenShift command-line tool) via the apply command. However, PowerShell doesn't natively support heredoc syntax (like the cat <<EOF you might see in a Unix shell). To achieve the same result in PowerShell, you'll need to handle multi-line strings differently.

Here’s how you can adapt it in PowerShell:

$yaml = @"
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: example-prometheus
namespace: monitoring
spec:
replicas: 1
serviceAccountName: prometheus
serviceMonitorSelector: {}
"@

$yaml | oc apply -f -

This script stores the YAML content in the $yaml variable and then pipes it to the oc apply -f - command, which should apply the configuration to your OpenShift cluster.

hands on prometheus 36

Let me know if you need further details or explanation!

6. Access Prometheus

Once deployed, you can expose the Prometheus instance via a route to access the web UI:

oc expose svc example-prometheus -n monitoring

Then, you can access Prometheus at the URL provided by OpenShift.

hands on prometheus 37


This should get the Prometheus Operator and instance running on your OpenShift cluster using oc. Let me know if you need more details!

This way, you provide clear, actionable steps for users who are setting up CRC and configuring OpenShift permissions, along with links to documentation.

Stuck at installing

hands on prometheus 38

**Deployment **

In OpenShift, a Subscription is a key resource related to the Operator Lifecycle Manager (OLM), which is responsible for managing the lifecycle of Operators in your cluster. It automates the process of installing, updating, and managing Operators and their associated services.

A Subscription resource defines which version of an Operator should be installed and kept up to date on your OpenShift cluster. Here's what it does:

  • Operator Version Management: The Subscription specifies the desired version (or channel) of an Operator to be installed or updated automatically. The OLM will monitor this and ensure that the specified version is installed or updated when new versions are available.

  • Tracking Updates: By creating a Subscription, the OLM keeps track of the Operator and ensures that future updates from the specified channel are applied automatically.

  • Association with CatalogSources: The Subscription is linked to a specific CatalogSource, which contains a list of Operators available for installation. The Subscription references this catalog to find the Operator to install or update.

Example: Subscription YAML

Here’s a simplified YAML example of a Subscription:

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: my-operator-subscription
namespace: openshift-operators
spec:
channel: stable
name: my-operator
source: operatorhubio-catalog
sourceNamespace: openshift-marketplace
installPlanApproval: Automatic

  • channel: Defines the update stream (e.g., "stable", "beta") that the OLM should track for the Operator.

  • name: Specifies the name of the Operator from the catalog.

  • source: Specifies the CatalogSource to look for the Operator (e.g., from OperatorHub).

  • sourceNamespace: Namespace where the catalog is available (usually openshift-marketplace).

  • installPlanApproval: Controls whether updates are applied automatically (Automatic) or manually (Manual).

Key Concepts Related to Subscription:

  • CatalogSource: Contains the list of Operators that OLM can install.

  • InstallPlan: A plan created to track the actions needed to install or upgrade an Operator.

  • OperatorGroup: Defines the scope where an Operator is available, such as a specific namespace or cluster-wide.

In summary, a Subscription in OpenShift is how you specify which Operators should be installed and updated, and the OLM takes care of the rest, ensuring your cluster is always running the desired version of an Operator.

Thanos is not here > lets reboot and restart

hands on prometheus 39

Uninstall is not very straight forward ?

hands on prometheus 40

Operands are left inside

hands on prometheus 41

The error message in the screenshot indicates that when attempting to uninstall the Cluster Observability Operator in OpenShift, there is an issue with loading the operands (which are the resources managed by the operator). The detailed error message explains:

  • Cannot load Operands: The operator failed to load its operands, and these will need to be deleted manually.

  • Error loading Operands for cluster-observability-operator: The message says that the ClusterServiceVersion (CSV) of the operator is not in a "succeeded state," meaning there could be a problem with the operator’s installation or its current state, which has affected its ability to list custom resources (the operands).

Possible Reasons:

  • CSV in Failed or Incorrect State: The operator's CSV might be incomplete or failed, making it impossible for OpenShift to gather the operand details.

  • Operator Malfunction: The underlying operator might be malfunctioning or in an unstable state, which affects its ability to track resources it deployed.

  • Cluster Issues: There may be cluster-wide issues that prevent the operator from working correctly, or it could be a misconfiguration of resources.

Next Steps:

  • Manual Cleanup: Since the error says operands need to be deleted manually, you may need to find and delete the custom resources created by this operator manually. This can include CRDs (Custom Resource Definitions) or other resources related to the Cluster Observability Operator.

  • Check CSV: You may want to inspect the status of the ClusterServiceVersion (CSV) for the operator by running:

oc get csv -n

This will help you verify the state of the operator and troubleshoot further.

  • Check Logs: You can check the operator logs to find additional details about what might be wrong with the CSV.

This is a typical OpenShift operator uninstallation issue when the operator's state isn't "healthy," but you can proceed with careful manual cleanup and investigation.

Delete with the remaining action

hands on prometheus 42

The deployment steps are well-structured. For each command, provide some context on why the action is necessary (e.g., what each Thanos component does during deployment).

  • Consider expanding on troubleshooting tips or common errors (e.g., permission issues with the Prometheus Operator or networking for Thanos Query).

Files to deploy > https://github.com/rifaterdemsahin/thanosremotewriteendpoint/tree/main/Code

Monitoring Still not clear

hands on prometheus 43

To delete the monitoring namespace in OpenShift using oc, you can use the following command:

oc delete namespace monitoring

However, keep in mind the following important aspects:

1. Namespace Deletion Can Take Time:

Deleting a namespace in OpenShift can take some time as it attempts to clean up all the resources within it. If there are lingering resources or issues with certain objects, it might get stuck in the Terminating state.

2. Force Deletion (if Necessary):

If the namespace is stuck in Terminating state, you might need to forcefully remove the finalizers from the resources that are preventing the namespace from being deleted. You can do this by manually editing the resources within the namespace.

To force delete a namespace stuck in Terminating:

  • First, get the namespace details:

oc get namespace monitoring -o json

  • Edit the JSON output and remove the "kubernetes" finalizer. Save the JSON to a file called monitoring.json, for example. Example:

"metadata": {
"finalizers": [
"kubernetes"
]
}

  • After removing the finalizer, apply the change:

oc replace --raw "/api/v1/namespaces/monitoring/finalize" -f ./monitoring.json

3. Alternative Cleanup:

If you need to clean up specific resources inside the namespace first (like Operators, CRDs, etc.) before deleting the namespace, you can run:

oc delete all --all -n monitoring

This will delete all resources (Pods, Services, Deployments, etc.) inside the namespace, making it easier for the namespace to be deleted.

If the deletion is successful, you should see confirmation, and the namespace will be cleaned up. If you face any issues, let me know the error message, and I can assist further!

hands on prometheus 44

Nurture and Nature waiting together ( dev and ops )

hands on prometheus 45

Architecture Diagram

  • Visual aids such as the architecture diagram make it easier to understand how the pieces fit together. Encourage readers to adapt the architecture to their needs (e.g., optional long-term storage with S3).

Optional Enhancements

  • The deployment of the Thanos Store Gateway is listed as optional, which is good. Add a note on when it's recommended (e.g., for long-term storage needs).

Conclusion

  • Reiterate the value of using Thanos and Prometheus in OpenShift, especially for enterprises looking to scale monitoring and storage while maintaining performance.

Call to Action

🔗 Connect with me:

-------------------------------------------------------

ERRORS

WSL Did Not Work #

It seems that the crc command is not installed or not available in your current environment, which is necessary for managing CodeReady Containers (CRC). To resolve this issue, follow these steps:

1. Install CRC

If CRC is not installed, you need to install it. Here are the steps for installing CRC on a Linux machine:

Download CRC

curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/crc/latest/crc-linux-amd64.tar.xz

Extract the tarball

tar -xvf crc-linux-amd64.tar.xz

Move CRC to your bin directory for easy access

sudo mv crc-linux-*/crc /usr/local/bin/

Check CRC version

crc version

hands on prometheus 46

Here’s a one-liner version of your commands in Bash:

tar -xvf crc-linux-amd64.tar.xz && sudo mv crc-linux-*/crc /usr/local/bin/ && crc version

This command extracts the tarball, moves the CRC binary to the /usr/local/bin/ directory, and checks the CRC version, all in a single line.

hands on prometheus 47

2. Set Up CRC

hands on prometheus 48

Once CRC is installed, you'll need to configure it and start the local OpenShift cluster:

Set up CRC (this will download the necessary OpenShift images and set up the environment)

crc setup

Start CRC

crc start

Make sure you have sufficient resources (at least 4 CPUs and 9GB RAM) for CRC to run.

3. Log in to OpenShift

Once CRC is running, you can log in to the OpenShift cluster. Use the credentials provided during the crc start process or run the following to get them:

crc console --credentials

This will give you the correct server URL and token to log in.

Now try logging in again using the oc login command with the correct URL and token.


If the issue persists after installing CRC, check for network configuration issues or port conflicts on your machine.

Let me know how this goes!

hands on prometheus 49

To set up the OpenShift oc client on a Red Hat system, follow these steps:

Step 1: Download the oc Client

OpenShift's oc command-line tool is available as part of the OpenShift client package.

You can download the latest version of the oc client by running the following commands:

Download the latest oc client for Linux (Red Hat)

curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz

Extract the tarball

tar -xvzf openshift-client-linux.tar.gz

Step 2: Move the oc Client to a Location in Your PATH

Move the oc binary to /usr/local/bin/ or another directory that is in your system’s $PATH so that it can be executed from anywhere:

sudo mv oc /usr/local/bin/
sudo mv kubectl /usr/local/bin/ # kubectl is also included in the package if you need it

Step 3: Verify the Installation

You can verify that oc is properly installed by checking the version:

oc version

This will display the client version and information about the OpenShift server if connected.

Step 4: Log in to OpenShift

To log in to your OpenShift cluster, use the following command with your cluster API URL and authentication token:

oc login --server=https://:6443 --token=

Replace <openshift-api-url> with your OpenShift API server URL and <your-token> with the OpenShift login token.

If you don't have a token, you can generate one by logging into the OpenShift web console, going to "Copy Login Command", and following the instructions.

Step 5: Use oc Commands

Once logged in, you can start using oc commands to interact with your OpenShift cluster. Some useful commands include:

  • List projects:

oc get projects

  • Create a new project:

oc new-project

  • View cluster status:

oc status


This setup should allow you to use the OpenShift oc client on your Red Hat system. Let me know if you encounter any issues!

Here's a one-liner to download, extract, and install the OpenShift oc client on a Red Hat system:

curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz && tar -xvzf openshift-client-linux.tar.gz && sudo mv oc kubectl /usr/local/bin/ && oc version

This will download the oc client, extract it, move the binaries to /usr/local/bin/, and display the oc version to verify the installation.

Move to host only

hands on prometheus 50

In the screenshot, I see that you have set the virtual machine's network adapter to NAT. With NAT (Network Address Translation), your virtual machine (VM) shares the host's IP address for external communication, but sometimes it can cause DNS issues, especially when trying to resolve external hosts like api.crc.testing.

Here’s what you can try to resolve this:

1. Switch to Bridged Network Adapter:

Instead of using NAT, try switching to Bridged mode. This will allow your VM to directly connect to the same network as the host machine, making it easier to resolve DNS and external IP addresses.

Steps:

  • In VMware Workstation, open the Virtual Machine Settings.

  • Go to the Network Adapter section.

  • Change the connection from NAT to Bridged.

  • Click OK to save your settings.

After making the change:

  • Restart the virtual machine.

  • Test the connection again using the oc login command.

2. Check DNS Configuration:

If you prefer using NAT, you can manually update the DNS settings in your VM to ensure proper name resolution.

  • Open the terminal in your VM.

  • Edit the /etc/resolv.conf file to use a known DNS server like Google’s:

sudo nano /etc/resolv.conf

Add or modify the following line:

nameserver 8.8.8.8

  • Save and exit.

  • Try logging in again using oc login.

3. Restart Network Services:

If you’ve already changed settings, sometimes network services need to be restarted. You can restart the networking service inside your VM with:

sudo systemctl restart NetworkManager

Let me know if this helps!

Based on your ipconfig output, you have several network interfaces. Since you're working with a virtual machine in VMware and your setup seems to involve OpenShift on a Red Hat VM, here’s how you can choose the appropriate IP address:

Steps to determine the right IP address:

  • Using Bridged Mode: If your VM is set to Bridged mode, it will connect directly to your local network, so you should use the host machine's Ethernet 3 IP address. In your case:

  • 192.168.3.46 is the IPv4 address assigned to your physical network interface. This IP is part of your LAN, and your VM will get a similar IP address if it is in Bridged mode.

  • You can use this IP to access services on your VM from your host machine.

  • Using NAT Mode: If your VM is configured in NAT mode (as per your current VMware settings):

  • The VM will use the host’s NAT adapter to connect to external networks. The relevant IP address for NAT is usually associated with VMware's VMnet8 adapter.

  • The IP for NAT is 192.168.28.1 (VMware Network Adapter VMnet8). Your VM will be assigned an IP address within the same 192.168.28.x range.

  • To find out your VM's IP address in NAT mode, inside the VM, run the following command:
    bash ip addr show
    Look for the IP address associated with your virtual network interface (typically eth0 or ens33).

  • WSL/Hyper-V Interfaces: The interfaces like vEthernet and WSL are for internal communication between Hyper-V or WSL instances and shouldn't be used for your VMware VM networking.

Steps:

  • If you’re using NAT mode, check your VM’s IP by running:

ip addr show

Find the IP that corresponds to VMnet8’s subnet (192.168.28.x), which is what the VM will be assigned. Use that IP to communicate with your VM.

  • If you switch to Bridged mode (recommended for external connectivity):

  • Use an IP similar to your host’s 192.168.3.x subnet for the VM. This IP can be found inside the VM after switching to bridged mode.

Let me know how it goes!

hands on prometheus 51

The error message you're seeing, "No connection could be made because the target machine actively refused it", suggests that the OpenShift API server is either not running or not properly listening on the provided IP and port (192.168.3.46:6443).

Here’s how to troubleshoot and resolve the issue:

1. Verify CRC (CodeReady Containers) is Running

Since you're using OpenShift with CRC, ensure that CRC is properly started on your Red Hat VM. Run the following command inside your VM to check the status of CRC:

crc status

If CRC is not running, start it with:

crc start

If CRC starts successfully, it will provide the correct API URL and login credentials (token). Use the API URL from the crc start output.

2. Check if the OpenShift API Server is Listening

Verify that the OpenShift API server is running and listening on port 6443. Run the following command on your Red Hat VM:

sudo netstat -tuln | grep 6443

This command will check if any service is listening on port 6443. You should see a line similar to this:

tcp 0 0 0.0.0.0:6443 0.0.0.0:* LISTEN

If nothing is shown, it means that the OpenShift API server is not running properly.

3. Confirm the Correct API Server URL

After ensuring CRC is running, you can get the exact OpenShift API URL by running:

crc console --credentials

This will display the correct URL to use with the oc login command. Make sure you’re using this URL when logging in from your host machine.

4. Ensure the VM's Firewall is Open (if necessary)

If the API server is running but the host still cannot connect, check if the Red Hat VM’s firewall is blocking the connection. You can temporarily stop the firewall to check if that resolves the issue:

sudo systemctl stop firewalld

After stopping the firewall, try logging in again with:

oc login --token= --server=https://:6443

If that works, you might need to configure your firewall rules to allow traffic on port 6443.

5. Test Network Connectivity

From your host machine (Windows), check if you can reach the OpenShift API server by pinging the VM:

ping 192.168.3.46

If you cannot ping it, it means there's a network connectivity issue. Ensure that the VM is properly networked using Bridged mode or NAT, and the appropriate IP addresses are used.


Let me know how these steps work for you, or if you need further help!

It appears that the OpenShift API server on your Red Hat VM (or CRC instance) is still unreachable despite disabling the firewall on your Windows machine. This means the issue likely lies within the VM configuration or the OpenShift service itself, rather than the firewall on your host machine.

Here are some additional steps you can take to troubleshoot:

1. Verify CRC is Running Properly

Since you're working with CRC (CodeReady Containers) to run OpenShift, you need to ensure that it is properly running inside your Red Hat VM. Inside the VM, run the following:

crc status

If CRC is not running, start it with:

crc start

Make sure that it successfully starts, and take note of the API server address and port.

2. Check the OpenShift API Server URL

If CRC is running, it should provide you with the correct API server URL after starting. You can also retrieve the URL using:

crc console --credentials

Ensure that you are using the correct URL in your oc login command. If the 192.168.3.46:6443 address is not correct, CRC will give you the correct API endpoint.

3. Check if the OpenShift API Server is Listening

Inside the VM, you need to verify that the OpenShift API server is actually listening on port 6443. Run:

sudo netstat -tuln | grep 6443

If the output does not show that the server is listening on port 6443, there may be a problem with the OpenShift or CRC configuration. In this case, restarting CRC or fixing the cluster setup might be required.

4. Test Connectivity from Windows to the VM

You should ensure that your Windows host can reach the Red Hat VM. Try to ping the VM from your Windows machine:

ping 192.168.3.46

If ping fails, it means there’s a network connectivity issue. In that case:

  • Ensure that your VM network adapter is correctly set to Bridged mode if you’re trying to use the 192.168.3.x network.

  • If the VM is in NAT mode, use the IP that the VM has been assigned within the NAT range (which is usually different).

You can verify the IP of the VM from within the VM by running:

ip addr show

5. Ensure the VM Firewall Allows Port 6443

If the VM has a firewall running (like firewalld on Red Hat), you need to ensure that it is not blocking the OpenShift API port (6443).

To temporarily disable the firewall on your Red Hat VM for testing, you can run:

sudo systemctl stop firewalld

Then, try logging in again from Windows using:

oc login --token= --server=https://:6443

6. Review CRC Logs (if needed)

If CRC is running but you continue to face issues, you can check the logs to see if there are any errors related to the OpenShift API server:

crc logs


By verifying these steps, you should be able to pinpoint where the connection issue lies and resolve it. Let me know if you need further guidance!

hands on prometheus 52

To find the direct connection IP of your CRC (CodeReady Containers) OpenShift instance, follow these steps:

1. Check IP Address in CRC VM

If you have a local CRC setup and need to find the IP address for direct access, use the following commands inside your Red Hat VM (or the terminal where CRC is running):

Option 1: Check IP address using ip a

You can use the ip a command to find the IP address of the CRC virtual machine's network interfaces:

ip a

Look for the interface with an IP in a range like 192.168.x.x, which corresponds to the network segment CRC uses (typically 192.168.130.x or similar). This is the IP used for direct access.

Option 2: Check CRC VM Networking Settings

Alternatively, you can run the following command to check the exact IP address that CRC is using:

crc ip

This will return the IP address of the CRC instance, which you can use to access the OpenShift API directly.

2. Check the API Server Address via CRC Console

When CRC starts, it provides details about the OpenShift web console and API server URL. If you missed this output, you can retrieve it with the following command:

crc console --credentials

This will give you the correct API server URL (IP and port) that you can use with oc login.

3. Determine the Network Mode (NAT vs. Bridged)

If you're using CRC in a virtual machine (VM) and want to find the IP address on your host network, ensure your VM is configured correctly:

  • For Bridged Mode: Your VM will be assigned an IP address from your local network, usually in the same range as your host machine.

  • For NAT Mode: CRC will use an internal NAT network. To find the correct IP, use the crc ip command.

Example of Direct Connection Command:

Once you have the IP address from crc ip, you can try logging in to OpenShift using:

oc login --token= --server=https://:6443

Replace <crc-ip> with the IP returned from crc ip.

Let me know if this helps or if you need more guidance!

Pinging the host machine (your physical Windows machine) using 127.0.0.1 from inside a VMware virtual machine will not work because 127.0.0.1 refers to the loopback address or localhost of the machine itself, whether it's your host or the virtual machine. So, when you try to ping 127.0.0.1 from inside the VM, it will simply ping the VM itself.

If you want to ping your host machine (the Windows machine) from within a VMware virtual machine, follow these steps:

1. Identify the Host's Local IP Address

You need to use the host machine's real network IP address (not 127.0.0.1). You can find this by running the ipconfig command on your host (Windows) machine.

For example, in the ipconfig output you provided earlier:

Ethernet adapter Ethernet 3:

IPv4 Address. . . . . . . . . . . : 192.168.3.46

Here, 192.168.3.46 is the IP address of your host machine on your local network.

2. Ping the Host from the VM

Once you have the host machine’s IP address, you can ping it from your virtual machine. In the terminal inside your VM, run:

ping 192.168.3.46

3. Ensure Proper Networking Configuration

The VM and host machine need to be on the same network, and this depends on how your VMware network adapter is configured. VMware typically uses two main network configurations for VMs:

  • NAT Mode: The VM shares the host’s IP for external communication. It can ping the host using the local network IP (e.g., 192.168.3.46).

  • Bridged Mode: The VM gets its own IP address on the local network and can communicate directly with the host and other devices on the network.

To Check and Set Network Mode in VMware:

  • In VMware Workstation, go to Virtual Machine Settings.

  • Under Network Adapter, check if it is set to NAT or Bridged.

  • Bridged: If you want the VM to act like it's directly connected to your local network.

  • NAT: If you want the VM to share the host’s IP but still access external networks.

4. Firewall Considerations

Ensure that the firewall on your host machine (Windows) is not blocking ICMP (ping) requests. You can temporarily disable the firewall or allow ICMP requests using the following PowerShell command:

New-NetFirewallRule -DisplayName "Allow ICMPv4-In" -Protocol ICMPv4 -Direction Inbound -Action Allow

This allows ICMP (ping) requests to pass through the firewall.


By using the host machine’s actual network IP address (like 192.168.3.46 in your case), you should be able to successfully ping it from within the VM. Let me know if this works for you!

hands on prometheus 53

UnKnown Status

hands on prometheus 54

hands on prometheus 55

hands on prometheus 56

hands on prometheus 57

hands on prometheus 58

hands on prometheus 59


Imported from rifaterdemsahin.com · 2025