Grafana, Promtail, Loki, and Nginx all automated with Ansible
- Grafana, Promtail, Loki, and Nginx all automated with Ansible
This was only tested for ubuntu on x64 and ARM raspberry Pi’s, if you want more then ubuntu please feel free to contribute to the repo.
I wanted to create a monitoring setup where deployment could be automated and easily repeatable.
For my metrics scraping, I’m using Prometheus & for log ingestion I am using Loki. For data visualization I am using Grafana.
To try and keep my logs and metrics private I have enabled HTTPs and basic authentication on all of my endpoints.
The end result is going to look something like this:
Clone my repo:
1 git clone https://github.com/aidanhall34/ansiblenodemonitoring.git
After cloning the repo, copy
inventrories/production/ubuntu.yml and update the contents.
Update the hosts file in inventories/production/hosts to include all of the machines you want to configuring monitoring on.
Next update the Prometheus config located at
monitoring/templates/prometheus/prometheus.yml.j2. Docs on how to configure Prometheus can be found here:
Now we will update the SNMP config. If you use Mikrotik routers with SNMP v3 you can use the existing config. If not you will need to generate one with this tool: github.com/snmp_exporter/generator.
Place your SNMP config at
If you want more overview into your configuration, I’d suggest checking out the
monitoring/files/ directories for other configuration files.
Now you are ready to run the playbooks. Ensure you have ansible installed on your machine then run:
1 2 3 4 # Run this on the monitoring server ansible-playbook playbooks/deploy_monitoring.yml -i inventories/production/ --tags server --limit 'mon-vm-01.inf.ah34.net' # Run this on all machines except for the monitoring server ansible-playbook playbooks/deploy_monitoring.yml -i inventories/production/ --tags agent --limit 'ubuntu:!mon-vm-01.inf.ah34.net'
You should now be able to reach grafana at the monitoring servers IP address on port 443.