Introduction
This article will show how to install prometheus in Linux Ubuntu 18.04 in several steps. There are few steps for having the installation of prometheus runs in Linux Ubuntu 18.04 normally. According to the main official website of Prometheus in this link, Prometheus is an open-source systems monitoring and alerting toolkit originally built at SoundCloud. Since its inception in 2012, many companies and organizations have adopted Prometheus. The project has a very active developer and user community. It is now a standalone open source project and maintained independently of any company. To emphasize this, and to clarify the project’s governance structure, Prometheus joined the Cloud Native Computing Foundation in 2016 as the second hosted project, after Kubernetes. In order to put it simple, Prometheus is an open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
Installation
The easiest way is using the regular ‘apt’ tool exist in Linux Ubuntu distribution. First of all, search the package by executing the following command :
root@hostname:~# apt search prometheus Sorting... Done Full Text Search... Done cadvisor/bionic 0.27.1+dfsg-1 amd64 analyze resource usage and performance characteristics of running containers collectd-core/bionic-updates 5.7.2-2ubuntu1.1 amd64 statistics collection and monitoring daemon (core system) golang-github-docker-go-metrics-dev/bionic 0.0~git20161110.0.0f35294-1 all Package for metrics collection in Docker projects golang-github-google-cadvisor-dev/bionic 0.27.1+dfsg-1 all analyze resource usage and performance of running containers golang-github-grpc-ecosystem-go-grpc-prometheus-dev/bionic 1.1+git20170826.0dafe0d-1 all Prometheus monitoring for gRPC Go servers golang-github-mwitkow-go-conntrack-dev/bionic 0.0~git20161129.cc309e4-1 all Go middleware for net.Conn tracking golang-github-prometheus-alertmanager-dev/bionic 0.6.2+ds-3 amd64 Handle and deliver alerts created by Prometheus -- source golang-github-prometheus-client-golang-dev/bionic 0.8.0-2 all Prometheus instrumentation library for Go applications golang-github-prometheus-client-model-dev/bionic 0.0.2+git20150212.12.fa8ad6f-2 all data model artifacts for Prometheus golang-github-prometheus-common-dev/bionic 0+git20180110.89604d1-1 all Common libraries for Prometheus components golang-github-prometheus-tsdb-dev/bionic 0.0~git20180118.467948f-1 all Prometheus storage layer library golang-prometheus-client-dev/bionic 0.8.0-2 all Transitional package for golang-github-prometheus-client-golang-dev libnet-prometheus-perl/bionic 0.05-1 all module to export monitoring metrics for Prometheus prometheus/bionic 2.1.0+ds-1 amd64 Monitoring system and time series database prometheus-alertmanager/bionic 0.6.2+ds-3 amd64 Handle and deliver alerts created by Prometheus prometheus-apache-exporter/bionic 0.5.0+ds-1 amd64 Prometheus exporter for Apache server metrics prometheus-bind-exporter/bionic 0.2~git20161221+dfsg-1 amd64 Prometheus exporter for Bind server metrics prometheus-blackbox-exporter/bionic 0.11.0+ds-4 amd64 Blackbox prober for Prometheus prometheus-mailexporter/bionic 1.0-2 amd64 exports prometheus-style metrics about mail server functionality prometheus-mongodb-exporter/bionic 1.0.0-2 amd64 Prometheus exporter for MongoDB prometheus-mysqld-exporter/bionic 0.9.0+ds-3 amd64 Prometheus exporter for MySQL server. prometheus-node-exporter/bionic 0.15.2+ds-1 amd64 Prometheus exporter for machine metrics prometheus-pgbouncer-exporter/bionic 1.7-1 all Export metrics from pgbouncer to Prometheus prometheus-postgres-exporter/bionic 0.4.1+ds-2 amd64 Prometheus exporter for PostgreSQL server metrics prometheus-pushgateway/bionic 0.4.0+ds-1ubuntu1 amd64 Prometheus exporter for ephemereal jobs prometheus-sql-exporter/bionic 0.2.0.ds-3 amd64 Flexible SQL Exporter for Prometheus prometheus-varnish-exporter/bionic 1.2-1 amd64 Prometheus exporter for Varnish python-django-prometheus/bionic 1.0.6-1 all Django middlewares to enable monitoring with Prometheus (Python 2) python-prometheus-client/bionic 0.1.1-1 all Python 2 client for the Prometheus monitoring system python3-django-prometheus/bionic 1.0.6-1 all Django middlewares to enable monitoring with Prometheus (Python 3) python3-prometheus-client/bionic 0.1.1-1 all Python 3 client for the Prometheus monitoring system ruby-mmap2/bionic 2.2.7-1build2 amd64 Mmap class implement memory-mapped file objects for Ruby 2.x ruby-prometheus-client-mmap/bionic 0.9.1-1 amd64 suite of instrumentation metric primitives root@hostname:~#
Apparently, according to the search output, the prometheus package is availabe. So, continue on by executing the following command to use ‘apt’ tool to install prometheus. Execute it as follows :
root@hostname:/etc/apt/sources.list.d# sudo apt-get install prometheus prometheus-node-exporter prometheus-pushgateway prometheus-alertmanager -y Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: daemon libjs-angularjs libjs-bootstrap libjs-d3 libjs-eonasdan-bootstrap-datetimepicker libjs-jquery-hotkeys libjs-moment libjs-mustache libjs-rickshaw The following NEW packages will be installed: daemon libjs-angularjs libjs-bootstrap libjs-d3 libjs-eonasdan-bootstrap-datetimepicker libjs-jquery-hotkeys libjs-moment libjs-mustache libjs-rickshaw prometheus prometheus-alertmanager prometheus-node-exporter prometheus-pushgateway 0 upgraded, 13 newly installed, 0 to remove and 38 not upgraded. Need to get 7,147 kB/16.2 MB of archives. After this operation, 67.3 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 prometheus amd64 2.1.0+ds-1 [7,147 kB] Fetched 2,719 kB in 5s (569 kB/s) Preconfiguring packages ... Selecting previously unselected package libjs-jquery-hotkeys. (Reading database ... 326004 files and directories currently installed.) Preparing to unpack .../00-libjs-jquery-hotkeys_0~20130707+git2d51e3a9+dfsg-2ubuntu1_all.deb ... Unpacking libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2ubuntu1) ... Selecting previously unselected package daemon. Preparing to unpack .../01-daemon_0.6.4-1build1_amd64.deb ... Unpacking daemon (0.6.4-1build1) ... Selecting previously unselected package libjs-angularjs. Preparing to unpack .../02-libjs-angularjs_1.5.10-1_all.deb ... Unpacking libjs-angularjs (1.5.10-1) ... Selecting previously unselected package libjs-bootstrap. Preparing to unpack .../03-libjs-bootstrap_3.3.7+dfsg-2_all.deb ... Unpacking libjs-bootstrap (3.3.7+dfsg-2) ... Selecting previously unselected package libjs-d3. Preparing to unpack .../04-libjs-d3_3.5.17-2_all.deb ... Unpacking libjs-d3 (3.5.17-2) ... Selecting previously unselected package libjs-moment. Preparing to unpack .../05-libjs-moment_2.20.1+ds-1_all.deb ... Unpacking libjs-moment (2.20.1+ds-1) ... Selecting previously unselected package libjs-rickshaw. Preparing to unpack .../06-libjs-rickshaw_1.5.1.dfsg-2_all.deb ... Unpacking libjs-rickshaw (1.5.1.dfsg-2) ... Selecting previously unselected package libjs-eonasdan-bootstrap-datetimepicker. Preparing to unpack .../07-libjs-eonasdan-bootstrap-datetimepicker_4.17.47-3_all.deb ... Unpacking libjs-eonasdan-bootstrap-datetimepicker (4.17.47-3) ... Selecting previously unselected package libjs-mustache. Preparing to unpack .../08-libjs-mustache_2.3.0-2_all.deb ... Unpacking libjs-mustache (2.3.0-2) ... Selecting previously unselected package prometheus. Preparing to unpack .../09-prometheus_2.1.0+ds-1_amd64.deb ... Unpacking prometheus (2.1.0+ds-1) ... Selecting previously unselected package prometheus-alertmanager. Preparing to unpack .../10-prometheus-alertmanager_0.6.2+ds-3_amd64.deb ... Unpacking prometheus-alertmanager (0.6.2+ds-3) ... Selecting previously unselected package prometheus-node-exporter. Preparing to unpack .../11-prometheus-node-exporter_0.15.2+ds-1_amd64.deb ... Unpacking prometheus-node-exporter (0.15.2+ds-1) ... Selecting previously unselected package prometheus-pushgateway. Preparing to unpack .../12-prometheus-pushgateway_0.4.0+ds-1ubuntu1_amd64.deb ... Unpacking prometheus-pushgateway (0.4.0+ds-1ubuntu1) ... Setting up libjs-moment (2.20.1+ds-1) ... Processing triggers for ureadahead (0.100.0-21) ... Setting up prometheus-node-exporter (0.15.2+ds-1) ... Created symlink /etc/systemd/system/multi-user.target.wants/prometheus-node-exporter.service → /lib/systemd/system/prometheus-node-exporter.service. Setting up libjs-d3 (3.5.17-2) ... Setting up libjs-angularjs (1.5.10-1) ... Setting up libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2ubuntu1) ... Setting up libjs-rickshaw (1.5.1.dfsg-2) ... Processing triggers for systemd (237-3ubuntu10.24) ... Processing triggers for man-db (2.8.3-2ubuntu0.1) ... Setting up libjs-bootstrap (3.3.7+dfsg-2) ... Setting up daemon (0.6.4-1build1) ... Setting up libjs-mustache (2.3.0-2) ... Setting up prometheus-pushgateway (0.4.0+ds-1ubuntu1) ... Setting up prometheus-alertmanager (0.6.2+ds-3) ... Setting up libjs-eonasdan-bootstrap-datetimepicker (4.17.47-3) ... Setting up prometheus (2.1.0+ds-1) ... Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /lib/systemd/system/prometheus.service. Processing triggers for ureadahead (0.100.0-21) ... Processing triggers for systemd (237-3ubuntu10.24) ... root@hostname:/etc/apt/sources.list.d#
Starting the Prometheus service
After successfully install prometheus, start the service. Execute the following command as in the following output below :
root@hostname:~# systemctl start prometheus root@hostname:~#
Don’t forget to check the status of the prometheus service. Type the command ‘systemctl status prometheus’ to be able to check the status of the service as follows :
root@hostname:~# systemctl status prometheus ● prometheus.service - Monitoring system and time series database Loaded: loaded (/lib/systemd/system/prometheus.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-07-24 09:57:07 WIB; 35min ago Docs: https://prometheus.io/docs/introduction/overview/ Main PID: 1793 (prometheus) Tasks: 16 (limit: 4915) CGroup: /system.slice/prometheus.service └─1793 /usr/bin/prometheus Jul 24 09:57:19 hostname prometheus[1793]: level=info ts=2019-07-24T02:57:18.869532169Z caller=web.go:359 component=web msg="Start listening for connections" address=0.0.0.0:9090 Jul 24 09:57:19 hostname prometheus[1793]: level=info ts=2019-07-24T02:57:18.869519583Z caller=main.go:492 msg="Starting TSDB ..." Jul 24 09:57:41 hostname prometheus[1793]: level=warn ts=2019-07-24T02:57:41.121695275Z caller=head.go:320 component=tsdb msg="unknown series references in WAL samples" count=3987 Jul 24 09:57:41 hostname prometheus[1793]: level=info ts=2019-07-24T02:57:41.122743246Z caller=main.go:502 msg="TSDB started" Jul 24 09:57:41 hostname prometheus[1793]: level=info ts=2019-07-24T02:57:41.122812309Z caller=main.go:578 msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml Jul 24 09:57:41 hostname prometheus[1793]: level=info ts=2019-07-24T02:57:41.625069683Z caller=main.go:479 msg="Server is ready to receive web requests." Jul 24 09:57:41 hostname prometheus[1793]: level=info ts=2019-07-24T02:57:41.625105932Z caller=manager.go:59 component="scrape manager" msg="Starting scrape manager..." Jul 24 10:00:01 hostname prometheus[1793]: level=info ts=2019-07-24T03:00:01.070444333Z caller=compact.go:387 component=tsdb msg="compact blocks" count=1 mint=1563926400000 maxt=1563933600000 Jul 24 10:00:02 hostname prometheus[1793]: level=info ts=2019-07-24T03:00:02.920449512Z caller=head.go:348 component=tsdb msg="head GC completed" duration=2.530086ms Jul 24 10:00:02 hostname prometheus[1793]: level=info ts=2019-07-24T03:00:02.92049808Z caller=head.go:357 component=tsdb msg="WAL truncation completed" duration=1.825µs root@hostname:~#
Finally, in order for prometheus service is automatically start and running every time the machine is rebooting, do the following command :
root@hostname:~# systemctl enable prometheus Synchronizing state of prometheus.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable prometheus root@hostname:~#
If all the above steps are successfully executed, all of the overall process for installing Prometheus has done.