Finally getting around
to installing prometheus/grafana on a local home server so I can graph a thing
or two J https://prometheus.io/ [1]
I used this guide as a
reference https://www.digitalocean.com/community/tutorials/how-to-install-prometheus-on-ubuntu-16-04
[2]
Download and setup
First see what version of ubuntu you are on
> lsb_release -a |
On this particular server I have set up a second drive located at /prometheus and that is where I am going to place prometheus data
Go check out the current prometheu download at
https://prometheus.io/download/
[3]
Use their nice pop up tool to narrow the downloads to linux
Right click on the file name and copy the link address
Now use wget to download it locally
> wget
https://github.com/prometheus/prometheus/releases/download/v2.24.0/prometheus-2.24.0.linux -amd64.tar.gz |
Once it downloads confirm its sha
> sha256sum
prometheus-2.24.0.linux-amd64.tar.gz |
If that number matches the one on the site you are good
Create new users then install
> sudo useradd
--no-create-home --shell /bin/false prometheus |
Make directories
> sudo mkdir
/etc/prometheus
|
Let me make a data folder
> sudo mkdir -p
/prometheus/data |
Unpack
> tar xvf
prometheus-2.24.0.linux-amd64.tar.gz |
Move it to /usr/loca/bin
> sudo cp
prometheus-2.24.0.linux-amd64/prometheus /usr/local/bin/
|
> sudo chown
prometheus:prometheus /usr/local/bin/prometheus
|
Copy console files over
> sudo cp -r
prometheus-2.24.0.linux-amd64/consoles /etc/prometheus > sudo chown -R
prometheus:prometheus /etc/prometheus/consoles
|
Create prometheus.yml file
> sudo vi
/prometheus/prometheus.yml |
And place the following in it.
global:
|
> sudo chown -R
prometheus:prometheus /prometheus/prometheus.yml |
Quick test… run manually
> sudo -u
prometheus /usr/local/bin/prometheus \
|
Wahoo that works.
Now to set up a SystemD to run it
SystemD setup
Create the systemD file
> sudo vi
/lib/systemd/system/prometheus.service |
[Unit] [Service] Restart=always [Install]
|
> sudo
systemctl status prometheus |
Enable the service so it will auto start on reboot
> sudo systemctl
enable prometheus |
> sudo
systemctl status prometheus |
Wahoo
Test it out
> sudo
systemctl start prometheus |
Now pull ports and test.
> ssh
prometheus -L 9090:localhost:9090 |
Reboot and check
No last check reboot the box and see if it all comes back up.
> sudo reboot now |
Log back in with port forwarding
> ssh prometheus -L 9090:localhost:9090 |
Check status
> sudo systemctl status prometheus |
Log back in
Wahoo it rebooted.
Get some data
In the /prometheus/prometheus.yml I defined some targets to pull from
> sudo vi /prometheus/prometheus.yml |
Here it will scrape http://localhost:9090/metrics and http://localhost:9100/metrics
OK after a reboot let me log back in and pull both these ports
> ssh prometheus -L 9090:localhost:9090 -L
9100:localhost:9100 |
If I open up
http://192.168.0.101:9090/metrics
I see prometheus data
If I open http://192.168.0.101:9100/metrics
I get nothing…
Because I have not yet installed nodeexporter locally https://github.com/prometheus/node_exporter
[4]
So… for now we won’t get data from that source.
Open up http://192.168.0.101:9090/
Open up Targets
The first one "node_exporter" is down and not able
to scrape because node exporter is not installed… so that makes sense
But the promeheus one…. Should be working
Look at the time -7 hours and out of bounds….
I think there is a bug
Poking around I think this may have some clues on why https://github.com/prometheus/prometheus/issues/8243
[5]
How to fix this?
Just stop and start prometheus…
For some reason on a reboot it will have this issue again
> sudo systemctl stop prometheus |
Now check http://192.168.0.101:9090/targets
again
Now its happy J
Now open Graph
Enter in go_goroutines and click Execute
But I get no results…
I believe this is because my server is on UTC and this is using the local time
of my server so to fix that… or at least get an answer
Switch it to Graph and up the hours to 12 hours or even 1d
and hopefully in a few minutes you will see data J
Fixing the time issue…
On my server I am having what I think are time sync issues.
My server is a virtual ESXi server and when I auto start prometheus on restart I am having time issues.
Poking around I think what may be happening is a server time issue within the server. That maybe when it starts up the time is wayyyy of and prometheus starts then the time is fixed and now prometheus is in a bad state.
If I do not enable prometheus to start on a boot but only start it myself by hand I have no problem. But when I auto start it… problem.
So Maybe a solution would be for the prometheus to wait to start until the time has synced?
Look at that it took 30-60 seconds for my server to sync its
time…
So this is on me…
Looking at this for help https://blog.debiania.in.ua/posts/2020-11-27-howto-delay-a-systemd-service-until-the-clock-is-synchronized.html [6]
Also some notes here https://raspberrypi.stackexchange.com/questions/94635/how-can-i-delay-the-startup-of-systemd-services-until-the-datetime-is-set-no-rt [7]
More
https://github.com/prometheus/prometheus/issues/8243 [8]
|
OK now edit my prometheus file
> sudo vi /lib/systemd/system/prometheus.service |
Edit this part
[Unit] |
Enable the service so it will auto start on reboot
> sudo systemctl
enable prometheus |
Log back in and run this to check
> sudo
journalctl -b \ |
References
[1] Prometheus
https://prometheus.io/
Accessed 1/2020
[2] How To Install Prometheus on Ubuntu
16.04
https://www.digitalocean.com/community/tutorials/how-to-install-prometheus-on-ubuntu-16-04
Accessed
1/2020
[3] Prometheus Download page
https://prometheus.io/download/
Accessed 1/2020
[4] Node Exporter
https://github.com/prometheus/node_exporter
Accessed 1/2020
[5] Prometheus raise out of
bounds error for all targets after resume the
linux system from a suspend
#8243
https://github.com/prometheus/prometheus/issues/8243
Accessed 1/2020
Is it mandetory to create a new user??
ReplyDelete