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

一、添加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.标志来启用收集器。

默认情况下启用的收集器可以通过提供--no-collector.标志来禁用:

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

对于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:

3d6e5e89ab473db5aaeae744f1b23bbc.png

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

2f7504001460a77713de775211e3d2a9.png

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

38eb0616923f0fc6e04817ebfca6f8c0.png

相关主题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值