Skip to content

Instantly share code, notes, and snippets.

@Kartik-Garg
Created January 17, 2023 12:38
Show Gist options
  • Select an option

  • Save Kartik-Garg/b4fbdfe37023f5db5dda6b9318a310af to your computer and use it in GitHub Desktop.

Select an option

Save Kartik-Garg/b4fbdfe37023f5db5dda6b9318a310af to your computer and use it in GitHub Desktop.

Revisions

  1. Kartik-Garg created this gist Jan 17, 2023.
    127 changes: 127 additions & 0 deletions quickstart.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,127 @@
    #!/usr/bin/env bash
    #
    # Starts three Prometheus servers scraping themselves and sidecars for each.
    # Two query nodes are started and all are clustered together.

    trap 'kill 0' SIGTERM

    MINIO_ENABLED=${MINIO_ENABLED:-""}
    MINIO_EXECUTABLE=${MINIO_EXECUTABLE:-"minio"}
    MC_EXECUTABLE=${MC_EXECUTABLE:-"mc"}
    PROMETHEUS_EXECUTABLE=${PROMETHEUS_EXECUTABLE:-"/home/kartik/Documents/prometheus-2.41.0.linux-amd64/prometheus"}
    THANOS_EXECUTABLE=${THANOS_EXECUTABLE:-"/home/kartik/go/bin/thanos"}
    S3_ENDPOINT=""

    export MINIO_ACCESS_KEY="THANOS"
    export MINIO_SECRET_KEY="ITSTHANOSTIME"
    export MINIO_ENDPOINT="127.0.0.1:9000"
    export MINIO_BUCKET="thanos"
    export S3_ACCESS_KEY=${MINIO_ACCESS_KEY}
    export S3_SECRET_KEY=${MINIO_SECRET_KEY}
    export S3_BUCKET=${MINIO_BUCKET}
    export S3_ENDPOINT=${MINIO_ENDPOINT}
    export S3_INSECURE="true"
    export S3_V2_SIGNATURE="true"

    mkdir -p data/minio

    ${MINIO_EXECUTABLE} server ./data/minio \
    --address ${MINIO_ENDPOINT} &
    # sleep 3
    # create the bucket
    ${MC_EXECUTABLE} config host add tmp http://${MINIO_ENDPOINT} ${MINIO_ACCESS_KEY} ${MINIO_SECRET_KEY}
    ${MC_EXECUTABLE} mb tmp/${MINIO_BUCKET}
    ${MC_EXECUTABLE} config host rm tmp

    # bucket config
    cat <<EOF >data/bucket.yml
    type: S3
    config:
    bucket: $S3_BUCKET
    endpoint: $S3_ENDPOINT
    insecure: $S3_INSECURE
    signature_version2: $S3_V2_SIGNATURE
    access_key: $S3_ACCESS_KEY
    secret_key: $S3_SECRET_KEY
    EOF

    # Rules
    cat >data/rules.yml <<-EOF
    groups:
    - name: example
    rules:
    - record: job:go_threads:sum
    expr: sum(go_threads) by (job)
    EOF

    rm -rf data/prom0
    mkdir -p data/prom0/

    cat >data/prom0/prometheus.yml <<-EOF
    global:
    external_labels:
    prometheus: prom-0
    rule_files:
    - 'rules.yml'
    scrape_configs:
    - job_name: prometheus
    scrape_interval: 5s
    static_configs:
    - targets:
    - "localhost:9090"
    - "localhost:59090"
    - "localhost:59090"
    - "localhost:59090"
    - job_name: thanos-sidecar
    scrape_interval: 5s
    static_configs:
    - targets:
    - "localhost:10902"
    - job_name: thanos-store
    scrape_interval: 5s
    static_configs:
    - targets:
    - "localhost:10906"
    - job_name: thanos-receive
    scrape_interval: 5s
    static_configs:
    - targets:
    - "localhost:10909"
    - "localhost:11909"
    - "localhost:12909"
    - job_name: thanos-query
    scrape_interval: 5s
    static_configs:
    - targets:
    - "localhost:10904"
    - "localhost:10914"
    EOF

    cp data/rules.yml data/prom0/rules.yml

    ${PROMETHEUS_EXECUTABLE} \
    --config.file data/prom0/prometheus.yml \
    --storage.tsdb.path data/prom0 \
    --log.level warn \
    --web.enable-lifecycle \
    --storage.tsdb.min-block-duration=2h \
    --storage.tsdb.max-block-duration=2h \
    --web.listen-address 0.0.0.0:9090 &

    OBJSTORECFG=""
    if [ -n "${MINIO_ENABLED}" ]; then
    OBJSTORECFG="--objstore.config-file data/bucket.yml"
    fi

    ${THANOS_EXECUTABLE} store \
    --debug.name store-name \
    --log.level debug \
    --grpc-address 0.0.0.0:10905 \
    --grpc-grace-period 1s \
    --http-address 0.0.0.0:10906 \
    --http-grace-period 1s \
    --data-dir data/store \
    --objstore.config-file "data/bucket.yml" \
    ${OBJSTORECFG} &

    wait