参考文章:
搭建telegraf、influxdb、grafana监控平台监控docker容器
https://blog.csdn.net/will0532/article/details/78344319
Linux shell脚本之 if条件判断
https://blog.csdn.net/doiido/article/details/43966819
使用Jmeter进行接口接口或者自动化测试时输出的HTML报告图表展示不够美观,又不能在测试中实时监测到服务器性能与请求响应时间,查询资料后 还是想着自己动手搭建一下性能测试监控平台。
初学者,练习所作,存在问题,还望见谅
名称 | 简介 |
---|---|
docker | 开源的应用容器引擎,实现虚拟化。 |
Jmeter | 基于Java的压力测试工具 |
telegraf | 收集系统和服务的统计数据 |
influxdb | 开源时序型数据库,常用的一种使用场景:监控数据统计 |
grafana | 跨平台的开源的度量分析和可视化工具 |
暂无
将下列两个文件保存在服务器中任意目录中
[root@VM-0-7-centos docker-compose]# ls
docker-compose.yml install.sh
服务安装可依据脚本执行后提示信息执行,执行安装:sh install.sh
#!/bin/bash
#脚本用于更新阿里yum源、安装docker、安装Python3、安装docker-compose、配置pip国内镜像
#日期:2020-8-12
#更新yum为阿里yum源
yum_install(){
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
echo '备份成功,开始下载yum源'
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
echo '下载成功'
yum clean all
yum makecache
}
#配置pip国内镜像
pips(){
mkdir -p /~.pip
tee ~.pip/pip.conf <<-'EOF'
[global]
index-url=http://mirrors.aliyun.com/pypi/simple
trusted-host=mirrors.aliyun.com
EOF
}
#配置docker阿里镜像加速
docker_daemon(){
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://m0gqm8ls.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
}
#检测环境是否安装docker
dockers(){
total=$(find / -name "docker.service")
if [[ -z $total ]]; then
echo '检测到系统未安装docker'
return 0
else
echo '检测到系统已安装docker'
return 1
fi
}
#检测环境是否安装docker-compose
docker_composes(){
service=$(docker-compose -v |grep version)
if [[ -n $service ]]; then
echo '检测到系统已安装docker-compose,将自动启动服务'
docker_compose_run
echo '启动完成!!'
echo '该脚本所在目录存在docker-compose.yml文件,手动启动请在该文件所在目录下执行docker-compose up -d 后台运行docker-compose项目启动所有服务'
exit
else
echo '未安装docker-compose将进行安装'
return 1
fi
}
#启动docker服务并设置为自启动
docker_run(){
systemctl start docker
systemctl enable docker.service
}
#判断docker服务是否存在
docker_service(){
for ((i=0;i<=3;i++))
do
service=$(systemctl status docker|grep Active|grep running)
if [[ -z $service ]];then
echo 'docker服务已启动'
return 0
else
echo 'docker服务没有启动,尝试启动'
docker_run
sleep 3
echo '再次检测docker服务是否启动'
fi
done
}
#安装docker
docker_install(){
yum -y install docker
echo '启动docker'
docker_run
docker_service
docker_daemon
}
#安装Python3和docker-compose
docker_compose_install(){
yum -y install python3
pips
pip3 install docker-compose
echo '安装完成'
}
docker_compose_run(){
docker_daemon
docker-compose up -d
exit
}
#主流程
echo '********安装docker-compose部署influxdb、telegraf、grafana、jmeter服务*********'
read -r -p "是否需要将yum源更换为阿里源[y/n]: " input
case $input in
[yY][eE][sS]|[yY])
echo '开始更新yum源'
yum_install
echo '检测系统是否安装docker'
dockers
if [[ $? -eq 0 ]]; then
echo '开始docker安装'
docker_install
echo '开始Python3和docker-compose安装'
docker_compose_install
echo '启动docker-compose'
docker-compose_run
else
echo '检测系统是否安装docker-compose'
docker_composes
docker_compose_install
docker-compose_run
exit
fi
;;
[nN][oO]|[nN])
echo '检测是否安装docker'
dockers
if [[ $? -eq 0 ]]; then
echo '开始docker安装'
docker_install
echo '开始Python3和docker-compose安装'
docker_compose_install
echo '启动docker-compose'
docker-compose_run
else
docker_composes
if [[ $? -eq 1 ]]; then
docker_compose_install
echo '正在启动docker-compose'
docker_compose_run
fi
fi
;;
esac
version: "3"
services:
jmeter:
image: registry.cn-hangzhou.aliyuncs.com/jmeter/jmeter:centos
container_name: jmeter
volumes:
- /jmeter/web:/jmeter/web
- /jmeter/jmx:/jmeter/jmx
- /jmeter/jtl:/jmeter/jtl
depends_on:
- influxdb
- telegraf
- grafana
links:
- influxdb
influxdb:
image: influxdb
container_name: influxdb
ports:
- "8086:8086"
telegraf:
image: registry.cn-hangzhou.aliyuncs.com/jmeter/telegraf:1.0
container_name: telegraf
ports:
- "8092:8092"
- "8125:8125"
- "8094:8094"
links:
- influxdb
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "3000:3000"