thanos2
#!/bin/bash
#容器安装
#相关端口
#Component Interface Port
#Sidecar gRPC 10901
#Sidecar HTTP 10902
#Query gRPC 10903
#Query HTTP 10904
#Store gRPC 10905
#Store HTTP 10906
#Receive gRPC (store API) 10907
#Receive HTTP (remote write API) 10908
#Receive HTTP 10909
#Rule gRPC 10910
#Rule HTTP 10911
#Compact HTTP 10912
#Query Frontend HTTP 10913
#node_exporter HTTP 9100
#prometheus HTTP 9090
###相关资源及环境准备准备###
#对象存储信息
bucket="thanos-test01"
endpoint="oss-cn-east-3.unicloudsrv.com"
access_key="CGIqDnNBTxotoWQn"
secret_key="DZpr1uM3Isrf39vHidchtkPEh2CSNW"
#创建工作目录
mkdir editor
cd /root/editor && CURR_DIR=$(pwd)
#获取主机名
HOSTNAME=$(hostname)
#获取IP
HOSTIP=`ip addr show eth0 |grep eth0|grep inet|awk -F '/' '{print $1}'|awk '{print $2}'`
#FTP站点,要求所有节点主机到该地址80端口可达。
FTPURL=http://10.90.28.251
#下载docker-ce
wget ${FTPURL}/docker-20.10.9.tgz
#下载容器镜像
wget ${FTPURL}/minio-RELEASE.2019-01-31T00-31-19Z.tar
wget ${FTPURL}/prometheus-v2.20.0.tar
wget ${FTPURL}/thanos-v0.24.0.tar
wget ${FTPURL}/thanosbench-v0.2.0-rc.1.tar
wget ${FTPURL}/node_exporter-1.3.1.linux-amd64.tar.gz
groupadd -r prometheus
useradd -s /sbin/nologin -r -g prometheus prometheus
###安装docker-ce###
#安装
tar zxf docker-20.10.9.tgz
\cp docker/* /usr/bin
chmod 755 /usr/bin/{containerd,containerd-shim,ctr,docker,dockerd,docker-init,docker-proxy,runc}
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl start docker && systemctl enable docker
###基础镜像导入###
docker load -i minio-RELEASE.2019-01-31T00-31-19Z.tar
docker load -i prometheus-v2.20.0.tar
docker load -i thanos-v0.24.0.tar
docker load -i thanosbench-v0.2.0-rc.1.tar
###node_exporter安装###
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz
\cp node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin
cat > /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl start node_exporter && systemctl enable --now node_exporter
###安装prometheus###
docker run -it --rm quay.io/thanos/thanosbench:v0.2.0-rc.1 block plan -p continuous-365d-tiny --max-time=6h > ${CURR_DIR}/block-spec.yaml
mkdir ${CURR_DIR}/${HOSTNAME} && docker run -it --rm quay.io/thanos/thanosbench:v0.2.0-rc.1 block plan -p continuous-365d-tiny --labels 'cluster="eu1"' --max-time=6h | docker run -v ${CURR_DIR}/${HOSTNAME}:/out -i quay.io/thanos/thanosbench:v0.2.0-rc.1 block gen --output.dir /out
cat > ${CURR_DIR}/${HOSTNAME}-config.yaml <<-EOF
global:
scrape_interval: 5s
external_labels:
cluster: test
replica: 0
tenant: team-eu # Not needed, but a good practice if you want to grow this to multi-tenant system some day.
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ["${HOSTIP}:9091","${HOSTIP}:9092"]
- job_name: "node"
static_configs:
- targets: ["${HOSTIP}:9100"]
EOF
PROMETHEUS_PORT=9090 && PROMETHEUS_ADDRESS=http://${HOSTIP}:${PROMETHEUS_PORT}
docker run -d --net=host \
-v ${CURR_DIR}/${HOSTNAME}-config.yaml:/etc/prometheus/prometheus.yml \
-v ${CURR_DIR}${HOSTNAME}:/prometheus \
-u root \
--name ${HOSTNAME}-prometheus \
quay.io/prometheus/prometheus:v2.20.0 \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus \
--storage.tsdb.retention.time=1000d \
--storage.tsdb.max-block-duration=2h \
--storage.tsdb.min-block-duration=2h \
--web.listen-address=:${PROMETHEUS_PORT} \
--web.external-url=${PROMETHEUS_ADDRESS} \
--web.enable-lifecycle \
--web.enable-admin-api
###安装sidecar###
docker run -d --net=host --rm \
-v ${CURR_DIR}/${HOSTNAME}-config.yaml:/etc/prometheus/prometheus.yml \
--name ${HOSTNAME}-sidecar \
-u root \
quay.io/thanos/thanos:v0.24.0 \
sidecar \
--http-address 0.0.0.0:19092 \
--grpc-address 0.0.0.0:19091 \
--reloader.config-file /etc/prometheus/prometheus.yml \
--prometheus.url "http://127.0.0.1:${PROMETHEUS_PORT}"
###安装minio###
mkdir ${CURR_DIR}/minio && \
docker run -d --name minio \
-v ${CURR_DIR}/minio:/data \
-p 9000:9000 -e "MINIO_ACCESS_KEY=rawkode" -e "MINIO_SECRET_KEY=rawkodeloveobs" \
minio/minio:RELEASE.2019-01-31T00-31-19Z \
server /data
mkdir ${CURR_DIR}/minio/thanos
cat > ${CURR_DIR}/minio-bucket.yaml <<-EOF
type: S3
config:
bucket: ${bucket}
endpoint: ${endpoint}
access_key: ${access_key}
secret_key: ${secret_key}
insecure: true
EOF
###重置sidecar###
docker stop ${HOSTNAME}-sidecar
docker run -d --net=host \
-v ${CURR_DIR}/${HOSTNAME}-config.yaml:/etc/prometheus/prometheus.yml \
-v ${CURR_DIR}/minio-bucket.yaml:/etc/thanos/minio-bucket.yaml \
-v ${CURR_DIR}/${HOSTNAME}:/prometheus \
--name ${HOSTNAME}-sidecar \
-u root \
quay.io/thanos/thanos:v0.24.0 \
sidecar \
--tsdb.path /prometheus \
--objstore.config-file /etc/thanos/minio-bucket.yaml \
--shipper.upload-compacted \
--http-address 0.0.0.0:19092 \
--grpc-address 0.0.0.0:19091 \
--reloader.config-file /etc/prometheus/prometheus.yml \
--prometheus.url "http://127.0.0.1:${PROMETHEUS_PORT}"
###安store装###
docker run -d --net=host \
-v ${CURR_DIR}/minio-bucket.yaml:/etc/thanos/minio-bucket.yaml \
--name store-gateway \
quay.io/thanos/thanos:v0.24.0 \
store \
--objstore.config-file /etc/thanos/minio-bucket.yaml \
--http-address 0.0.0.0:19096 \
--grpc-address 0.0.0.0:19095
#以上脚本为节点脚本
#------------------------------------------------------------------------------------------------------------------------------------------#
#以下脚本只需在管理节点运行
###管理节点新增监控主机需要将store和sidecar的grpc-address地址添加到--store参数后,并重新执行以下命令生成新的querier容器即可。
###querier的--http-address参数指定的store的查询地址,可以查询所有已配置prometheus-store的数据,在grafana配置中也是配置此地址
###安装query###
docker run -d --net=host --rm \
--name querier \
quay.io/thanos/thanos:v0.24.0 \
query \
--http-address 0.0.0.0:9999 \
--grpc-address 0.0.0.0:19999 \
--query.replica-label replica \
--store 127.0.0.1:19095 \
--store 127.0.0.1:19091 \
--store 10.90.29.159:19095 \
--store 10.90.29.159:19091 \
--store 10.90.29.238:19095 \
--store 10.90.29.238:19091 \
--store 10.90.29.17:19095 \
--store 10.90.29.17:19091
###安装compactor###
docker run -d --net=host \
-v ${CURR_DIR}/minio-bucket.yaml:/etc/thanos/minio-bucket.yaml \
--name compactor \
quay.io/thanos/thanos:v0.24.0 \
compact \
--wait --wait-interval 30s \
--consistency-delay 0s \
--objstore.config-file /etc/thanos/minio-bucket.yaml \
--http-address 0.0.0.0:10912

浙公网安备 33010602011771号