在5分钟内使用Prometheus和Grafana监视Linux服务器性能
Prometheus是一种开源监视解决方案,可将其所有数据存储在时间序列数据库中。
Prometheus具有多维数据模型和强大的查询语言,可用于生成有关所监视资源的报告。
本教程说明了如何使用Prometheus和Grafana监视Linux服务器的性能。
Prometheus节点导出器导出* NIX内核公开的硬件和操作系统指标,以供Prometheus使用。
该导出器使用可插入的度量标准收集器用Go编写。
设定程序
安装Prometheus和Grafana在要监视的Linux服务器上安装Prometheus Node Exporter配置节点出口程序配置带有Scrap作业的Prometheus服务器将仪表板添加到Grafana开始在Grafana上可视化系统指标用于Prometheus和Grafana的安装使用:在CentOS 7/Ubuntu/Debian上安装Prometheus Server
如何在Ubuntu上安装Grametha和Debian在CentOS 7上安装Grafana和InfluxDB
步骤1:添加Prometheus系统用户
我们将添加一个用户帐户以运行nod导出程序服务。
由于它无权访问交互式shell程序和主目录,因此很安全。
sudo groupadd --system prometheus sudo useradd -s /sbin/nologin --system -g prometheus prometheu
我们添加了一个名为 prometheus其默认组是 prometheus。
步骤2:下载并安装Prometheus Node Exporter
接下来是Prometheus Node导出器的最新版本:
curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi
解压缩下载的文件:
tar xvf node_exporter-*linux-amd64.tar.gz
将下载的文件移至/usr/local/bin目录:
cd node_exporter*/ sudo mv node_exporter /usr/local/bin/
可以使用以下命令确认安装的版本:
$node_exporter --version node_exporter, version 0.18.1 (branch: HEAD, revision: 3db77732e925c08f675d7404a8c46466b2ece83e) build user: Hyman@theitroad build date: 20190604-16:41:18 go version: go1.12.5
步骤3:配置Prometheus Node Exporter systemd/Init脚本
收集器通过提供一个 --collector.@@@name>标记。
默认情况下启用的收集器可以通过提供一个 --no-collector.@@@name>旗帜。
sudo vim /etc/systemd/system/node_exporter.service
添加以下内容:
[Unit]
Description=Prometheus
Documentation=https://github.com/prometheus/node_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/node_exporter \
--collector.cpu \
--collector.diskstats \
--collector.filesystem \
--collector.loadavg \
--collector.meminfo \
--collector.filefd \
--collector.netdev \
--collector.stat \
--collector.netstat \
--collector.systemd \
--collector.uname \
--collector.vmstat \
--collector.time \
--collector.mdadm \
--collector.zfs \
--collector.tcpstat \
--collector.bonding \
--collector.hwmon \
--collector.arp \
--web.listen-address=:9100 \
--web.telemetry-path="/metrics"
启动服务并启用它以在启动时启动:
sudo systemctl start node_exporter sudo systemctl enable node_exporter
步骤4:配置防火墙
如果服务器上有活动的防火墙,例如firewalld,ufw,开放端口 9100
sudo ufw allow 9100
对于CentOS 7系统,请使用 firewalld:
sudo firewall-cmd --add-port=9100/tcp --permanent sudo firewall-cmd --reload
对于像CentOS 6这样的Init Linux系统,我们可以使用 daemonize在后台启动服务。
安装 daemonize:
sudo yum install daemonize sudo apt-get install daemonize
安装完成后,创建 node_exporter初始化脚本:
sudo vim /etc/init.d/node_exporter
添加以下脚本:
#!/bin/bash
# Author: Josphat Mutai, Hyman@theitroad , https://github.com/jmutai
# node_exporter This shell script takes care of starting and stopping Prometheus apache exporter
## chkconfig: 2345 80 80
# description: Prometheus apache exporter start script
# processname: node_exporter
# pidfile: /var/run/node_exporter.pid
# Source function library.
. /etc/rc.d/init.d/functions
RETVAL=0
PROGNAME=node_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 "node_exporter is already running"
exit 0
fi
echo -n "Starting node_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 vim /etc/sysconfig/node_exporter
{start|stop|restart}"
exit 2
esac
创建参数配置文件:
"--collector.cpu \ --collector.diskstats \ --collector.filesystem \ --collector.loadavg \ --collector.meminfo \ --collector.filefd \ --collector.netdev \ --collector.stat \ --collector.netstat \ --collector.systemd \ --collector.uname \ --collector.vmstat \ --collector.time \ --collector.mdadm \ --collector.xfs \ --collector.zfs \ --collector.tcpstat \ --collector.bonding \ --collector.hwmon \ --collector.arp \ --web.listen-address=:9100
添加:
# /etc/init.d/node_exporter
Usage: /etc/init.d/node_exporter {start|stop|restart}
测试脚本:
sudo systemctl start node_exporter sudo systemctl enable node_exporter
步骤5:启动Prometheus节点导出器服务
对于systemd,开始使用:
sudo /etc/init.d/node_exporter start sudo chkconfig node_exporter on
对于Init系统,请使用:
$sudo /etc/init.d/node_exporter status
apache exporter service running...
Service PID: 1970
$sudo chkconfig --list | grep node_exporter
node_exporter 0:off 1:off 2:on 3:on 4:on 5:on 6:off
$sudo ss -tunelp | grep 9100
tcp LISTEN 0 128 :::9100 :::* users:(("node_exporter",pid=16105,fd=3)) uid:997 ino:193468 sk:ffff8a0a76f52a80 v6only:0 <->
我们可以使用以下方法进行验证:
# Linux Servers
- job_name: apache-linux-server1
static_configs:
- targets: ['10.1.10.20:9100']
labels:
alias: server1
- job_name: apache-linux-server2
static_configs:
- targets: ['10.1.10.21:9100']
labels:
alias: server2
步骤6:将导出程序作业添加到Prometheus
最后的第二步是将作业添加到Prometheus服务器以刮取度量标准。
编辑 /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus
重新开始 prometheus刮刮服务
$telnet 10.1.10.20 9100 Trying 10.1.10.20... Connected to 10.1.10.20. Escape character is '^]'. ^]
测试对端口的访问 9100从Prometheus服务器
第7步:将仪表板添加到Grafana
我们可以创建自己的Grafana仪表板,也可以从社区共享仪表板的集合中导入。
以下是仪表盘列表,该仪表盘比为显示* NIX服务器的经典系统指标而创建的仪表盘推荐使用:https://grafana.com/grafana/dashboards/8919https://grafana.com/dashboards/159 https://grafana.com/dashboards/3662 https://github.com/percona/grafana-dashboards https://github.com/rfrail3/grafana-dashboards出于演示目的,我们将使用ID为159的第一个仪表板。
添加Prometheus数据在将Prometheus数据源添加到Grafana的情况下,通过导航到"仪表板">"导入"来导入Apache Grafana仪表板。
使用159作为Grafana仪表板ID。
给它起一个描述性名称,然后选择之前添加的Prometheus数据源。
单击"导入"按钮开始使用仪表板。
几分钟后,指标应开始显示。

