Docker의 바퀴벌레 데이터베이스 클러스터 모니터링, 경고 및 개체 저장 액세스

개요


내 글에서, 우리는 Docker에 여러 지역의 바퀴벌레 데이터베이스 집단을 로컬로 배치하는 방법을 토론했다.
모니터링 및 경고를 위한 도구를 포함하여 이 설정을 확장하고 S3에 대한 액세스를 시뮬레이션할 수 있습니다.
따라서 CockroachDB 집단을 계속 만들면 시작할 수 있습니다!

MinIO 또는 S3Mock을 사용하여 S3 액세스 설정


9개의 노드 클러스터가 시작되고 실행되면 첫 번째 서비스인 S3를 추가할 수 있습니다.다음은 S3와 호환되는 두 서비스에 대한 설명입니다. MinIO와 S3Mock입니다.
둘 중 하나를 설정합니다.

Adobe S3Mock


Adobe S3Mock는 매우 간단한 S3 호환 서비스로 일부 조명 테스트에 사용된다.
S3Mock 시작
# start s3mock with bucket 'cockroach'
docker run --name s3mock --rm -d \
  -p 19090:9090 \
  -p 19191:9191 \
  -v s3mock-data:/s3mock \
  -e initialBuckets=cockroach \
  -e root=/s3mock \
  adobe/s3mock

# attach s3mock to networks
docker network connect us-west2-net s3mock
docker network connect us-east4-net s3mock
docker network connect eu-west2-net s3mock
예를 들어, 이 컨테이너를 백업에 사용할 수 있습니다.이것이 바로 당신이 하는 방식입니다. 단점 URL을 주의하세요
BACKUP TO 's3://cockroach/backups?AWS_ENDPOINT=http://s3mock:9090&AWS_ACCESS_KEY_ID=id&AWS_SECRET_ACCESS_KEY=key'
  AS OF SYSTEM TIME '-10s';
호스트에서 S3Mock 컨테이너/서버에 업로드하려면 패키지가 설치되어 있는지 확인하십시오awscli
$ aws s3 cp myfile.txt s3://cockroach/ --endpoint-url "http://localhost:19090" --no-sign-request
upload: ./myfile.txt to s3://cockroach/myfile.txt
컨테이너가 충돌하거나 중지되면 걱정하지 마십시오. 데이터는 Docker 볼륨s3mock-data에 저장됩니다.

전체 클러스터 백업 미니


는 S3와 호환되는 대상 저장 서비스로 개인 클라우드 배치에서 매우 유행한다.
MinIO를 시작하고 MinIO UIMinIO로 이동합니다.기본 액세스 키 및 키는 minioadmin 입니다.
# start minio with name 'minio'
docker run --name minio --rm -d \
  -p 9000:9000 \
  -v minio-data:/data \
  minio/minio server /data  

# connect minio to network bridges
docker network connect us-west2-net minio
docker network connect us-east4-net minio
docker network connect eu-west2-net minio
UI에서 bucketcockroach을 만들고 MinIO 서버에 대한 백업 작업을 수행합니다.끝 URL 및 사용 키 주의
BACKUP TO 's3://cockroach/backups?AWS_ENDPOINT=http://minio:9000&AWS_ACCESS_KEY_ID=minioadmin&AWS_SECRET_ACCESS_KEY=minioadmin'
  AS OF SYSTEM TIME '-10s';
좋습니다. 백업 파일은 MinIO에 안전하게 저장됩니다!
http://localhost:9000
호스트에서 MinIO로 파일을 업로드하려면 자격 증명이 필요합니다.
# export the credentials
$ export AWS_ACCESS_KEY_ID=minioadmin
$ export AWS_SECRET_ACCESS_KEY=minioadmin

$ aws s3 cp myfile.txt s3://cockroach/ --endpoint-url "http://localhost:9000"
upload: ./myfile.txt to s3://cockroach/myfile.txt
마찬가지로 데이터는 Docker 볼륨minio-data에 안전하게 저장됩니다.

모니터링 및 경고 설정


우리의 감시와 경보 창고는 Prometheus, Alert 관리자, Grafana 등 세 가지 구성 요소로 구성되어 있다.

프로메테우스


