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

使用Prometheus和Grafana监控Redis服务器的方法

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

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

 

一、下载并安装Redis Prometheus导出器

此Redis指标的Prometheus导出器支持Redis 2.x,3.x和4.x:

wget https://github.com/oliver006/redis_exporter/releases/download/v0.28.0/redis_exporter-v0.28.0.linux-amd64.tar.gz

提取下载的存档文件:

tar xvf redis_exporter-v0.28.0.linux-amd64.tar.gz

sudo mv redis_exporter /usr/local/bin/

rm -f redis_exporter-v0.28.0.linux-amd64.tar.gz

redis_exporter应该可以从你当前的SHELL执行:

$ redis_exporter  -version

返回的信息如果是v0.28.0即为成功。

要获取支持的所有选项的列表,请执行--help选项:

# redis_exporter  --help

使用Prometheus和Grafana监控Redis服务器的方法

 

二、创建Prometheus redis导出程序systemd service/Init脚本

用户prometheus将用于运行服务,添加Promethes系统用户(如果不存在):

sudo groupadd --system prometheus

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

然后继续创建systemd服务单元文件:

sudo vim /etc/systemd/system/redis_exporter.service

添加以下内容:

[Unit]

Description=Prometheus

Documentation=https://github.com/oliver006/redis_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/redis_exporter \

 --log-format=txt \

 --namespace=redis \

 --web.listen-address=:9121 \

 --web.telemetry-path=/metrics

SyslogIdentifier=redis_exporter

Restart=always

[Install]

WantedBy=multi-user.target

对于Init系统,安装daemonize(CentOS/Ubuntu):

sudo yum -y install daemonize

sudo apt-get install daemonize

创建init脚本:

sudo vim /etc/init.d/redis_exporter

增加:

#!/bin/bash

# Author: Josphat Mutai, kiplangatmtai@gmail.com , https://github.com/jmutai

# redis_exporter     This shell script takes care of starting and stopping Prometheus redis exporter 

#

# chkconfig: 2345 80 80

# description: Prometheus redis exporter  start script

# processname: redis_exporter

# pidfile: /var/run/redis_exporter.pid

# Source function library.

. /etc/rc.d/init.d/functions

RETVAL=0

PROGNAME=redis_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 "redis_exporter  is already running"

exit 0

fi

echo -n "Starting redis_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 "redis 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/redis_exporter

定义使用的命令参数:

ARGS="--log-format=txt \

--namespace=redis \

--web.listen-address=:9121 \

--web.telemetry-path=/metrics"

测试脚本:

# /etc/init.d/redis_exporter

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

 

三、启动Redis Prometheus导出器并启用服务以在启动时启动

对于Systemd服务器,请使用systemctl命令:

sudo systemctl enable redis_exporter

sudo systemctl start redis_exporter

对于SysV Init系统,请使用:

sudo /etc/init.d/redis_exporter start

sudo chkconfig redis_exporter on

你可以验证服务是否正在运行:

$ sudo /etc/init.d/redis_exporter status

redis exporter  service running...

Service PID: 27106

$ sudo chkconfig --list | grep redis_exporter

redis_exporter 0:off   1:off   2:on    3:on    4:on    5:on    6:off

$ sudo ss -tunelp | grep 9121

tcp    LISTEN     0      128   :::9121   :::*   users:(("redis_exporter",1970,6)) ino:1823474168 sk:ffff880341cd7800

 

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

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

# Redis Servers

- job_name: 10.10.10.3-redis

static_configs:

- targets: ['10.10.10.3:9121']

labels:

alias: 10.10.10.3

- job_name: 10.10.10.4-redis

static_configs:

- targets: ['10.10.10.4:9121']

labels:

alias: 10.10.10.4

重新启动prometheus服务以开始抓取数据指标:

sudo systemctl restart prometheus

从Prometheus服务器测试对端口9121的访问,它应该能够连接:

$ telnet 10.1.10.15 9121

Trying 10.1.10.15...

Connected to 10.1.10.15.

Escape character is '^]'.

^]

如果无法连接,请检查你的服务端口和防火墙。

 

五、将仪表板添加到Grafana

将Prometheus数据源添加到Grafana并导入或创建Redis的grafana仪表板。

Grafana仪表板可在https://grafana.net/dashboards/763上获得,我的作业配置使用别名,我将在github上使用带有主机和别名选择器的Grafana仪表板。

下载仪表板json文件(Linux中的Json格式化神器jq下载与安装):

wget https://raw.githubusercontent.com/oliver006/redis_exporter/master/contrib/grafana_prometheus_redis_dashboard_alias.json

在Grafana UI上,转到“创建”>“导入仪表板”>“上载.json文件”,选择下载的json文件,然后单击“导入”:

使用Prometheus和Grafana监控Redis服务器的方法

等待数据开始出现在你的Grafana仪表板上,下面是一个示例视图:

使用Prometheus和Grafana监控Redis服务器的方法

至此,你完全可以使用Grafana监控你的Redis服务器了。

 

相关主题

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

精选文章
热门文章