Grafana監控主機性能以及數據可視化


Grafana 是大規模指標數據可視化展現的開源工具,廣泛應用於監控報警、數據分析。它可以支持多種數據源,包括 Graphite,Elasticsearch,CloudWatch,InfluxDB,OpenTSDB,Prometheus,MySQL,Postgres,Microsoft SQL Server (MSSQL)。

本次實驗所用到的服務:

使用服務及端口
服務 端口 說明
MySQL 3306 數據庫
MySQL-exporter 9104 用於監控MySQL的服務,作用為取MySQL的狀態
Grafana可視化監控 3000 基於zabbix的監控工具,用於監控報警、數據分析,本次實驗用於監控MySQL和主機狀態作為前端顯示
Prometheus監控 9090 通過普羅米修斯來監控主機狀態,CPU、swap空間、內存、線程數等
node_exporter 9100 用於監控linux主機的狀態,通過此服務推送狀態給普羅米修斯

主機基礎監控效果圖:

 

 

 

MySQL狀態效果圖:

 安裝配置:

由於使用的是雲主機,基本帶寬比較小,所以使用docker搭建相關服務

docker安裝zabbix-mysql

docker pull zabbix/zabbix-server-mysql
docker run --name zabbix-server-mysql -e DB_SERVER_HOST="localhost" -e MYSQL_USER="root" -e MYSQL_PASSWORD="123456" -d zabbix/zabbix-server-mysql

查看zabbix啟動日志

docker logs -f zabbix-server-service

安裝zabbix自己的數據庫,由於需要監控主機的MySQL所有的業務,所以選用開其他端口

docker run -dit -p 3307:3306 --name zabbix-mysql --restart always -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123" -e MYSQL_ROOT_PASSWORD="123" mysql

安裝zabbix相關插件以及服務

docker run -dit -p 10051:10051 --name=zabbix-server-mysql --restart=always -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123" -e MYSQL_ROOT_PASSWORD="123456" -e  zabbix/zabbix-server-mysql

docker run -p 80:80 --name zabbix-web-nginx-mysql --restart=always -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123" -e MYSQL_ROOT_PASSWORD="123456" -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql

docker下拉其他鏡像,ps 命令:docker pull grafana/grafana

REPOSITORY                                TAG                 CREATED           SIZE
docker.io/grafana/grafana                 latest              5 days ago        202 MB
docker.io/prom/prometheus                 latest              6 days ago        185 MB
docker.io/zabbix/zabbix-web-nginx-mysql   latest              6 days ago        165 MB
docker.io/zabbix/zabbix-server-mysql      centos-latest       6 days ago        356 MB
docker.io/zabbix/zabbix-server-mysql      latest              6 days ago        68.1 MB
docker.io/zabbix/zabbix-java-gateway      latest              6 days ago        83.8 MB
docker.io/mariadb                         latest              11 days ago       405 MB
docker.io/mysql                           5.7                 12 days ago       447 MB
docker.io/mysql                           latest              12 days ago       556 MB
docker.io/prom/node-exporter              latest              2 months ago      26 MB
docker.io/prom/mysqld-exporter            latest              22 months ago     17.5 MB

啟動Grafana

docker run  -d --name grafana -p 3000:3000   -v /data/grafana:/var/lib/grafana  grafana/grafana

啟動Prome / Prometheus 

docker run  -d   -p 9090:9090   -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml    prom/prometheus

其中兩個配置文件內容如下

[root@Huawei ~/ansible]# cat /opt/prometheus/prometheus.yml 
global:
  scrape_interval:     60s
  evaluation_interval: 60s
 
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus
 
  - job_name: linux
    static_configs:
      - targets: ['localhost:9100']
        labels:
          instance: localhost
          
  - job_name: mysql_local
    static_configs:
      - targets: ['localhost:9104']
        labels:
          instance: localhost      
[root@Huawei ~/ansible]# cat /etc/prometheus/prometheus.yml 
global:
  scrape_interval:     15s 
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9100']
  - job_name: 'mysql_localhost'
    static_configs:
    - targets: ['localhost:9104']

啟動監控linux的node節點,用以監控linux狀態

  docker run -d -p 9100:9100 \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  prom/node-exporter

查看Linux狀態是否可以通

[root@Huawei ~]# curl http://localhost:9100/metrics
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 53542    0 53542    0     0  3541k      0 --:--:-- --:--:-- --:--:-- 3734k
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 6.083e-06
go_gc_duration_seconds{quantile="0.25"} 7.459e-06
···········
promhttp_metric_handler_requests_total{code="200"} 1411
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

啟動linux-mysql的node節點,用於監控主機mysql狀態

docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="grafana:123@(localhost:3306)/mysql" prom/mysqld-exporter

防火牆開放端口

 firewall-cmd --add-port=9090/tcp --permanent
 firewall-cmd --add-port=9100/tcp --permanent
 firewall-cmd --add-port=9104/tcp --permanent

查看當前的端口狀態,這里實驗沒有開啟zabbix

[root@Huawei ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      10748/mysqld        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      954/sshd            
tcp6       0      0 :::9090                 :::*                    LISTEN      2370/docker-proxy-c 
tcp6       0      0 :::9100                 :::*                    LISTEN      24049/node_exporter 
tcp6       0      0 :::9104                 :::*                    LISTEN      32604/docker-proxy- 
tcp6       0      0 :::3000                 :::*                    LISTEN      10085/docker-proxy- 

檢查當前MySQL接口是否可以通

curl http://localhost:9104/metrics
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 9.832e-06
go_gc_duration_seconds{quantile="0.25"} 1.092e-05
go_gc_duration_seconds{quantile="0.5"} 1.1677e-05
go_gc_duration_seconds{quantile="0.75"} 1.227e-05

·············
promhttp_metric_handler_requests_total{code="200"} 1047
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

由此可見,當前linux狀態和MySQL狀態都是可以通的

當前查看Prometheus狀態

http://localhost:9090/targets

 

 隨機測試主機狀態,查看Prometheus是否可以繪圖

 

 由此可見,我們的服務均已部署成功,接下來登錄Grafana進行配置

 

 

 

 測試是否已完成,數據庫連接成功

 

 這里開始添加監控

 

 上傳做好的視圖json文件

 

 MySQL狀態成功顯示

 

 這里推薦Prometheus的UID  8919

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM