Prometheus 와 Grafana 를 이용 하여 Mysql 서버 의 성능 모니터링 에 대한 상세 한 설명

개술
4.567915.HTTP 프로 토 콜 을 통 해 원 격 기계 에서 데 이 터 를 수집 하고 로 컬 순차 데이터 베이스 에 저장 하 는 오픈 소스 서비스 모니터링 시스템 이다.그것 은 간단 한 웹 인터페이스,강력 한 검색 언어,HTTP 인터페이스 등 을 제공 했다.Prometheus 는 원 격 기기 에 설 치 된 exporter 를 통 해 모니터링 데 이 터 를 수집 합 니 다.여 기 는 다음 과 같은 두 개의 exporter 를 사 용 했 습 니 다.
  • node_exporter C 는 기계 시스템 데이터 에 사 용 됩 니 다
  • mysqld_exporter C 는 Mysql 서버 데이터 에 사 용 됩 니 다.
  • 4.567915.오픈 소스 의 기능 이 풍부 한 데이터 시각 화 플랫폼 으로 보통 순차 데이터 의 시각 화 에 사용 된다.다음 데이터 원본 지원 이 내장 되 어 있 습 니 다.

    플러그 인 을 통 해 지원 하 는 데이터 원본 을 확장 할 수 있 습 니 다.
    구조 도
    다음은 이번 배치 의 구성 도 입 니 다.

    Prometheus 설치 및 실행
    1.Monitor 에 Prometheus 설치
    /opt/prometheus 에 설치
    
    $ wget https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5.2.linux-amd64.tar.gz
    $ tar zxvf prometheus-1.5.2.linux-amd64.tar.gz
    $ mv prometheus-1.5.2.linux-amd64 /opt/prometheus
    2.설치 항목 에서 프로필 prometheus.yml 편집
    
    vim /opt/prometheus/prometheus.yml
    
    # my global config
    global:
     scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
     evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
     # scrape_timeout is set to the global default (10s).
     # Attach these labels to any time series or alerts when communicating with
     # external systems (federation, remote storage, Alertmanager).
     external_labels:
     monitor: 'codelab-monitor'
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
     # - "first.rules"
     # - "second.rules"
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
     # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
     - job_name: 'prometheus'
     # metrics_path defaults to '/metrics'
     # scheme defaults to 'http'.
     static_configs:
     - targets: ['localhost:9090']
     #         
     - job_name: linux
     static_configs:
     - targets: ['172.30.251.214:9100']
     labels:
     instance: db1
     - job_name: mysql
     static_configs:
     - targets: ['172.30.251.214:9104']
     labels:
     instance: db1
    그 중에서 172.3.0251.214 는 MySQL 의 IP 이 고 포트 는 해당 하 는 exporter 의 감청 포트 입 니 다.
    3.Prometheus 시작
    
    [loya@centos6 prometheus]$ ./prometheus
    INFO[0000] Starting prometheus (version=1.5.2, branch=master, revision=bd1182d29f462c39544f94cc822830e1c64cf55b) source=main.go:75
    INFO[0000] Build context (go=go1.7.5, user=root@a8af9200f95d, date=20170210-14:41:22) source=main.go:76
    INFO[0000] Loading configuration file prometheus.yml source=main.go:248
    INFO[0000] Loading series map and head chunks... source=storage.go:373
    INFO[0000] 0 series loaded. source=storage.go:378
    INFO[0000] Starting target manager... source=targetmanager.go:61
    INFO[0000] Listening on :9090 source=web.go:259
    Prometheus 에 웹 인터페이스 가 내장 되 어 있 습 니 다.http://monitor_host:9090 방문:

    Status->Targets 페이지 에서 우리 가 설정 한 두 개의 Target 을 볼 수 있 습 니 다.그들의 State 는 DOWN 입 니 다.

    4.다음 감시 장치 에 exporter 를 설치 하고 실행 해 야 합 니 다.
    exporters 를 다운로드 하고 압축 풀기:
    
    $ mkdir /opt/prometheus/prometheus_exporters
    $ cd /opt/prometheus/prometheus_exporters
    $ wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0-rc.1/node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
    $ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.9.0/mysqld_exporter-0.9.0.linux-amd64.tar.gz
    $ tar zxvf node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
    $ tar zxvf mysqld_exporter-0.9.0.linux-amd64.tar.gz
    #             /opt/prometheus/prometheus_exporters
    $ ll /opt/prometheus/prometheus_exporters
    total 24464
    -rwxr-xr-x 1 root root 12182376 Feb 23 19:01 mysqld_exporter
    -rwxr-xr-x 1 root root 12862209 Feb 23 19:01 node_exporter
    node 실행exporter
    
    $ cd /opt/prometheus/prometheus_exporters
    $ ./node_exporter 
    INFO[0000] Starting node_exporter (version=0.14.0-rc.1, branch=master, revision=5a07f4173d97fa0dd307db5bd3c2e6da26a4b16e) source="node_exporter.go:136"
    INFO[0000] Build context (go=go1.7.4, user=root@ed143c8f2fcd, date=20170116-16:00:03) source="node_exporter.go:137"
    INFO[0000] No directory specified, see --collector.textfile.directory source="textfile.go:57"
    INFO[0000] Enabled collectors: source="node_exporter.go:156"
    INFO[0000] - entropy source="node_exporter.go:158"
    INFO[0000] - loadavg source="node_exporter.go:158"
    INFO[0000] - stat source="node_exporter.go:158"
    INFO[0000] - diskstats source="node_exporter.go:158"
    INFO[0000] - textfile source="node_exporter.go:158"
    INFO[0000] - vmstat source="node_exporter.go:158"
    INFO[0000] - meminfo source="node_exporter.go:158"
    INFO[0000] - filefd source="node_exporter.go:158"
    INFO[0000] - filesystem source="node_exporter.go:158"
    INFO[0000] - mdadm source="node_exporter.go:158"
    INFO[0000] - netdev source="node_exporter.go:158"
    INFO[0000] - sockstat source="node_exporter.go:158"
    INFO[0000] - time source="node_exporter.go:158"
    INFO[0000] - zfs source="node_exporter.go:158"
    INFO[0000] - edac source="node_exporter.go:158"
    INFO[0000] - hwmon source="node_exporter.go:158"
    INFO[0000] - netstat source="node_exporter.go:158"
    INFO[0000] - uname source="node_exporter.go:158"
    INFO[0000] - conntrack source="node_exporter.go:158"
    INFO[0000] Listening on :9100 source="node_exporter.go:176"
    mysqld_exporter 는 MySQL 에 연결 해 야 하기 때문에 MySQL 권한 이 필요 합 니 다.사용 자 를 만 들 고 필요 한 권한 을 부여 합 니 다.
    
    mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'prom'@'localhost' identified by 'abc123';
    mysql> GRANT SELECT ON performance_schema.* TO 'prom'@'localhost';
    my.my.cnf 파일 을 만 들 고 my sqld 를 실행 합 니 다.exporter:
    
    $ cd /opt/prometheus/prometheus_exporters
    $
    $ cat << EOF > .my.cnf
    [client]
    user=prom
    password=abc123
    EOF
    $
    $ ./mysqld_exporter -config.my-cnf=".my.cnf"
    INFO[0000] Starting mysqld_exporter (version=0.9.0, branch=master, revision=8400af20ccdbf6b5e0faa2c925c56c48cd78d70b) source=mysqld_exporter.go:432
    INFO[0000] Build context (go=go1.6.3, user=root@2c131c66ca20, date=20160926-18:28:09) source=mysqld_exporter.go:433
    INFO[0000] Listening on :9104 source=mysqld_exporter.go:451
    Prometheus 웹 인터페이스 Status->Targets 로 돌아 가면 두 개의 Target 상태 가 UP 로 변 한 것 을 볼 수 있 습 니 다.

    Grafana 설치 및 실행
    설치:
    Grafana 의 설치Prometheus비교적 뚜렷 하 며 여 기 는 더 이상 군말 하지 않 습 니 다.
    설정:
    설정 파일/etc/grafana/grafana.ini 를 편집 하고 dashboards.json 단락 의 두 매개 변수의 값 을 수정 합 니 다.
    
    [dashboards.json]
    enabled = true
    path = /var/lib/grafana/dashboards
    Prometheus 대시 보드 가 져 오기:
    
    $ git clone https://github.com/percona/grafana-dashboards.git
    $ cp -r grafana-dashboards/dashboards /var/lib/grafana
    시작:
    
    $ /etc/init.d/grafana-server start
    통과 하 다.http://monitor_host:3000 Grafana 웹 인터페이스 방문(계 정/비밀 번 호 는 admin/admin)
    로그 인 후 Data Sources 페이지 를 통 해 데이터 원본 추가:

    그 다음 에 서로 다른 계기판(왼쪽 상단)과 시간 대(오른쪽 상단)를 선택 하여 도 표를 나 타 낼 수 있다.
    System Overview:

    MySQL Overview:

    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기