mod_status
/etc/apache2/sites-available/status.conf
Listen 8181
<VirtualHost *:8181>
ServerName my-domain-name.id
ErrorLog /var/log/apache2/status_error.log
CustomLog /var/log/apache2/status_access.log common
<Location /server-status>
SetHandler server-status
Require all granted
</Location>
</VirtualHost>
apache Exporter untuk Prometheus (Lusitaniae)
/etc/systemd/system/apache_exporter.service
[Unit]
Description=Prometheus
Documentation=https://github.com/Lusitaniae/apache_exporter
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/apache_exporter \
--insecure \
--scrape_uri=http://localhost:8181/server-status/?auto \
--telemetry.address=0.0.0.0:9117 \
--telemetry.endpoint=/metrics
SyslogIdentifier=apache_exporter
Restart=always
[Install]
WantedBy=multi-user.target
1. php-fpm Exporter untuk Prometheus (Lusitaniae)
sudo apt install golang-go
git clone https://github.com/Lusitaniae/phpfpm_exporter.git
cd phpfpm_exporter
make build
/etc/systemd/system/php-fpm_exporter.service
[Unit]
Description = PHP-FPM Prometheus Exporter
Documentation=https://github.com/Lusitaniae/phpfpm_exporter
Wants=network-online.target
After=network-online.target
[Service]
ExecReload=/bin/kill -HUP $MAINPID
SyslogIdentifier = phpfpm_exporter
ExecStart = /opt/phpfpm_exporter/phpfpm_exporter \
--phpfpm.socket-paths /var/run/php/php7.2-fpm.sock \
--phpfpm.status-path="/status-phpfpm72"
--phpfpm.script-collector-paths /usr/local/bin/php_exporter/phpfpm_opcache_exporter.php
[Install]
WantedBy = multi-user.target
systemctl daemon-reload
systemctl enable --now php-fpm_exporter
systemctl status php-fpm_exporter
2. php-fpm Exporter untuk Prometheus (hipages)
Dapat juga menggunakan exporter berikut : https://github.com/hipages/php-fpm_exporter
nano /etc/systemd/system/php-fpm_exporter.service
[Unit]
Description = PHP-FPM Prometheus Exporter
Documentation=https://github.com/Lusitaniae/phpfpm_exporter
Wants=network-online.target
After=network-online.target
[Service]
ExecReload=/bin/kill -HUP $MAINPID
SyslogIdentifier = phpfpm_exporter
ExecStart = /usr/local/bin/phpfpm_exporter/php-fpm_exporter_2.2.0_linux_amd64 server --web.listen-address 127.0.0.1:9253 --phpfpm.scrape-uri tcp://127.0.0.1:9000/status --phpfpm.fix-process-count true
[Install]
WantedBy = multi-user.target
MySQL
Prometheus
Install dan mengamankan prometheus yang secara default dapat diakses tanpa password di port 9090, baca [6].
/etc/prometheus/prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
# Apache Servers
- job_name: "apache"
static_configs:
- targets: ["localhost:9117"]
# php-fpm
- job_name: "php-fpm7.2"
static_configs:
- targets: ["localhost:9253"]
Referensi
- Apache Exporter for Prometheus, https://github.com/Lusitaniae/apache_exporter
- Install Prometheus on Debian 10, https://kifarunix.com/install-prometheus-on-debian-10/
- Monitor Apache Web Server with Prometheus and Grafana in 5 minutes, https://computingforgeeks.com/how-to-monitor-apache-web-server-with-prometheus-and-grafana-in-5-minutes/
- Grafana support for prometheus, https://prometheus.io/docs/visualization/grafana/
- PHP-FPM Exporter for Prometheus, https://github.com/Lusitaniae/phpfpm_exporter
- Securing Prometheus API and UI endpoints using basic auth, https://prometheus.io/docs/guides/basic-auth/
- Real-time PHP-FPM Status, https://gist.github.com/Jiab77/a9428050ab9bb3f17c5e33343da94fd8
- Prometheus Server and TLS, https://inuits.eu/blog/prometheus-server-tls/
- How to Monitor MySQL Deployments with Prometheus & Grafana at ScaleGrid, https://scalegrid.io/blog/how-to-monitor-mysql-deployments-with-prometheus-and-grafana-at-scalegrid/
- MySQL Server Exporter, https://github.com/prometheus/mysqld_exporter