zoukankan      html  css  js  c++  java
  • promeheus监控redis

    Grafana+Prometheus系统监控之Redis

    请先安装go语言环境

    (promeheus+grafana环境已经部署好了,具体参考前天的文档)

    tar -zxvf go1.12.4.linux-amd64.tar.gz  -C /usr/local

    然后修改环境

    vim /etc/profile.d/go.sh

    export GOPATH=/usr/local/go

    export PATH=$PATH:$GOPATH/bin

    同步刷新环境

    source /etc/profile.d/go.sh

    下载并解压缩插件

    unzip redis_exporter-master.zip

    mv redis_exporter-master  /usr/local/redis_exporter

    cd redis_exporter

    go build

    然后会产生于一个命令文件:redis_exporter

     

    这个命令使用方式

    ## 无密码
    ./redis_exporter redis//192.168.33.131:6379 &
    ## 有密码
    redis_exporter  -redis.addr 192.168.33.131:6379  -redis.password 123456

    我们把这个命令cp到bin目录中,方便使用

    cp redis_exporter /usr/local/bin/

     

    ---------------------------为了方便维护,我们写个脚本-------------------------------

    先写个脚本,如下

    [root@localhost redis_exporter]# cat redis_export.sh

    #!/bin/bash

    IP=`ip addr | grep -v virbr |grep -o -e 'inet [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'|grep -v "127.0.0"|awk '{print $2}'`

    PORT=6379

     

    COMMAND=/usr/local/bin/redis_exporter

    #PIDNUM=`ps -ef | grep redis_exporter | grep -v grep | awk -F ' ' '{print $2}'`

     

    # if no password

    #redis_exporter redis//$IP:$PORT &

    # if have password,don't need string<>

    #redis_exporter redis//$IP:$PORT & -redis.password <your redis's password>

     

     

    start(){

    PIDNUM=`ps -ef | grep redis_exporter | grep -v grep | awk -F ' ' '{print $2}'`

    if [ -z $PIDNUM ];then

        $COMMAND -redis.addr $IP:$PORT &

    else

        echo "$0 is running"

    fi

    }

     

    stop(){

    PIDNUM=`ps -ef | grep redis_exporter | grep -v grep | awk -F ' ' '{print $2}'`

    if [ -z $PIDNUM ];then

        echo "$0 is not running"

    else

        echo "shutting down $0"

        kill -9 "$PIDNUM" && echo "PID $PIDNUM was killed."

    fi

    }

     

    status(){

    PIDNUM=`ps -ef | grep redis_exporter | grep -v grep | awk -F ' ' '{print $2}'`

    if [ -z $PIDNUM ];then

        echo "$0 is not runing"

    else

        echo "$0 is runing,it's PID is $PIDNUM"

    fi

    }

     

    case $1 in

    start)

    start

    ;;

    stop)

    stop

    ;;

    status)

    status

    ;;

    restart)

    stop

    start

    ;;

    *)

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

    ;;

    esac

     

    ------------------------------------------------------------------------------

    修改配置文件prometheus.yml

    如下:

    # my global config

    global:

      scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.

      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.

      # scrape_timeout is set to the global default (10s).

     

    # Alertmanager configuration

    alerting:

      alertmanagers:

      - static_configs:

        - targets:

          # - alertmanager:9093

     

    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.

    rule_files:

      # - "first_rules.yml"

      # - "second_rules.yml"

     

    # A scrape configuration containing exactly one endpoint to scrape:

    # Here it's Prometheus itself.

    scrape_configs:

      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.

      - job_name: 'prometheus'

     

        # metrics_path defaults to '/metrics'

        # scheme defaults to 'http'.

        scrape_interval: 10s

     

        static_configs:

          - targets: ['192.168.2.210:9090']

            labels:

              instance: prometheus

     

      - job_name: 'centos7-machine1'

        scrape_interval: 10s

        static_configs:

          - targets: ['192.168.2.210:9100']

            labels:

              instance: centos7-machine1

     

      - job_name: 'centos7-machine2'

        scrape_interval: 10s

        static_configs:

          - targets: ['192.168.2.211:9100']

            labels:

              instance: centos7-machine2

     

      - job_name: 'centos7-machine3'

        scrape_interval: 10s

        static_configs:

          - targets: ['192.168.2.212:9100']

            labels:

              instance: centos7-machine3

     

      - job_name: 'centos7-machine4'

        scrape_interval: 10s

        static_configs:

          - targets: ['192.168.2.213:9100']

            labels:

              instance: centos7-machine4

      - job_name: 'win2016-machine5'

        scrape_interval: 10s

        static_configs:

          - targets: ['192.168.2.214:9182']

            labels:

              instance: win2016-machine5

     

      - job_name: 'redis_1'

        scrape_interval: 10s

        static_configs:

          - targets: ['192.168.2.211:9121']

            labels:

              instance: 192.168.2.211

     

      - job_name: 'redis_2'

        scrape_interval: 10s

        static_configs:

          - targets: ['192.168.2.212:9121']

            labels:

              instance: 192.168.2.212

     

      - job_name: 'redis_3'

        scrape_interval: 10s

        static_configs:

          - targets: ['192.168.2.213:9121']

            labels:

              instance: 192.168.2.213

         

    设置用户(prometheus用户再前面的环境部署中已经添加过了)

    chown -R prometheus:prometheus /usr/local/redis_exporter/

    cp /usr/local/redis_exporter/redis_export.sh  /etc/init.d/redis_exporter

    service redis_export start

  • 相关阅读:
    FreeRTOS 任务栈大小确定及其溢出检测
    FreeRTOS任务优先级说明
    leetcode 263 Ugly Number
    L2,breakfast or lunch
    Redis(2)用jedis实现在java中使用redis
    L1,a private conversation
    Redis(1)在windows环境下的安装和测试
    springMVC的拦截器工作流程
    求交集,差集,并集,善用java的set
    java下发电子邮件demo
  • 原文地址:https://www.cnblogs.com/fatyao/p/11192250.html
Copyright © 2011-2022 走看看