基于grafana+influxdb+prometheus部署性能监控平台

前置条件:在物理机上部署docker并启动

1. install_grafana_docker.sh

#!/bin/bash
# 下载镜像
docker pull grafana/grafana:8.2.3

# 删除正在运行的容器
docker container rm -f grafana

# 创建文件夹用于挂载grafana的数据
data_path="/data/grafana"
if [ ! -d "$data_path" ]
then
echo "$data_path目录不存在,开始进行创建并修改权限"
mkdir -p "$data_path"
chmod 777 -R "$data_path"
fi


# 创建文件夹用于挂载grafana的配置数据
confile_path="/etc/grafana"
if [ ! -d "$confile_path" ]
then
echo "$confile_path目录不存在,开始进行创建"
mkdir -p "$confile_path"
fi

#判断配置文件是否存在
config_file_name="grafana.ini"
if [ ! -f "$confile_path/$config_file_name" ]
then
# 启动容器后从容器中复制配置文件到宿主机,然后删除容器
docker run -d --name=grafana grafana/grafana:8.2.3
docker cp grafana:/etc/grafana/grafana.ini "$confile_path/$config_file_name"
docker container rm -f grafana
echo "$confile_path/$config_file_name 不存在,首先启动容器后从容器中复制配置文件到宿主机,然后删除容器"
fi

######################################################################

# 启动容器
docker run -d \
  --user root \
  --name=grafana \
  -p 3000:3000 \
  -v /etc/grafana/grafana.ini:/etc/grafana/grafana.ini \
  -v /data/grafana:/var/lib/grafana \
  grafana/grafana:8.2.3

# 查看容器的运行状态
docker container ls

ip=`ifconfig eth0|grep inet|grep -v inet6|awk '{print $2}'|tr -d "addr"`
echo "请在浏览器中访问以下地址能正常访问就说明安装成功"
echo "http://$ip:3000"
echo "初始登录时用户名和密码都为admin"
echo "success"

echo "常用模板编号:"
echo "8919 -> Node Exporter for Prometheus Dashboard CN v20201010"
echo "5496 -> Apache JMeter Dashboard using Core InfluxdbBackendListenerClient"

#######################################################
echo "===========grafana容器常用的操作命令============="
echo "启动grafana容器:docker container start grafana"
echo "重启grafana容器:docker container restart grafana"
echo "停止grafana容器:docker container stop grafana"
echo "进入grafana容器:docker container exec -it grafana /bin/bash"

2. install_influxdb_docker.sh

#!/bin/bash
# 下载镜像
docker pull influxdb:1.8

# 删除正在运行的容器
docker container rm -f influxdb

create_path(){
  if [ ! -d "$1" ]
  then
  echo "$1目录不存在,开始进行创建"
  mkdir -p "$1"

  if [ $2 -eq 777 ]
  then
  echo "修改$1目录权限为777"
  chmod 777 -R "$1"
  fi

  fi
}

# 创建目录用于挂载influxdb的数据
create_path "/data/influxdb/data" 777
create_path "/data/influxdb/meta" 777
create_path "/data/influxdb/wal" 777
# 创建目录用于挂载influxdb的配置
confile_path="/etc/influxdb"
create_path "$confile_path" 755


#判断配置文件是否存在
config_file_name="influxdb.conf"
if [ ! -f "$confile_path/$config_file_name" ]
then
# 启动容器后从容器中复制配置文件到宿主机,然后删除容器
docker run -d --name=influxdb influxdb:1.8
docker cp influxdb:/etc/influxdb/influxdb.conf "$confile_path/$config_file_name"
docker container rm -f influxdb
echo "$confile_path/$config_file_name 不存在,首先启动容器后从容器中复制配置文件到宿主机,然后删除容器"
fi

######################################################################

# 启动容器
docker run -d --name influxdb \
  -p 8083:8083 -p 8086:8086 \
  --expose 8090 --expose 8099 \
  -v /etc/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf \
  -v /data/influxdb/data:/var/lib/influxdb/data \
  -v /data/influxdb/meta:/var/lib/influxdb/meta \
  -v /data/influxdb/wal:/var/lib/influxdb/wal \
  influxdb:1.8


# 查看容器的运行状态
docker container ls

ip=`ifconfig eth0|grep inet|grep -v inet6|awk '{print $2}'|tr -d "addr"`
echo "$ip"
echo "success"
echo "配置参考:https://www.jianshu.com/p/efd3e25a91fc"

#######################################################
echo "===========influxdb容器常用的操作命令============="
echo "启动influxdb容器:docker container start influxdb"
echo "重启influxdb容器:docker container restart influxdb"
echo "停止influxdb容器:docker container stop influxdb"
echo "进入influxdb容器:docker container exec -it influxdb /bin/bash"

3. install_prometheus_docker.sh

#!/bin/bash
# 下载镜像
docker pull prom/prometheus:v2.31.0

# 删除正在运行的容器
docker container rm -f prometheus

# 创建文件夹用于挂载prometheus的数据
data_path="/data/prometheus"
if [ ! -d "$data_path" ]
then
echo "$data_path目录不存在,开始进行创建并修改权限"
mkdir -p "$data_path"
chmod 777 -R "$data_path"
fi


# 创建文件夹用于挂载prometheus的配置数据
confile_path="/etc/prometheus"
if [ ! -d "$confile_path" ]
then
echo "$confile_path目录不存在,开始进行创建"
mkdir -p "$confile_path"
fi


#判断配置文件是否存在
cd "$confile_path"
config_file_name="prometheus.yml"
if [ ! -f "$config_file_name" ]
then
# 启动容器后从容器中复制配置文件到宿主机,然后删除容器
docker run -d --name prometheus prom/prometheus:v2.31.0
docker cp prometheus:/etc/prometheus/prometheus.yml "$confile_path/$config_file_name"
docker container rm -f prometheus
echo "$confile_path/$config_file_name 不存在,首先启动容器后从容器中复制配置文件到宿主机,然后删除容器"
fi

# 启动容器
docker run -d -p 9090:9090 --name prometheus\
  -v /data/prometheus:/prometheus \
  -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus:v2.31.0 \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.retention.time=5d

# 查看容器的运行状态
docker container ls -a

ip=`ifconfig eth0|grep inet|grep -v inet6|awk '{print $2}'|tr -d "addr"`

echo "请在浏览器中访问以下地址能正常访问就说明安装成功"
echo "http://$ip:9090/graph"
echo "success"

echo "prometheus容器常用的操作命令"
echo "启动prometheus容器:docker container start prometheus"
echo "重启prometheus容器:docker container restart prometheus"
echo "停止prometheus容器:docker container stop prometheus"
echo "进入prometheus容器:docker container exec -it prometheus /bin/sh"

4. 快速开启/重启/停止监控平台

docker start influxdb grafana prometheus
docker restart influxdb grafana prometheus
docker stop influxdb grafana prometheus
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容