|  |  |  | apt update | 
					
						
							|  |  |  | # Stretch: | 
					
						
							|  |  |  | apt install -t stretch-backports prometheus | 
					
						
							|  |  |  | # Buster: | 
					
						
							|  |  |  | apt install prometheus | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # On main prom1 server, running buster: | 
					
						
							|  |  |  | apt install prometheus-alertmanager prometheus prometheus-node-exporter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Open up ports on firewall: | 
					
						
							|  |  |  | # Prometheus | 
					
						
							|  |  |  | -A INPUT -p tcp --dport 9090 -j ACCEPT | 
					
						
							|  |  |  | -A INPUT -p tcp --dport 9093 -j ACCEPT | 
					
						
							|  |  |  | -A INPUT -p tcp --dport 9094 -j ACCEPT | 
					
						
							|  |  |  | -A INPUT -p tcp --dport 9100 -j ACCEPT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Install exporter on all nodes | 
					
						
							|  |  |  | # Stretch: | 
					
						
							|  |  |  | apt install -t stretch-backports prometheus-node-exporter | 
					
						
							|  |  |  | # Buster: | 
					
						
							|  |  |  | apt install prometheus-node-exporter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # To enable various collectors on a node, edit: | 
					
						
							|  |  |  | vim /etc/default/prometheus-node-exporter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Ones of note: | 
					
						
							|  |  |  | -collector.netstat.fields=(.*) --collector.vmstat.fields=(.*)  --collector.interrupts | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Add to all: XXX not done | 
					
						
							|  |  |  | ################ | 
					
						
							|  |  |  | --collector.netstat.fields="^(.*_(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)_(InOctets|OutOctets)|Icmp6?_(InMsgs|OutMsgs)|TcpExt_(Listen.*|Syncookies.*)|Tcp_(ActiveOpens|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts))$" | 
					
						
							|  |  |  | --collector.vmstat.fields="^(oom_kill|pgpg|pswp|pg.*fault).*" | 
					
						
							|  |  |  | --collector.interrupts | 
					
						
							|  |  |  | --collector.ntp | 
					
						
							|  |  |  | --collector.systemd | 
					
						
							|  |  |  | ################ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # For MySQL servers, on all servers: | 
					
						
							|  |  |  | apt install prometheus-mysqld-exporter | 
					
						
							|  |  |  | # On sql1, log into database: | 
					
						
							|  |  |  | CREATE USER 'prometheus-mysqld-exporter'@'10.42.1.0/255.255.255.0' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3; | 
					
						
							|  |  |  | GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'prometheus-mysqld-exporter'@'10.42.1.0/255.255.255.0'; | 
					
						
							|  |  |  | FLUSH PRIVILEGES; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # On sql1 sql2 sql3 sql4 servers: | 
					
						
							|  |  |  | # Edit | 
					
						
							|  |  |  | vim /etc/default/prometheus-mysqld-exporter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Set this line (setting correct local IP): | 
					
						
							|  |  |  | export DATA_SOURCE_NAME="prometheus-mysqld-exporter:password@(10.42.1.171:3306)/" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # on prom1 /etc/prometheus/prometheus.yml | 
					
						
							|  |  |  |   - job_name: 'mysql-monitor'# Job name | 
					
						
							|  |  |  |     static_configs: | 
					
						
							|  |  |  |       - targets: ['10.42.1.171:9104'] | 
					
						
							|  |  |  |         labels: | 
					
						
							|  |  |  |             alias: db1# alias name given to this instance | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Add firewall rule to sql1 sql2 sql3 sql4 | 
					
						
							|  |  |  | #-A INPUT -s 10.22.22.0/24 -p tcp --dport 9104 -j ACCEPT | 
					
						
							|  |  |  | -A INPUT -s 10.42.1.0/24 -p tcp --dport 9104 -j ACCEPT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # Borg exporter: | 
					
						
							|  |  |  | https://github.com/teemow/prometheus-borg-exporter | 
					
						
							|  |  |  | https://grafana.com/dashboards/1573 | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # Email | 
					
						
							|  |  |  | # graylog: | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # Apache: | 
					
						
							|  |  |  | https://grafana.com/dashboards/4859 | 
					
						
							|  |  |  | https://grafana.com/dashboards/4865 | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # nginx | 
					
						
							|  |  |  | https://grafana.com/dashboards/6482 | 
					
						
							|  |  |  | https://grafana.com/dashboards/4368 | 
					
						
							|  |  |  | https://grafana.com/dashboards/6787 | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # postgres | 
					
						
							|  |  |  | https://grafana.com/dashboards/3300 | 
					
						
							|  |  |  | https://grafana.com/dashboards/455 | 
					
						
							|  |  |  | https://grafana.com/dashboards/3742 | 
					
						
							|  |  |  | https://grafana.com/dashboards/6742 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # on pg1 pg2 pg3 pg4 | 
					
						
							|  |  |  | apt install prometheus-postgres-exporter daemon | 
					
						
							|  |  |  | # See /usr/share/doc/prometheus-postgres-exporter/README.Debian | 
					
						
							|  |  |  | vim /etc/default/prometheus-postgres-exporter | 
					
						
							|  |  |  | DATA_SOURCE_NAME='user=prometheus host=/run/postgresql dbname=postgres' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # The run: | 
					
						
							|  |  |  | sudo -u postgres psql | 
					
						
							|  |  |  | # In database add: | 
					
						
							|  |  |  | ------------------------------------------------------ | 
					
						
							|  |  |  |   CREATE USER prometheus; | 
					
						
							|  |  |  |   ALTER USER prometheus SET SEARCH_PATH TO prometheus,pg_catalog; | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   CREATE SCHEMA prometheus AUTHORIZATION prometheus; | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   CREATE FUNCTION prometheus.f_select_pg_stat_activity() | 
					
						
							|  |  |  |   RETURNS setof pg_catalog.pg_stat_activity | 
					
						
							|  |  |  |   LANGUAGE sql | 
					
						
							|  |  |  |   SECURITY DEFINER | 
					
						
							|  |  |  |   AS $$ | 
					
						
							|  |  |  |     SELECT * from pg_catalog.pg_stat_activity; | 
					
						
							|  |  |  |   $$; | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   CREATE FUNCTION prometheus.f_select_pg_stat_replication() | 
					
						
							|  |  |  |   RETURNS setof pg_catalog.pg_stat_replication | 
					
						
							|  |  |  |   LANGUAGE sql | 
					
						
							|  |  |  |   SECURITY DEFINER | 
					
						
							|  |  |  |   AS $$ | 
					
						
							|  |  |  |     SELECT * from pg_catalog.pg_stat_replication; | 
					
						
							|  |  |  |   $$; | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   CREATE VIEW prometheus.pg_stat_replication | 
					
						
							|  |  |  |   AS | 
					
						
							|  |  |  |     SELECT * FROM prometheus.f_select_pg_stat_replication(); | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   CREATE VIEW prometheus.pg_stat_activity | 
					
						
							|  |  |  |   AS | 
					
						
							|  |  |  |     SELECT * FROM prometheus.f_select_pg_stat_activity(); | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   GRANT SELECT ON prometheus.pg_stat_replication TO prometheus; | 
					
						
							|  |  |  |   GRANT SELECT ON prometheus.pg_stat_activity TO prometheus; | 
					
						
							|  |  |  | ------------------------------------------------------ | 
					
						
							|  |  |  | ------------------------------------------------------ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Restart | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Add firewall rule | 
					
						
							|  |  |  | -A INPUT -s 10.52.1.0/24 -p tcp --dport 9187 -j ACCEPT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # prometheus.yml | 
					
						
							|  |  |  | # Some dashboards work with this | 
					
						
							|  |  |  |   - job_name: 'postgres' | 
					
						
							|  |  |  |     honor_labels: true | 
					
						
							|  |  |  |     static_configs: | 
					
						
							|  |  |  |       - targets: ['10.52.1.91:9187', '10.52.1.92:9187', '10.52.1.93:9187', '10.52.1.94:9187'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Other dashboards work with this | 
					
						
							|  |  |  |   - job_name: 'postgresql' | 
					
						
							|  |  |  |     honor_labels: true | 
					
						
							|  |  |  |     static_configs: | 
					
						
							|  |  |  |       - targets: ['10.52.1.91:9187', '10.52.1.92:9187', '10.52.1.93:9187', '10.52.1.94:9187'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # Unbound DNS | 
					
						
							|  |  |  | https://grafana.com/dashboards/3930 | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # libvirt_exporter | 
					
						
							|  |  |  | # FAIL | 
					
						
							|  |  |  | go get github.com/kumina/libvirt_exporter | 
					
						
							|  |  |  | go build github.com/kumina/libvirt_exporter | 
					
						
							|  |  |  | # Then copy this binary to targets sf-001 sf-002 sf-003 sf-004 | 
					
						
							|  |  |  | ~/go/bin/libvirt_exporter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | apt install libvirt-daemon | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ############################################################################## | 
					
						
							|  |  |  | # Dovecot Exporter | 
					
						
							|  |  |  | # https://github.com/kumina/dovecot_exporter.git | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # On a go build server: XXX | 
					
						
							|  |  |  | go get github.com/kumina/dovecot_exporter | 
					
						
							|  |  |  | go build github.com/kumina/dovecot_exporter | 
					
						
							|  |  |  | scp -p go/bin/dovecot_exporter mx1: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # On mail server mx1 | 
					
						
							|  |  |  | # Set up user to run as. XXX | 
					
						
							|  |  |  | # Open up firewall port 9166 | 
					
						
							|  |  |  | # Dovecot Prometheus | 
					
						
							|  |  |  | -A INPUT -s 10.22.22.0/24 -p tcp --dport 9166 -j ACCEPT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Run thusly, XXX set up user, chown path | 
					
						
							|  |  |  | ./dovecot_exporter --dovecot.socket-path="/var/run/dovecot/stats-reader" | 
					
						
							|  |  |  | # Or? | 
					
						
							|  |  |  | ./dovecot_exporter --dovecot.socket-path="/var/run/dovecot/stats-reader"  --dovecot.scopes="jebba@forksand.com" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ############################################################################## |