3-主機監控、應用監控

立勋發表於2024-05-10

3.主機監控、應用監控

二進位制安裝node_exporter

tar -zxvf node_exporter-xxx.tar.gz -C /usr/local
cd /usr/local
chown -R prometheus:prometheus node_exporter-xxx
ln -sv node_exporter-xxx node_exporter
cd /usr/local/node_exporter

啟動

./node_exporter

需要啟動時新增引數--web.listen-address=":9200”即可
更多方法可以使用./node_exporter -h檢視相關幫助資訊

http://127.0.0.1:9100/metrics

systemctl管理node_exporter

vim /usr/lib/systemd/system/node_exporter.service
[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

[Unit]
Description=node_exporter
After=network.target

systemctl start node_exporter
systemctl status node_exporter
systemctl enable node_exporter

node_exporter與prometheus整合

vim /usr/local/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s

alerting:
alertmanagers:

  • static_configs:
    • targets:

rule_files:
...

scrape_configs:

  • job_name: 'prometheus'
    static_configs:
    • targets: ['localhost:9090']
  • job_name: 'node_export'
    static_configs:
    • targets:
      • 192.168.1.2:9100
      • 192.168.1.3:9100
      • 192.168.1.4:9100

prometheus配置檔案配置項解釋

預設的配置檔案prometheus.yml
檔案中定義了4個YAML塊: global、 alerting、 rule_files和scrape_configs。

global塊
在Prometheus安裝後,官方會提供一個預設的prometheus.yml檔案,其中包含global的預設配置內容,主要有以下四個引數:
·scrape_interval,每次資料採集的時間間隔,預設為1秒。
·scrape_timeout,採集請求超時時間,預設為10秒。
·evaluation_interval,執行rules的頻率,預設為1秒。
·external_labels,與外部系統通訊時新增到任意時間序列或告警用的外部標籤。

alerting
用來設定Prometheus的警報規則

rule_files
用來指定包含記錄規則或警報規則的檔案列表

scrape_configs塊
scrape_configs主要用於配置被採集資料節點操作,每一個採集配置主要有以下幾個引數:
·job_name,全域性唯一名稱。
·scrape_interval,預設等於global內設定的引數值,設定後可以覆蓋global中的值。
·scrape_timeout,預設等於global內設定的引數值。
·metrics_path,從targets獲取metric的HTTP資源路徑,預設是/metrics。
·honor_labels,Prometheus如何處理標籤之間的衝突。若設定為"true",則透過保留標籤來解決標籤衝突進行資料值採集。若設定為"false",則透過重新命名來解決標籤衝突,以exported_格式採集資料值,例如exported_job形式,預設是"false"。
·scheme,用於請求的協議方式,預設是http。
·params,資料採集訪問時HTTP URL設定的請求引數。
·relabel_configs,採集資料重置標籤配置。
·metric_relabel_configs,metric重置標籤配置。
·sample_limit,對每個被已知樣本(sample)數量的每次採集進行限制,如果超過限制,該資料將被視為失敗。預設值為0,表示無限制。”

windows主機監控

1.下載並安裝 wmi_exporter-0.5.0-amd64.msi
2.與prometheus整合

  • job_name: 'wmi_exporter'
    scrape_interval: 10s
    static_configs:
    • targets: ['192.168.24.16:9182']

mysql資料庫監控

1.下載並安裝 mysqld_exporter-0.11.0.linux-amd64.tar.gz
tar -xvf mysqld_exporter-0.11.0.linux-amd64.tar.gz

2.建立MySQL授權使用者
·連線到MySQL伺服器,建立一個使用者,例如“mysqld_exporter”
·該使用者需要擁有PROCESS,SELECT,REPLICATION CLIENT授權
·為避免有些高負載MySQL伺服器過載,為使用者設定最大連線限制。

可以進行如下操作:
CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'YourStrongPassword' WITH
MAX_USER_CONNECTIONS 2; #注意MySQL5.5版本時去掉MAX_USER_CONNECTIONS選項

GRANT PROCESS, REPLICATION CLIENT, SELECT ON . TO 'mysqld_exporter'@'localhost';

FLUSH PRIVILEGES;

核查使用者是否已經建立完成

select Host,User from mysql.user;

3.配置資料庫認證。
mysqld_exports需要連線資料庫伺服器的使用者名稱和密碼,這裡可以透過兩種方式向exporter提供此內容。
·使用環境變數。建立一個名為“DATA_SOURCE_NAME”的環境變數,格式如下:
export DATA_SOURCE_NAME='user:password@(hostname:3306)/”

·使用配置檔案。建立一個檔案“.mysqld_exporter.cnf”,並在該檔案中輸入使用者名稱和密碼。格式如下:
user=USER_CREATED_FOR_EXPORTER # 連線MySQL時使用的使用者名稱
password=YOUR_PASSWORD # 使用者密碼

在與“mysqld_exports”檔案同目錄下建立“.mysqld_exporter.cnf”檔案,並新增如下內容:

vi .mysqld_exporter.cnf

[client]
user=mysqld_exporter
password=YourStrongPassword

4.啟動mysqld_exporter。
./mysqld_exporter --config.my-cnf=".mysqld_exporter.cnf"
mysqld_exporter成功啟動後,預設監聽埠是9104
在輸出中,“Enabled collectors”列是mysqld_exporter預設情況下啟用的功能。

5.新增mysqld_exporter,為系統服務啟動。
vi /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=Prometheus MySQL Exporter
After=network.target
User=root
Group=root

[Service]
Type=simple
Restart=always
ExecStart=/data/mysqld_exporter/mysqld_exporter
--conf?ig.my-cnf=/data/mysqld_exporter/.mysqld_exporter.cnf
--collect.global_status
--collect.auto_increment.columns
--collect.info_schema.processlist
--collect.binlog_size
--collect.info_schema.tablestats
--collect.global_variables
--collect.info_schema.innodb_metrics
--collect.info_schema.query_response_time
--collect.info_schema.userstats
--collect.info_schema.tables
--collect.perf_schema.tablelocks
--collect.perf_schema.f?ile_events
--collect.perf_schema.eventswaits
--collect.perf_schema.indexiowaits
--collect.perf_schema.tableiowaits
--collect.slave_status
--web.listen-address=0.0.0.0:9104

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start mysqld_exporter.service

6.mysql_exporter與Prometheus整合

  • job_name: 'mysqld_exporter'
    scrape_interval: 10s
    static_conf?igs:
    • targets: ['192.168.24.61:9104']

redis監控

1.下載並解壓縮軟體包到指定的安裝目錄 redis_exporter。
tar -xvf redis_exporter-v0.23.0.linux-amd64.tar.gz
./redis_exporter -redis.addr localhost:6379 -redis.password YourStrongPassword

2.新增redis_exporter為系統服務開機啟動配置檔案redis_exporter.service:

vi /usr/lib/systemd/system/redis_exporter.service

[Unit]
Description=Prometheus Redis Exporter
After=network.target

[Service]
Type=simple
Restart=always
ExecStart=/data/redis_exporter/redis_exporter
-redis.addr localhost:6379
-redis.password YourStrongPassword \

[Install]
WantedBy=multi-user.target

Redis server若設定過密碼登入,以上檔案內容需要設定redis連線地址和密碼。

3.與Prometheus整合

  • job_name: 'redis_exporter'
    scrape_interval: 10s
    static_configs:
    • targets: ['192.168.24.61:9121']

nginx監控

1.需要安裝支援第三方的nginx virtual host traffic status模組,提供對虛擬主機狀態資訊的訪問,它包含當前狀態,如伺服器、upstreams、快取,即進行模組載入操作:
./configure --add-module=/path/to/nginx-module-vts

nginx-module-vts在Nginx官網上的第三方欄目中推薦下載頁面地址https://github.com/vozlt/nginx-module-vts,也可以直接使用git進行clone操作git clone git://github.com/vozlt/nginx-module-vts.git。若沒有載入nginx-module-vts模組支援,想要透過重新編譯載入模組時,需要備份原來的應用環境,再載入此模組。

模組載入完成後,需要在Nginx配置檔案中新增如下格式的配置內容:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}

透過 http://127.0.0.1/status 來訪問

2.下載並解壓 nginx-vts-exporter

啟動

./nginx-vts-exporter -nginx.scrape_uri http://localhost/status/format/json

3.新增nginx-vts-exporter為系統服務開機啟動配置檔案nginx-vts-exporter.service:
vi /usr/lib/systemd/system/nginx-vts-exporter.service
[Unit]
Description=Prometheus Nginx VTS Exporter
After=network.target
User=nginx
Group=nginx

[Service]
Type=simple
Restart=always
ExecStart=/data/nginx-vts-exporter/nginx-vts-exporter
-nginx.scrape_uri http://localhost/status/format/json

[Install]
WantedBy=multi-user.target

4.與Prometheus整合

  • job_name: 'nginx-vts-exporter'
    scrape_interval: 10s
    static_configs:
    • targets: ['192.168.24.14:9913']

相關文章