在5分钟内用Prometheus和Grafana监视Apache Web Server
欢迎使用我们的指南,该指南介绍了如何在5分钟内用Prometheus和Grafana监视Apache Web Server。此设置适用于在各种Linux上运行的任何版本的Apache Web服务器。
如果我们正在遵循本指南,我希望我们已安装并正在运行Prometheus服务器,则可以参考我们的指南以在Ubuntu或者CentOS服务器上全新安装Prometheus服务器。
在CentOS 7和Ubuntu上安装Prometheus Server
请遵循以下设置步骤,将Apache Web Server指标存储在Prometheus上,并使用Grafana进行可视化。
下载并安装Apache Prometheus导出器
如果计算机中尚未安装curl实用程序,请安装它。
--- Ubuntu/Debian -- $sudo apt update && sudo apt install curl --- CentOS/RHEL/Fedora -- $sudo dnf -y install curl $sudo yum -y install curl
检查最新版本的Apache Prometheus导出器。
curl -s https://api.github.com/repos/Lusitaniae/apache_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi
提取下载的存档:
tar xvf apache_exporter-*.linux-amd64.tar.gz sudo cp apache_exporter-*.linux-amd64/apache_exporter /usr/local/bin sudo chmod +x /usr/local/bin/apache_exporter
确保apache_exporter
是可从当前SHELL执行的:
$apache_exporter --version apache_exporter, version (branch: , revision: ) build user: build date: go version: go1.13.9
创建Apache Prometheus导出器systemd服务
首先,添加prometheus
用户,它将运行该服务:
sudo groupadd --system prometheus sudo useradd -s /sbin/nologin --system -g prometheus prometheus
然后继续创建一个systemd服务单元文件:
sudo vim /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/server-status/?auto \ --telemetry.address=0.0.0.0:9117 \ --telemetry.endpoint=/metrics SyslogIdentifier=apache_exporter Restart=always [Install] WantedBy=multi-user.target
该服务将侦听端口9117,并在/metrics URI上公开指标。如果Apache指标不在http://localhost/server-status /?auto上,则需要更改URL。
带有初始化系统
对于CentOS 6.x之类的Init系统,在/etc/init.d /
下创建一个init脚本。
sudo vim /etc/init.d/apache_exporter
sudo vim /etc/init.d/apache_exporter
加:
#!/bin/bash # Author: Josphat Mutai, theitroad@localhost , https://github.com/jmutai # apache_exporter This shell script takes care of starting and stopping Prometheus apache exporter ## chkconfig: 2345 80 80 # description: Prometheus apache exporter start script # processname: apache_exporter # pidfile: /var/run/apache_exporter.pid # Source function library. . /etc/rc.d/init.d/functions RETVAL=0 PROGNAME=apache_exporter PROG=/usr/local/bin/${PROGNAME} RUNAS=prometheus LOCKFILE=/var/lock/subsys/${PROGNAME} PIDFILE=/var/run/${PROGNAME}.pid LOGFILE=/var/log/${PROGNAME}.log DAEMON_SYSCONFIG=/etc/sysconfig/${PROGNAME} # GO CPU core Limit #GOMAXPROCS=$(grep -c ^processor /proc/cpuinfo) GOMAXPROCS=1 # Source config . ${DAEMON_SYSCONFIG} start() { if [[ -f $PIDFILE ]] > /dev/null; then echo "apache_exporter is already running" exit 0 fi echo -n "Starting apache_exporter service…" daemonize -u ${USER} -p ${PIDFILE} -l ${LOCKFILE} -a -e ${LOGFILE} -o ${LOGFILE} ${PROG} ${ARGS} RETVAL=$? echo "" return $RETVAL } stop() { if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then echo "Service not running" return 1 fi echo 'Stopping service…' #kill -15 $(cat "$PIDFILE") && rm -f "$PIDFILE" killproc -p ${PIDFILE} -d 10 ${PROG} RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${LOCKFILE} ${PIDFILE} return $RETVAL } status() { if [ -f "$PIDFILE" ] || kill -0 $(cat "$PIDFILE"); then echo "apache exporter service running..." echo "Service PID: `cat $PIDFILE`" else echo "Service not running" fi RETVAL=$? return $RETVAL } # Call function case "" in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) echo "Usage:sudo yum -y install daemonize{start|stop|restart}" exit 2 esac
安装daemonize
软件包:
sudo vim /etc/sysconfig/apache_exporter
创建参数配置文件:
ARGS="--insecure --scrape_uri=http://localhost/server-status/?auto --telemetry.address=0.0.0.0:9117 --telemetry.endpoint=/metrics"
加:
$sudo /etc/init.d/apache_exporter Usage: /etc/init.d/apache_exporter {start|stop|restart}
测试脚本:
sudo systemctl daemon-reload sudo systemctl start apache_exporter.service sudo systemctl enable apache_exporter.service
启动Apache Prometheus导出程序,并使服务在启动时启动
对于Systemd:
sudo /etc/init.d/apache_exporter start sudo chkconfig apache_exporter on
对于不带Systemd的Init系统。
--- Systemd -- $systemctl status apache_exporter.service ● apache_exporter.service - Prometheus Loaded: loaded (/etc/systemd/system/apache_exporter.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2017-09-12 18:24:01 UTC; 17s ago Docs: https://github.com/Lusitaniae/apache_exporter Main PID: 23926 (apache_exporter) Tasks: 6 (limit: 2377) Memory: 4.4M CGroup: /system.slice/apache_exporter.service └─23926 /usr/local/bin/apache_exporter --insecure --scrape_uri=http://localhost/server-status/?auto --telemetry.address=0.0.0.0:9117 --telemetry.endpoint Sep 12 18:24:01 deb10 systemd[1]: Started Prometheus. Sep 12 18:24:01 deb10 apache_exporter[23926]: time="2017-09-12T18:24:01Z" level=info msg="Starting apache_exporter (version=, branch=, revision=)" source="apache_ Sep 12 18:24:01 deb10 apache_exporter[23926]: time="2017-09-12T18:24:01Z" level=info msg="Build context (go=go1.13.9, user=, date=)" source="apache_exporter.go:36 Sep 12 18:24:01 deb10 apache_exporter[23926]: time="2017-09-12T18:24:01Z" level=info msg="Starting Server: 0.0.0.0:9117" source="apache_exporter.go:362" Sep 12 18:24:01 deb10 apache_exporter[23926]: time="2017-09-12T18:24:01Z" level=info msg="Collect from: http://localhost/server-status/?auto" source="apache_expor Sep 12 18:24:01 deb10 apache_exporter[23926]: time="2017-09-12T18:24:01Z" level=info msg="listening and wait for graceful stop" source="apache_exporter.go:367" --- Init System -- $sudo /etc/init.d/apache_exporter status apache exporter service running... Service PID: 1970
我们可以使用以下方法验证服务状态:
$sudo chkconfig --list | grep apache_exporter apache_exporter 0:off 1:off 2:on 3:on 4:on 5:on 6:off
检查服务状态:
$sudo ss -tunelp | grep 9117 tcp LISTEN 0 128 :::9117 :::* users:(("apache_exporter",1970,6)) ino:1823474168 sk:ffff880341cd7800
确认端口正在侦听请求。
# Apache Servers - job_name: apache1 static_configs: - targets: ['10.1.10.15:9117'] labels: alias: server1-apache - job_name: apache2 static_configs: - targets: ['10.1.10.16:9117'] labels: alias: server2-apache
将导出程序作业添加到Prometheus
将作业添加到Prometheus服务器以刮取指标。编辑/etc/prometheus/prometheus.yml
sudo systemctl restart prometheus
重新启动prometheus服务以开始抓取
$telnet 10.1.10.15 9117 Trying 10.1.10.15... Connected to 10.1.10.15. Escape character is '^]'. ^]
测试从Prometheus服务器对端口9117的访问
##代码##第5步:将仪表板添加到Grafana
最后一步是创建自己的仪表板以可视化Apache指标。对于此演示,请使用Ricardo F的" Grafana仪表板"。仪表板ID为3894. 我们应该已经将Prometheus数据源添加到了Grafana,或者使用linkAdd Prometheus数据源添加了一个。
添加数据源后,通过导航到"仪表板">"导入"来导入Apache Grafana仪表板。使用3894作为Grafana仪表板ID。
给它起一个描述性名称,然后选择之前添加的Prometheus数据源。
单击导入按钮以开始使用仪表板。几分钟后,指标应开始显示。
选择其他主机以使用指标仪表板顶部的下拉菜单显示指标。在我的下一个Apache监视指南中,我将介绍如何使用InfluxDB和Grafana监视Apache Web服务器。