前提prometheus和node-exporter节点都可以正常访问互联网
IPADDRESS1=PROMTHEUS_IPADDRESS
IPADDRESS2=NODE_EXPORTER_IPADDRESS
~node-exporter节点
(1)重启网络服务
systemctl restart network
(2)安装wget服务,并且更换yum源仓库
yum -y install wget && wget -O /etc/yum.repos.d/CentOs-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && yum clean all && yum makecache
(3)删除ssh的相关的文件,并且生成ssh免密登录文件,安装sshpass,把免密登录文件传到prometheus端
rm -rf ~/.ssh/{known_hosts,id_rsa*} && ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa &> /dev/null && sed -i '/StrictHostKeyChecking/c StrictHostKeyChecking no' /etc/ssh/ssh_config && rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null && sshpass -p ${PASSWORD} ssh-copy-id -i ${USER}@${IPADDRESS1}
(4)编辑node-exporter.sh文件,执行node-exporter.sh文件
vi node-exporter.sh
#!/bin/bash
setenforce 0 &&
iptables -I INPUT -p tcp --dport 9100 -j ACCEPT &&
iptables-save > /dev/null &&
mkdir -p /data/apps > /dev/null &&
cd /data/apps &&
wget https://githubfast.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz > /dev/null &&
echo "下载node-exporters压缩包完成" &&
tar -zxvf node_exporter-1.4.0.linux-amd64.tar.gz -C /usr/local > /dev/null &&
cd /usr/local &&
ln -s node_exporter-1.4.0.linux-amd64 node_exporter &&
echo "[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target" | tee -i /usr/lib/systemd/system/node_exporter.service > /dev/null &&
systemctl enable node_exporter &&
systemctl start node_exporter &&
systemctl status node_exporter
sh node-exporter.sh
~prometheus节点
(1)重启网络服务
systemctl restart network
(2)安装wget服务,并且更换yum源仓库
yum -y install wget && wget -O /etc/yum.repos.d/CentOs-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && yum clean all && yum makecache
(3)删除ssh的相关的文件,并且生成ssh免密登录文件,安装sshpass,把免密登录文件传到node-exporter端
rm -rf ~/.ssh/{known_hosts,id_rsa*} && ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa &> /dev/null && sed -i '/StrictHostKeyChecking/c StrictHostKeyChecking no' /etc/ssh/ssh_config && rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null && sshpass -p ${PASSWORD} ssh-copy-id -i ${USER}@${IPADDRESS2}
(4)编辑prometheus.sh和node_join.sh,执行prometheus.sh和node_join.sh文件
vi prometheus.sh
#!/bin/bash
setenforce 0 &&
iptables -I INPUT -p tcp --dport 9090 -j ACCEPT &&
iptables-save &&
yum -y install wget > /dev/null &&
mkdir -p /data/apps &&
cd /data/apps &&
echo "下载压缩包中..." &&
wget https://githubfast.com/prometheus/prometheus/releases/download/v2.37.2/prometheus-2.37.2.linux-amd64.tar.gz > /dev/null &&
echo "下载完成" &&
echo "解压中..." &&
tar -zxvf prometheus-2.37.2.linux-amd64.tar.gz -C /usr/local > /dev/null &&
echo "解压完成" &&
cd /usr/local &&
ln -s prometheus-2.37.2.linux-amd64 prometheus &&
cd /usr/local/prometheus &&
./prometheus --version &&
echo "[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=root
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target" | tee -i /usr/lib/systemd/system/prometheus.service > /dev/null &&
systemctl enable prometheus > /dev/null &&
systemctl start prometheus > /dev/null &&
systemctl status prometheus
vi node_join.sh
#!/bin/bash
#对应被监控的node名称
NODENAME=$1
#对应被监控的IP地址
IPADDRESS=$2
echo "
- job_name: "$NODENAME"
static_configs:
- targets: ["$IPADDRESS:9100"]
" | tee -a /usr/local/prometheus/prometheus.yml > /dev/null &&
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml &&
curl -X POST http://127.0.0.1:9090/-/reload
sh prometheus.sh && ssh node_join.sh NODEX_EXPORTER_NAME NODEX_EXPORTER_IPADDRESS
---------------------------------------------------------------------------------------------------------------------------
或者
~prometheus节点
(1)编辑以下多个文件。
注意:文件的路径都是在/root/文件夹,prometheus-2.37.2.linux-amd64.tar.gz、node_exporter-1.4.0.linux-amd64.tar.gz下载到/data/apps文件夹,prometheus和node_exporter解压到/usr/local文件夹
## 在prometheus节点上执行的auto_prometheus_node_exporter.sh文件,为node_exporter节点对prometheus节点的ssh免密登录
vi auto_prometheus_node_exporter.sh
#!/bin/bash
IPADDRESS1="$1"
IPADDRESS2="$2"
PASSWORD="root"
USER="root"
systemctl restart network && yum -y install wget && wget -O /etc/yum.repos.d/CentOs-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && yum clean all && yum makecache && rm -rf ~/.ssh/{known_hosts,id_rsa*} && ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa &> /dev/null && sed -i '/StrictHostKeyChecking/c StrictHostKeyChecking no' /etc/ssh/ssh_config && rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null && sshpass -p ${PASSWORD} ssh-copy-id -i ${USER}@${IPADDRESS2} &> /dev/null && echo "success"
## 在prometheus节点上执行的auto_prometheus_node_exporter_1文件,为prometheus节点对node_exporter节点的ssh免密登录
vi auto_prometheus_node_exporter_1.sh
#!/bin/bash
IPADDRESS1="$1"
IPADDRESS2="$2"
PASSWORD="root"
USER="root"
systemctl restart network && yum -y install wget && wget -O /etc/yum.repos.d/CentOs-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && yum clean all && yum makecache && rm -rf ~/.ssh/{known_hosts,id_rsa*} && ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa &> /dev/null && sed -i '/StrictHostKeyChecking/c StrictHostKeyChecking no' /etc/ssh/ssh_config && rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null && sshpass -p ${PASSWORD} ssh-copy-id -i ${USER}@${IPADDRESS2} &> /dev/null && echo "success" && scp /root/auto_prometheus_node_exporter.sh ${USER}@${IPADDRESS2}:/root/auto_prometheus_node_exporter.sh && sshpass -p ${PASSWORD} ssh -tt ${USER}@${IPADDRESS2} "systemctl restart network ; sh /root/auto_prometheus_node_exporter.sh ${IPADDRESS2} ${IPADDRESS1}" && echo "success_1"
## 在prometheus节点上执行的prometheus.sh文件及部署prometheus,使用scp命令把node-exporter.sh传到node_exporter节点并且部署node-exporter,最后在prometheus节点上执行node_join.sh,把node-exporter节点加入到prometheus节点
vi auto_prometheus_node_exporter_2.sh
#!/bin/bash
PASSWORD="root"
USER="root"
#对应被监控的IP地址
IPADDRESS2="$2"
#对应被监控的node名称
NODENAME="$1"
sh /root/prometheus.sh && echo "prometheus.sh success" && scp /root/node-exporter.sh ${USER}@${IPADDRESS2}:/root/node-exporter.sh && sshpass -p ${PASSWORD} ssh -tt ${USER}@${IPADDRESS2} "sh /root/node-exporter.sh" && echo "node-exporter.sh success" && sh /root/node_join.sh ${NODENAME} ${IPADDRESS2} && echo "node_join success"
vi prometheus.sh
#!/bin/bash
setenforce 0 &&
iptables -I INPUT -p tcp --dport 9090 -j ACCEPT &&
iptables-save &&
yum -y install wget > /dev/null &&
mkdir -p /data/apps &&
cd /data/apps &&
echo "下载压缩包中..." &&
wget https://githubfast.com/prometheus/prometheus/releases/download/v2.37.2/prometheus-2.37.2.linux-amd64.tar.gz > /dev/null &&
echo "下载完成" &&
echo "解压中..." &&
tar -zxvf prometheus-2.37.2.linux-amd64.tar.gz -C /usr/local > /dev/null &&
echo "解压完成" &&
cd /usr/local &&
ln -s prometheus-2.37.2.linux-amd64 prometheus &&
cd /usr/local/prometheus &&
./prometheus --version &&
echo "[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=root
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target" | tee -i /usr/lib/systemd/system/prometheus.service > /dev/null &&
systemctl enable prometheus > /dev/null &&
systemctl start prometheus > /dev/null &&
systemctl status prometheus
vi node-exporter.sh
#!/bin/bash
setenforce 0 &&
iptables -I INPUT -p tcp --dport 9100 -j ACCEPT &&
iptables-save > /dev/null &&
mkdir -p /data/apps > /dev/null &&
cd /data/apps &&
wget https://githubfast.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz > /dev/null &&
echo "下载node-exporters压缩包完成" &&
tar -zxvf node_exporter-1.4.0.linux-amd64.tar.gz -C /usr/local > /dev/null &&
cd /usr/local &&
ln -s node_exporter-1.4.0.linux-amd64 node_exporter &&
echo "[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target" | tee -i /usr/lib/systemd/system/node_exporter.service > /dev/null &&
systemctl enable node_exporter &&
systemctl start node_exporter &&
systemctl status node_exporter
vi node_join.sh
#!/bin/bash
#对应被监控的node名称
NODENAME=$1
#对应被监控的IP地址
IPADDRESS=$2
echo "
- job_name: "$NODENAME"
static_configs:
- targets: ["$IPADDRESS:9100"]
" | tee -a /usr/local/prometheus/prometheus.yml > /dev/null &&
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml &&
curl -X POST http://127.0.0.1:9090/-/reload
## auto_start.sh文件执行auto_prometheus_node_exporter_1.sh及auto_prometheus_node_exporter_2.sh文件
vi auto_start.sh
#!/bin/bash
IPADDRESS1="$1"
IPADDRESS2="$2"
NODENAME="$3"
sh auto_prometheus_node_exporter_1.sh ${IPADDRESS1} ${IPADDRESS2} && sh auto_prometheus_node_exporter_2.sh ${NODENAME} ${IPADDRESS2}
(2)执行auto_start.sh文件。
sh auto_start.sh PROMTHEUS_IPADDRESS NODE_EXPORTER_IPADDRESS NODE_EXPORTER_NAME