云网牛站
所在位置:首页 > Linux云服务器 > 使用Prometheus和Grafana监控Linux服务器性能的方法

使用Prometheus和Grafana监控Linux服务器性能的方法

2019-02-15 16:02:08作者:叶云稿源:云网牛站

本文介绍使用Prometheus和Grafana监控Linux服务器性能的方法。安装参考文章:在RHEL 8系统上安装Prometheus 2.6.0的步骤在RHEL 8系统上安装Grafana 5.4.2的步骤

 

一、添加Prometheus系统用户

sudo groupadd --system prometheus

sudo useradd -s /sbin/nologin --system -g prometheus prometheus

我们添加了一个名为prometheus的系统用户,其默认组为prometheus,此用户帐户将用于运行nod导出程序服务,它是安全的,因为它无法访问交互式shell和主目录。

 

二、下载并安装Prometheus

在终端下:

wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz

tar xvf node_exporter-0.17.0.linux-amd64.tar.gz

sudo mv node_exporter-0.17.0.linux-amd64/node_exporter /usr/local/bin/

rm -f node_exporter-0.17.0.linux-amd64.tar.gz

rm -rf node_exporter-0.17.0.linux-amd64

可以使用以下命令确认安装的版本:

# node_exporter  --version

返回的信息为0.17.0版本即为安装成功。

 

三、配置Prometheus节点导出器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"

SyslogIdentifier=node_exporter

Restart=always

[Install]

WantedBy=multi-user.target

启动该服务并使其在启动时启动:

sudo systemctl start node_exporter

sudo systemctl enable node_exporter

下面需要配置防火墙,如果你的服务器上有活动防火墙,例如firewalld、ufw,打开端口9100:

sudo ufw allow 9100

参考:在Ubuntu 18.04系统中使用UFW设置防火墙

对于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 init脚本:

sudo vim /etc/init.d/node_exporter

添加以下脚本:

#!/bin/bash

# Author: Josphat Mutai, kiplangatmtai@gmail.com , 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 "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

status)

status

;;

*)

echo "Usage: $0 {start|stop|restart}"

exit 2

esac

创建参数配置文件:

sudo vim /etc/sysconfig/node_exporter

增加以下内容:

ARGS="--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 \

--web.telemetry-path="/metrics"

测试脚本:

# /etc/init.d/node_exporter

Usage: /etc/init.d/node_exporter {start|stop|restart}

 

四、启动Prometheus节点导出器服务

对于systemd,请开始使用:

sudo systemctl start node_exporter

sudo systemctl enable node_exporter

对于Init系统使用:

sudo /etc/init.d/node_exporter start

sudo chkconfig node_exporter on

你可以验证使用:

$ 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 <->

 

五、将导出器作业添加到Prometheus

向Prometheus服务器添加作业以抓取指标,编辑/etc/prometheus/prometheus.yml:

# 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

重启prometheus服务以开始抓取:

sudo systemctl restart prometheus

从Prometheus服务器测试对端口9100的访问:

$ telnet 10.1.10.20 9100

Trying 10.1.10.20...

Connected to 10.1.10.20.

Escape character is '^]'.

^]

 

六、将仪表板添加到Grafana

你可以创建自己的Grafana仪表板,也可以从社区共享仪表板集合中导入。

出于演示目的,我们将使用ID为159的第一个仪表板(https://grafana.com/dashboards/159)。

将Prometheus数据源添加到Grafana,通过导航到仪表板>导入导入Apache Grafana仪表板,使用159表示Grafana仪表板ID:

使用Prometheus和Grafana监控Linux服务器性能的方法

为其指定一个描述性名称,然后选择之前添加的Prometheus数据源:

使用Prometheus和Grafana监控Linux服务器性能的方法

单击导入按钮开始使用仪表板,几分钟后,指标应该开始显示,这表示成功了:

使用Prometheus和Grafana监控Linux服务器性能的方法

 

相关主题

采用Grafana与Telegraf来监控Linux操作系统

精选文章
热门文章