在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数据源。
单击"导入"按钮开始使用仪表板。
几分钟后,指标应开始显示。