请注意:执行脚本前;确认是否安装了docker 新版本(我这里只会检查是否有docker)
#!/bin/bash
#函数要放在最上面
IP=`ip addr show | grep 'inet ' | grep -v '10\.' | grep -v '172\.1[6-9]' | grep -v '172\.2[0-9]' | grep -v '172\.3[0-1]' | grep -v '192\.168'|grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1`
centos-install() {
ps -elf | grep prometheus| grep -v grep
if [ $? -eq 0 ]; then
echo "###############Prometheus is installed###############"
else
echo "###################install promthues #############################"
# /opt/prometheus/data目录,准备用来挂载放置prometheus的数据
# /opt/prometheus/config目录,准备用来放置prometheus的配置文件
# /opt/prometheus/rules目录,准备用来挂载放置prometheus的规则文件
mkdir -p /opt/prometheus/{data,config,rules}
# 授权相关文件夹权限
chmod -R 777 /opt/prometheus/data
chmod -R 777 /opt/prometheus/config
chmod -R 777 /opt/prometheus/rules
# 配置文件
cat > /opt/prometheus/config/prometheus.yml << EOF
global:
# 数据采集间隔
scrape_interval: 45s
# 告警检测间隔
evaluation_interval: 45s
# 告警规则
rule_files:
# 这里匹配指定目录下所有的.rules文件
- /prometheus/rules/*.rules
# 采集配置
scrape_configs:
# 采集项(prometheus)
- job_name: 'prometheus'
static_configs:
# prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
- targets: ['$IP:9100']
EOF
# 查看一下配置文件
cat /opt/prometheus/config/prometheus.yml
docker run --name prometheus -d -p 9090:9090 -v /etc/localtime:/etc/localtime:ro -v /opt/prometheus/data:/prometheus/data -v /opt/prometheus/config:/prometheus/config -v /opt/prometheus/rules:/prometheus/rules prom/prometheus:v2.41.0 --config.file=/prometheus/config/prometheus.yml --web.enable-lifecycle
fi
#######################################################################################################
ps -elf | grep grafana| grep -v grep
if [ $? -eq 0 ]; then
echo "###############grafana is installed###############"
else
echo "###################install grafana #############################"
# /opt/grafana/data目录,准备用来挂载放置grafana的数据
# /opt/grafana/plugins目录,准备用来放置grafana的插件
# /opt/grafana/config目录,准备用来挂载放置grafana的配置文件
mkdir -p /opt/grafana/{data,plugins,config}
# 授权相关文件夹权限
chmod -R 777 /opt/grafana/data
chmod -R 777 /opt/grafana/plugins
chmod -R 777 /opt/grafana/config
docker pull grafana/grafana:9.3.2
# 先临时启动一个容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana:9.3.2
# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /opt/grafana/config/grafana.ini
# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp
# 修改配置文件(需要的话)
# vim /opt/grafana/config/grafana.ini
docker run -d -p 3000:3000 --name=grafana -v /etc/localtime:/etc/localtime:ro -v /opt/grafana/data:/var/lib/grafana -v /opt/grafana/plugins/:/var/lib/grafana/plugins -v /opt/grafana/config/grafana.ini:/etc/grafana/grafana.ini -e "GF_SECURITY_ADMIN_PASSWORD=admin" -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" grafana/grafana:9.3.2
fi
#############################################################################################################
ps -elf | grep node_exporter| grep -v grep
if [ $? -eq 0 ]; then
echo "###############node_exporter is installed###############"
else
cd /root/
tar -xvf node_exporter-1.1.2.linux-amd64.tar.gz
cd node_exporter-1.1.2.linux-amd64
nohup ./node_exporter --web.listen-address=":9100" &
fi
#echo "当前firewalld 状态",然后防火墙加端口
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --permanent --add-port=9100/tcp
sudo firewall-cmd --permanent --add-port=9090/tcp
sudo firewall-cmd --reload
systemctl restart firewalld.service
echo "###############################################################################"
echo "http://$IP:3000"
echo "http://$IP:9100"
echo "http://$IP:9090"
echo "tempalte Linux主机详情 | Grafana Labs"
}
ubuntu-install() {
echo ubunut
}
###################################################################################################################################################################################################################
#判断docker是否安装,且docker版本是否大于25
docker --version 2>/dev/null
if [ $? -eq 0 ]; then
echo "docker已安装"
systemctl start docker
else
echo “docker 未安装;请确认”
exit 1
fi
# 检查系统中是否存在 apt 或 rpm 命令
if which apt &> /dev/null; then
echo "系统使用 apt 包管理器"
# 执行 apt 相关的命令
sudo apt update 2>/dev/null
# sudo apt upgrade
ubuntu-install
elif which rpm &> /dev/null; then
echo "系统使用 rpm 包管理器"
# 执行 rpm 相关的命令
sudo yum update 2>/dev/null
# sudo yum upgrade
centos-install
else
echo "未检测到 apt 或 rpm 包管理器"
exit 1
fi
保存为bash.sh 即可;后续补上ubuntu的 至于roky系统的;只需要需要包管理用哪个即可