는 개원 시스템 모니터링과 경보 도구 패키지입니다.Prometheus를 사용하여 Cockroach AdminUI를 채우는 지표를 얻을 수 있으며 독립적인 모니터링 및 경고 시스템 설정에 사용할 수 있습니다.
프로메테우스는 다음을 알기 위해 프로파일이 필요합니다.
  • 모니터링할 호스트
  • 수집 지표
  • 경고 내용
  • 누구에게 알릴까
  • YAML 파일을 읽어 구성을 확인합니다.공식Prometheus에서 프로필에 대한 정보를 더 많이 읽으세요.
    다음 내용을 파일로 로컬로 저장합니다prometheus.yml.
    ---
    global:
      scrape_interval: 10s
      evaluation_interval: 10s
    
    rule_files:
      # what to alert for
      - /etc/prometheus/alerts.rules.yml
      # what metrics to collect
      - /etc/prometheus/aggregation.rules.yml
    
    # whom to alert
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
                - alertmgr:9093
    
    scrape_configs:
      - job_name: "cockroachdb"
        metrics_path: "/_status/vars"
        scheme: "http"
        tls_config:
          insecure_skip_verify: true
        static_configs:
          # what hosts to monitor
          - targets:
              - roach-seattle-1:8080
              - roach-seattle-2:8080
              - roach-seattle-3:8080
              - roach-newyork-1:8080
              - roach-newyork-2:8080
              - roach-newyork-3:8080
              - roach-london-1:8080
              - roach-london-2:8080
              - roach-london-3:8080
            labels:
              cluster: "crdb"
    
    다음과 같은 두 개의 정의된 파일이 필요합니다.
  • 지표
  • 경고
  • 우리는 바퀴벌레 실험실에서 이미 준비한 서류를 사용한다.
    # download the 2 files
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml
    
    # update alert 'InstanceDead' to report dead node after 1 minute, not 15
    # on OSX I am using gnu-sed: brew install gnu-sed; alias sed=gsed
    sed -i 's/15m/1m/g' alerts.rules.yml
    
    현재 디렉터리에 있는 이 세 개의 파일을 사용하여 용기를 시작합니다.
    # start prometheus with name 'prom'
    docker run --name prom --rm -d \
      -v `pwd`/prometheus.yml:/etc/prometheus/prometheus.yml \
      -v `pwd`/aggregation.rules.yml:/etc/prometheus/aggregation.rules.yml \
      -v `pwd`/alerts.rules.yml:/etc/prometheus/alerts.rules.yml \
      -p 9090:9090 \
      prom/prometheus
    
    # connect prom to network bridges
    docker network connect us-west2-net prom
    docker network connect us-east4-net prom
    docker network connect eu-west2-net prom
    
    브라우저에서 docs 프로메테우스 사용자 인터페이스를 클릭하고 어떤 지표를 눌러도 서비스가 정상적인지 확인합니다
    http://localhost:9090
    좋습니다. 서비스가 시작되었고 우리의 집단에서 지표를 정확하게 추출합니다!경보 섹션으로 이동하여 경보 InstanceDead가 1m 후에 트리거됨 확인

    잘했어, 경보 준비 다 됐어!

    Alertmanager


    Alertmanager도 프로메테우스 프로젝트의 제품입니다. 에 대한 상세한 정보를 보십시오.
    구성 파일prometheus.yml에서 경고 섹션에서는 호스트alertmgr:9093에 경고를 보내기로 구성했습니다.
    기본 프로필을 사용하여 Alertmanager를 시작합니다. 전자 메일을 보내거나 느슨한 메시지를 보내기 위해 Alertmanager를 설정하지 않습니다.
    # start alertmanger with name 'alertmgr'
    docker run --name alertmgr --rm -d -p:9093:9093 quay.io/prometheus/alertmanager:latest
    
    # connect alertmgr to network bridge
    docker network connect us-east4-net alertmgr
    
    here에서 AlertManager UI 열기
    경보가 AlertManager에 울리는 것을 보려면 노드를 잠시 중지하십시오.약 1분만 있다가 다시 꺼내면
    docker stop roach-london-3 && sleep 70 && docker start roach-london-3
    
    실행할 때, 프로메테우스가 InstanceDead 경보를 울렸는지, 그리고 Alertmanger가 이 경보를 받았는지 확인합니다.
    http://localhost:9093
    좋아, 프로메테우스가 경보를 울리고 Alert Manager가 적극적으로 방송했어!

    그라파나


    우리 창고의 마지막 부분은 , 매우 유행하는 가시화 도구이다.우리는 Prometheus가 아니라 Grafana의 대시보드를 사용하는 것을 더 좋아하지만, 원한다면 Prometheus나 CockroachDB를 사용하여 UI 도표를 관리할 수 있습니다.
    바퀴벌레 실험실 사전제작 다운로드 Grafana
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/changefeeds.json
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/distributed.json
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/hardware.json
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/overview.json
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/queues.json
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/replication.json
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/runtime.json  
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/slow_request.json
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/sql.json
    wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/storage.json
    
    이제 Grafana를 시작해보도록 하겠습니다.
    # start grafana
    docker run --name grafana --rm -d \
      -v grafana-data:/var/lib/grafana \
      -p 3000:3000 \
      grafana/grafana
    
    # connect grafana to network bridge
    docker network connect us-east4-net grafana
    
    Grafana dashboards에서 Grafana UI를 열려면 로그인을 생성한 다음 다음 다음 두 단계를 수행해야 합니다.

  • 구성 > 데이터 소스 > 데이터 소스 추가 로 이동하여 프로메테우스를 선택합니다.프로메테우스 서버http://localhost:3000
    http://prom:9090
    저장 및 테스트 를 클릭합니다.

  • +> 이전에 다운로드한 모든 대시보드 json 파일을 가져오고 가져옵니다.

  • 준비 다 됐어!워크로드를 실행하고 대시보드에서 차트 업데이트 보기

    모든 대시보드와 설정을 Docker Volumegrafana-data에 저장했기 때문에 컨테이너를 다시 삽입할 때마다 다시 가져올 필요가 없습니다.

    정리하다


    블로그 게시물의 설명에 따라 바퀴벌레 집단을 멈추다.
    용기를 멈추어라, 일단 멈추면, 그것들은 스스로 파괴될 것이다
    docker stop s3mock minio prom alertmgr grafana
    
    볼륨 삭제
    docker volume rm s3mock-data minio-data grafana-data
    

    참고



    CockroachDB
    CockroachDB Monitoring Docs
    CockroachDB Backup & Restore
    Adobe S3Mock
    MinIO
    Prometheus
    Prometheus AlertManager
    Grafana

    좋은 웹페이지 즐겨찾기