Being as a part of DevOps culture from past 6 months i realized how important monitoring is for containerized environments. Automation and monitoring is the important philosophy of DevOps and OpenEBS follows it from the very beginning of its development.We thought of using Prometheus for monitoring purpose because of these reasons :
- It is Open Source
- It is developer friendly (Easy to manage and implement)
- It has very rich querying language (Promql)
- It provides lot of integrations such as node-exporter, alertmanager etc.
- It is scalable (Federation)
- It provides flexibility of reading and writing data remotely.
Besides these , it also provides you a mechanism to write your very own exporter. So we wrote our own maya volume-exporter. Although we have very few parameters such as performance stats and capacity stats for now that we are exporting but it covers almost everything that is needed for volume monitoring. Alerts have been implemented for various purpose such as high latency, high memory usage, high cpu usage etc. We have also implemented maya-chatops to take actions as soon as you get the alerts through slack. maya-chatops is very interactive tool for alerting purpose, you can take actions by a simple click.i.e, it suggests you solution for the alert and you can take the action from the slack itself.For more info about maya-chatops visit this blog of Satyam Zode.
How to monitor your OpenEBS volume ?
You can find the monitoring templates in the OpenEBS repository, the simplest one is openebs-monitoring-pg.yaml and if you want to setup all the components of prometheus then go to openebs-monitoring directory where you will find all the necessary templates.
- Minimum two worker nodes (minions). Recommended four or more (Baremetal, VMs or cloud instances)
- Worker nodes (minions) should atleast have 2GB RAM and 10–15 GB of storage to handle the prometheus data upto 120 hrs (Retention period).
- OpenEBS 0.5.1 (It’s good to install OpenEBS after setting up Prometheus setup to monitor the components from the very beginning).
Steps to follow : (for simplest one)
kubectl create -f openebs-monitoring-pg.yaml
kubectl get pods -o wideto verify and to get where Prometheus and Grafana instances are running.
kubectl get nodes -o wideto get the node’s IP.
kubectl get svcand note down the port allocated to Prometheus and Grafana services.
- Open your browser and open
<nodeip:nodeport>(32514 for Prometheus and 32515 for Grafana) and you should be able to see the Prometheus’s expression browser and Grafana’s UI on your browser.
- Login into it, add data source name as prometheus, select datasource type Prometheus and pass the
<nodeip:nodeport>of Prometheus in the url field and click on run and test.
- Now go to the next tab (Dashboard) and import the desired dashboard.You should be able to get preloaded dashboard of prometheus.
- To create openebs dashboard, go to the import and paste the json from the repository.
- You should be able to get the graph of openebs volumes in the UI.
Note : maya-volume-exporter runs as sidecar in volume-controller which is invoked automatically while provisioning volume.
Above steps (except 1st one) are valid for the advance setup of monitoring modules also which contains the deployment of node-exporter, alertmanager and other stuff, for setting up the Prometheus modules please follow the README.md . Try this out and and if you are facing any issues or if you have any suggestions, do let me know in the comments. You are always welcome to join us on slack for more queries related to OpenEBS.
That’s all folks !☺