目錄
node
[root@docker36 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrprometheus:1.0 1.0: Pulling from lhrbest/lhrprometheus c1e1cb5fc6d2: Already exists d7889870c229: Pull complete Digest: sha256:6d2aea56026f4fdb17554b5ad0842766cb8e99a492382b6553ab330d0eb19c4b Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrprometheus:1.0 registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrprometheus:1.0 [root@docker36 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrprometheus:1.0 lhrbest/lhrprometheus:1.0
[root@docker36 ~]# ip addr | grep 66 inet 192.168.66.36/24 brd 192.168.66.255 scope global edge0 [root@docker36 ~]# docker run -d --name lhrprometheus01 -h lhrprometheus01 \ > -p 2222:22 -p 23389:3389 -p 29090:9090 -p 29093:9093 -p 23000:3000 \ > --privileged=true lhrbest/lhrprometheus:1.0 \ > /usr/sbin/init fed3d3ea7275ec337e305a76d5694473a2637be4c71d22e46e669a5ec3b39e57 [root@docker36 ~]# docker exec -it lhrprometheus01 bash [root@lhrprometheus01 /]#
其中,9090是Prometheus的端口,3000是grafana的端口,3389是Linux遠程桌面的端口。mysql
在本文中,須要注意如下內容:linux
一、在該鏡像中,已安裝了prometheus 2.23版本,grafana 7.3.6版本,alertmanager 0.21版本,node_exporter 1.0.1版本,mysqld_exporter 0.12.1版本,oracledb_exporter 0.2.9版本git
二、192.168.66.36是Prometheus和grafana的IP地址github
三、程序和默認端口對應關係web
端口 程序
9090 prometheus
3000 grafana
9093 alter_manager
9100 node_exporter
9104 mysqld_exporter
9121 redis_exporter
9161 oracledb_exporterredis
訪問普羅米修斯(Prometheus):http://192.168.66.36:29090/targetssql
訪問Grafana:http://192.168.66.36:23000 用戶名和密碼都是admindocker
默認的Linux系統監控能夠看到以下界面:數據庫
須要在被監控的主機上安裝node_exporter軟件,下載地址:https://prometheus.io/download/
最新版本爲:node_exporter-1.0.1.linux-amd64.tar.gz
或者直接將本機的/usr/local/bin/node_exporter文件拷貝到須要被監控的主機上也能夠。
假設我這裏須要被監控的主機爲:121.36.8.186,那麼在該主機上執行以下命令:
nohup /usr/local/bin/node_exporter &
檢查,node_exporter默認端口爲9100:
[root@ecs ~]# netstat -anp | grep 9100 tcp6 0 0 :::9100 :::* LISTEN 24995/node_exporter tcp6 0 0 10.0.0.134:9100 210.52.224.155:58598 ESTABLISHED 24995/node_exporter [root@ecs ~]# lsof -i:9100 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node_expo 24995 root 3u IPv6 8125597 0t0 TCP *:jetdirect (LISTEN) node_expo 24995 root 8u IPv6 8203663 0t0 TCP ecs:jetdirect->210.52.224.155:58598 (ESTABLISHED)
命令行直接訪問:
瀏覽器訪問http://121.36.8.186:9100/metrics ,返回:
修改prometheus的配置文件(/usr/local/prometheus/prometheus.yml),添加第6-8行:
- job_name: 'Linux' static_configs: - targets: ['localhost:9100'] labels: instance: Linux_prometheus_localhost - targets: ['121.36.8.186:9100'] labels: instance: Linux_121.36.8.186
經過命令熱加載:
curl -XPOST http://localhost:9090/-/reload
此時再刷新訪問:http://192.168.66.36:29090/targets
發現新主機已經被監控到了。此時再去grafana頁面查詢:
發現已經有數據了。
在須要被監控windows機器安裝wmi-exporter,下載節點監控程序並運行,默認端口9182,下載地址:https://github.com/martinlindhe/wmi_exporter
安裝完成後,默認安裝了service,軟件安裝路徑爲:C:\Program Files\windows_exporter\
瀏覽器訪問:http://192.168.66.236:9182/metrics,出現以下信息則,客戶端節點正常
修改prometheus的配置文件(/usr/local/prometheus/prometheus.yml),添加第1-3行:
- job_name: 'Windows' static_configs: - targets: ['192.168.66.236:9182']
經過命令熱加載:
curl -XPOST http://localhost:9090/-/reload
此時再刷新訪問:http://192.168.66.36:29090/targets
發現新主機已經被監控到了。此時再去grafana頁面查詢:
發現已經有數據了。
監控MySQL實例須要用到mysqld_exporter軟件,下載地址:https://prometheus.io/download/
監控MySQL實例能夠分爲2種部署方式:
一、分離部署+環境變量
這種方式是在每一個mysql服務器上跑一個exporter程序,好比10.10.20.14服務器上跑本身的mysqld_exporter,而登到10.10.20.15服務器上也啓動本身的mysqld_exporter,也就是分離部署,這樣的話每一個mysql服務器上除了mysqld進程外還會多一個mysqld_exporter的進程。部署方式(本文不使用這種方式):
export DATA_SOURCE_NAME='root:lhr@(192.168.66.35:3317)/' nohup mysqld_exporter 1>/dev/null 2>&1 &
二、集中部署+配置文件
若是咱們想要保持mysql服務器零***的純淨環境,這時候就能夠嘗試一下集中部署+配置文件的方式。集中部署,就是說咱們將全部的mysqld_exporter部署在同一臺服務器上,在這臺服務器上對mysqld_exporter進行統一的管理。
本文,咱們採用第2種方式部署。因此,直接在容器lhrprometheus01內進行配置:
mkdir -p /etc/mysqld_exporter/ cd /etc/mysqld_exporter/ cat > mysql573317.cnf << "EOF" [client] user=root password=lhr host=192.168.66.35 port=3317 EOF cat > mysql803318.cnf << "EOF" [client] user=root password=lhr host=192.168.66.35 port=3318 EOF unset DATA_SOURCE_NAME nohup mysqld_exporter --web.listen-address=localhost:9104 --config.my-cnf=/etc/mysqld_exporter/mysql573317.cnf 1>/dev/null 2>&1 & nohup mysqld_exporter --web.listen-address=localhost:9105 --config.my-cnf=/etc/mysqld_exporter/mysql803318.cnf 1>/dev/null 2>&1 & -- 校驗是否配置成功 curl http://localhost:9104/metrics curl http://localhost:9105/metrics
修改prometheus的配置文件(/usr/local/prometheus/prometheus.yml),添加第1-8行:
- job_name: 'MySQL' static_configs: - targets: ['localhost:9104'] labels: instance: MySQL_192.168.66.35:3317 - targets: ['localhost:9105'] labels: instance: MySQL_192.168.66.35:3318
經過命令熱加載:
curl -XPOST http://localhost:9090/-/reload
此時再刷新訪問:http://192.168.66.36:29090/targets
發現MySQL實例已經被監控到了。此時再去grafana頁面查詢:
發現已經有數據了。
監控Oracle數據庫,須要安裝oracle exporter,下載地址:https://github.com/iamseth/oracledb_exporter/releases
監控Oracle和MySQL同樣,能夠對原Oracle服務器零***,只需在Prometheus服務器上作配置便可,執行以下命令便可:
export DATA_SOURCE_NAME='lhr/lhr@192.168.66.35:1523/LHR11G' nohup oracledb_exporter -default.metrics /usr/local/oracledb_exporter/default-metrics.toml -web.listen-address 0.0.0.0:9161 &
注意:因爲9161端口沒有對外暴露,因此,須要進入Linux的遠程桌面訪問,打開mstsc
192.168.66.36是Prometheus所在的服務器,進入遠程桌面,用戶名爲root,密碼爲lhr,打開firefox瀏覽器便可訪問。瀏覽器訪問:http://localhost:9161/metrics,若出現以下信息,則說明客戶端節點正常。
修改prometheus的配置文件(/usr/local/prometheus/prometheus.yml),添加第1-5行:
- job_name: 'Oracle' static_configs: - targets: ['localhost:9161'] labels: instance: Oracle_192.168.66.35:1523
經過命令熱加載:
curl -XPOST http://localhost:9090/-/reload
此時再刷新訪問:http://192.168.66.36:29090/targets
發現新主機已經被監控到了。此時再去grafana頁面查詢:
發現已經有數據了。
本鏡像環境已經配置了MySQL和Linux服務器的郵件告警功能,能夠登陸http://192.168.66.36:29090/alerts查看,相關的規則詳情能夠參考:http://192.168.66.36:29090/rules
告警的默認收件人是lhrbest@qq.com,若想修改收件人地址,那麼能夠修改文件/usr/local/alertmanager/alertmanager.yml,將其中的lhrbest@qq.com修改爲本身的郵箱便可。在修改完成後,記得重啓alertmanager軟件,啓動命令以下:
pkill alertmanager nohup alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml &
關閉MySQL服務器:
C:\Users\lhrxxt>mysql -uroot -plhr -h192.168.66.35 -P3317 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1003 Server version: 5.7.30-log MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> shutdown ; Query OK, 0 rows affected (0.05 sec)
收到郵件:
首先關閉相關主機,等待收郵件:
如何?一番感覺下來,是否是很爽!!!
固然,Prometheus還能夠監控其它不少內容,例如SQL Server、PG、Redis、MongoDB、K8s、ES等,這裏再也不演示,若想學習更多內容請聯繫麥老師。