プロメテウスの使用
環境
- 前のビューインストールの章を
- マックOS
- CentOSの7
- プロメテウス-2.12.0.linux-amd64.tar.gz
- grafana-6.3.5-1.x86_64
- node_exporter-0.18.1.linux、AMD64
- pushgateway-0.9.1.linux、AMD64
コマンド・ライン・エントリの例
-
CPU使用率の計算
T2はCPUの総使用時間=にT1に
( user2+ nice2+ system2+ idle2+ iowait2+ irq2+ softirq2) - ( user1+ nice1+ system1+ idle1+ iowait1+ irq1+ softirq1)
T2 =アイドル期間t1におけるCPU使用時間(idle2 - idle1)
T2 =利用にCPUの時刻t1の
1 - CPU空闲使用时间 / CPU总的使用时间
increase()
機能:時間増分のカウンタタイプを解決するためにマルチコアCPUの計算
sum()
結果が加算され、- CPU時間を取得します。
- 自由な時間を取得します
idle
総取得時間
-
単一マシン上のCPU使用率の合計
1-(sum(increase(node_cpu_seconds_total{instance="192.168.9.232:9100",mode="idle"}[1m]))/sum(increase(node_cpu_seconds_total{instance="192.168.9.232:9100"}[1m])))
-
(インスタンス)によって:のインスタンスを区別
-
(1-( sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance) )) * 100
-
他のCPUの状態は、時間を使用して計算されます
-
iowaitのIOの待ち時間
sum(increase(node_cpu_seconds_total{mode="iowait"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
-
IRQハードウェア割り込み
sum(increase(node_cpu_seconds_total{mode="irq"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
-
ソフトIRQソフト割り込み
sum(increase(node_cpu_seconds_total{mode="softirq"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
-
タイムスライス仮想マシンが盗みます
sum(increase(node_cpu_seconds_total{mode="steal"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
-
時間配分プロセスの素敵な素敵な値
sum(increase(node_cpu_seconds_total{mode="nice"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
-
アイドルアイドル
sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
-
ユーザーモードユーザー
sum(increase(node_cpu_seconds_total{mode="user"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
-
sytemカーネルモード
sum(increase(node_cpu_seconds_total{mode="system"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
-
コマンドラインの拡張を使用
-
濾過
- ラベルフィルタリング
key{label=""}
- ファジーマッチング
key{label=~"web.*"}
- ファジーマッチング
- 値フィルタ
- 算術
key{.} > 400
- 算術
- ラベルフィルタリング
-
機能
-
rate(.[5m])
データ型カウンタと、設定された時間に応じて、撮影counter
期間ごとに増分の平均を- 取得された番組データ収集間隔考慮すべき期間の値
-
increase(.[5m])
ではcounter
、データ型、増分は一定の時間を要します
-
sum()
加和- コンバイン
by()
- コンバイン
-
topk(x,key)
Xの前に最も高い位置を取ります- 適していません
graph
;適しのためのconsole
鑑賞 - 瞬時警報に適し
- 適していません
-
count()
- ファジィ監視裁判官
-
データ収集
サーバーを開始 - 生産のために
-
Peometheus負荷設定ファイル
- プロメテウスへのシグナリングのための
- -HUP PIDを殺します
- プロメテウスにHTTPリクエストを送信します
- カール-XPOST http://prometheus.chenlei.com/-/reload
- プロメテウスへのシグナリングのための
-
背景
-
> yum install -y kernel-devel > yum groupinstall -y Development tools > git clone https://github.com/bmc/daemonize.git > cd daemonize > ./configure && make && make install
-
起動し
prometheus
、追加のパラメータを- -web.listenアドレス:アドレスを聞きます
0.0.0.0:9090
- -web.readタイムアウト:最大待機時間要求リンク
2m
- -web.max-接続:接続の最大数
10
- -storage.tsdb.retention:データの保持
90d
- -storage.tsdb.path:データパスを保存しました
/data/prometheus/server/data
- -query.max-同時実行:同時の最大数
20
- -query.timeout:クエリのタイムアウト
2m
- -web.listenアドレス:アドレスを聞きます
-
ストレージ構造
server/ └── data ├── 01DM9HP1PHHK2BD1MGC7J1C0YC │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── 01DM9ZDG8QKWTPYZ86K7XW6FKZ │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── 01DMAM0NM51YSQ4EVRRV46X2E1 │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── 01DMAM0P4CGJWSSA15QPWJGZXF │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── lock ├── queries.active └── wal ├── 00000011 ├── 00000012 ├── 00000013 ├── 00000014 ├── 00000015 ├── 00000016 ├── 00000017 ├── 00000018 └── checkpoint.000010 └── 00000000
-
保存された最近のデータ
wal/
突然の停電や再起動を防ぐために、ディレクトリは、メモリ内のデータを回復するために使用されます
書かれたサーバの設定ファイル
global:
scrape_interval: 5s #抓取频率
evaluation_interval: 1s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: '233-node-exporter'
static_configs:
- targets: ['192.168.9.233:9100']
- job_name: '232-node-exporter'
static_configs:
- targets: ['192.168.9.232:9100']
- job_name: '239-node-exporter'
static_configs:
- targets: ['192.168.9.239:9200']
node_exporter
- 指標の収集サーバ
- 十分なデフォルトのコレクションアイテムがあります。
- あなたは、オープンまたは無効に一定の指標を開始することができます
pushgateway
-
導入
データをプッシュするためのイニシアチブをprometheus server
異なるノード上で個別に実行することができ、ノードの監視が必要とされていません
-
インストール
- 0.9.1 / 2019年8月1日
- ダウンロード:リンク
- 減圧
- ラン
-
コレクトpushgatewayに送信されたカスタムスクリプト
-
インストールpushgeteway
-
プロメテウスの設定ジョブ関連pushgateway
-
スクリプトデータの収集対象ホスト
-
送信pushgatewayを実行するタイミングメトリックデータ
#!/bin/bash instance_name=instance_name label=label value=123 echo "$label $value" | curl --data-binary @- http://192.168.9.233:9091/metrics/job/test/instance/$instance_name
-
-
短所
- ボトルネックのシングルポイント
- データなしフィルタリングません
カスタム輸出国
-
開発プロセス
- 公式サイト
- 外部要求GETへの応答でWeb HTTPサービス、
- ローカルにデータを監視し、バックグラウンドで実行し、定期的にクロールトリガー
- 結果は、応答フォーマットプロメテウスの測定基準を満たす必要があります。
-
[Javaの]春版輸出国
-
- 囲碁言語の開発プロメテウス輸出業者の例
インターフェイスの可視化
grafana
-
はじめに
オープンソースのデータマッピングツールの -
インストール
- grafana官网
- 公式サイトのインストール・ガイド
- ポートデフォルト:3000
-
コンフィギュレーション
-
追加
prometheus
のデータソースを -
加えます
dashboard
-
ダッシュボードの確立
- データ・ソース構成
- データ・ソース構成
-
-
グラフィカルな設定
- 可視化
- 軸
- 伝説
- しきい値と時刻の地域
- データリンク
- 可視化
-
通用配置
-
アラームの設定
-
バックアップ
- 輸出JSON
- 保存
-
削減
- 輸入JSON / JSONを貼り付け
-
アラーム
アラームは、grafana 4.0
新機能- ネイルアラーム
- pageduty
練習
-
メモリ使用量
- ソース
node_exporter - 式
実際に利用可能なメモリを自由= +バッファ+キャッシュされ - フォーミュラ達成
((node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes)/node_memory_MemTotal_bytes)*100
- ソース
-
ハードディスクIOを監視
- ソース
node_exporter - 式
- 公式实现
函数: predict_linear(), 预测趋势
(rate(node_disk_read_bytes_total[1m])+rate(node_disk_written_bytes_total[1m]))
- ソース
-
网络监控
-
数据来源
bash脚本+pushgateway -
脚本编写
采集内网流量ping延迟和丢包率instance=`hostname -f` #外网联通 lostpk=`timeout 5 ping -q -A -s 500 -W 1000 -c 100 baidu.com | grep transmitted | awk '{print $6}'` #时间 rrt=`timeout 5 ping -q -A -s 500 -W 1000 -c 100 baidu.com | grep transmitted | awk '{print $10}'` # value只允许数值型 value_lostpk=${lostpk%%\%} value_rrt=${rrt%%ms} # 通过 pushgateway 发送给prometheus echo "lostpk_$instance : $value_lostpk" echo "lostpk_$instance $value_lostpk" | curl --data-binary @- http://192.168.9.233:9091/metrics/job/network-traffic/instance/$instance echo "rrt_$instance : $value_rrt" echo "rrt_$instance $value_rrt" | curl --data-binary @- http://192.168.9.233:9091/metrics/job/network-traffic/instance/$instance
-
定时执行
资料
定时执行步骤:- 安装crontab
- 在
/etc/crontab
配置cron运行对应可执行脚本
-
查看结果
- 在prometheus查看targets有没有在线,如果没有需要到prometheus配置,记得刷新配置
- 查看配置
- 看指标,在命令行输入刚刚自定的key应该会有提示出现
lostpk
rrt
- 在prometheus查看targets有没有在线,如果没有需要到prometheus配置,记得刷新配置
-