一、下载并安装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 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仪表板。
在Grafana UI上,转到“创建”>“导入仪表板”>“上载.json文件”,选择下载的json文件,然后单击“导入”:
等待数据开始出现在你的Grafana仪表板上,下面是一个示例视图:
至此,你完全可以使用Grafana监控你的Redis服务器了。
相关主题