一 安裝
1 下載,啟動
prometheus 的下載地址
https://prometheus.io/download/#prometheus
下載完之后,解壓,拷貝到/usr/local
[root@server04 down]# tar -xvzf prometheus-2.2.0-rc.0.linuxamd64.tar.gz
cp -r prometheus-2.2.0-rc.0.linux-amd64 /usr/local/
./promehteus #直接運行
2 后台啟動
使⽤daemonize 放⼊后台⽅式, daemonize Unix系統后台守護進程管理軟件
需要先下載安裝daemonize
git clone https://github.com/bmc/daemonize.git sh configure && make && sudo make install
用daemonize去啟動prometheus服務
daemonize -c /data/prometheus/ /data/prometheus/up.sh
運行完上面的命令之后,會在/data/prometheus/ 這個目錄下產生一個data的目錄,下次重啟需要指定這個目錄
-c 是指定運⾏路徑 /data/prometheus/up.sh 是運⾏路徑下的 ⼀個啟動腳本
腳本內容如下:
需要把解壓之后的prometheus放到/data/prometheus目錄下面
/data/prometheus/prometheus/prometheus --config.file="/data/prometheus/prometheus/prometheus.yml"
3 配置文件
[root@k8s-node1 prometheus]# grep -v "^#" /data/prometheus/prometheus/prometheus.yml
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).
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
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']
⼀個就是 全局變量 scrape_interval 設置多少時間間隔 采集⼀ 次數據
另⼀個 就是 job和targets的寫法 配置⼀個job的標簽,然后 在 這個標簽下 定義 我們需要監控的機器
4 node_exporter 安裝和后台運⾏
4.1 客戶端配置
下載地址為 https://prometheus.io/download/#node_exporter
默認運⾏在 9100端口
啟動:
daemonize -c /data/node_exporter/ /data/node_exporter/up.sh
腳本內容:
cat up.sh
/prometheus/node_exporter/node_exporter --web.listen-address=":9200"
查詢數據:
curl localhost:9100/metrics
4.2 服務端配置
● 監控服務器更改配置文件:如下 9200是node_export的默認端口號
然后去網頁查看,點Status --》點Targets --》
二 pushushgatway 的安裝和運⾏和配置
2.1 監控服務器配置(prometheus服務器)
其中1.211是按照pushgatway的服務器
然后重啟prometheus服務器即可
2.2 被監控端操作
下載地址 https://prometheus.io/download/#pushgateway 解壓后 直接運⾏
默認端口是9091
啟動完成之后,可以訪問 http://192.168.1.211:9091/#
編寫監控腳本,用來收集等待連接數
#!/bin/bash
instance_name=`hostname -f | cut -d'.' -f1` #本機機器名變量用於之后的標簽
if [ $instance_name == "localhost" ];then
echo "Must FQDN hostname"
exit 1
fi
count_netstat_wait_connections=`netstat -an | grep -i wait | wc -l`
echo "count_netstat_wait_connections $count_netstat_wait_connections" | curl --data-binary @- http://192.168.1.211:9091/metrics/job/pushgateway/instance/$instance_name
然后設置crontab */1 * * * * bash /prometheus/pushgateway.sh
當然自己寫的腳本要結合crontab去定時執行
如果希望 ⼩於⼀分鍾的間隔 15s ,就用sleep
然后去監控頁面查看圖表是否生成:
url解釋:
最后 把 key & value 推送給 pushgatway
curl —data-binary 將HTTP POST請求中的數據發送給HTTP服務器器(pushgateway), 與⽤用戶提交HTML表單時瀏覽器器的⾏行行為完全⼀一樣。 HTTP POST請求中的數據為純二進制數據
http://prometheus.server.com:9091/metrics/job/pushgateway1/ instance/$instance_name
最后這⾥ ⽤POST ⽅式 把 key & value 推送給 pushgatway的URL地址
這個URL地址中 分成如下三個部分 :
http://prometheus.server.com:9091/metrics/job/pushgateway1
這⾥是 URL的主location
job/pushgateway1
這⾥是 第⼆部分 第⼀個標簽: 推送到 哪⼀個prometheus.yml 定義的 job⾥
{instance=“server01"}
instance/$instance_name
這⾥是 第⼆個標簽 推送后 顯⽰的 機器名是什