背景紹介
- 一般的に使用されているnode_exporterはすべての監視項目を網羅しているわけではないため、本番環境で特定のプログラムのプロセスを監視して、ビジネスが正常かどうかを判断する必要があります。そのため、Process-exporterが誕生しました。
- プロセスエクスポータは、プロメテウスのプロセスを監視するために使用されます。process_exporterを使用すると、アプリケーションの実行ステータスをマクロの観点から監視できます(redis、mysqlなどのプロセスリソースの監視など)。
デプロイ
1.監視プラグインをダウンロードします
wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.5/process-exporter-0.7.5.linux-amd64.tar.gz
2.解凍して構成します
解凍する
cd /usr/local/src
tar -xf process-exporter-0.7.5.linux-amd64.tar.gz
mv process-exporter-0.7.5.linux-amd64 process-exporter
chown -R root:root /usr/local/src/process-exporter
構成ファイルを編集します(README.mdファイルの80行目を参照)。process_exporterの方法は、
監視するプロセスの名前を構成することです。プロセスを検索して、必要な監視情報を取得します。実際には、これは、対応するプロセスを表示するために「ps -efl」| grepxxx」コマンドを頻繁に実行するものです。構成ファイルは最初は存在しません。作成する必要があり、名前をカスタマイズできます。
-
注:プロセスが複数の一致と一致した場合、それだけで最初に一致したグループ名に属する
これらのうち、4名のオプションがあります(公式翻訳https://github.com/ncabatoff/process-exporter):
{ 。{}コム}には、元の実行可能ファイルのベース名が含まれます。つまり、2番目のフィールド/ proc // stat
{ {.ExeBase}}には、実行可能ファイルのベース名が含まれます
{ {.ExeFull}}には、実行可能ファイルの完全修飾パスが含まれます。
{ {.Username}}には、有効なユーザーのユーザー名が含まれます
{ {.Matches}}マップには、cmdlineregexpsによって生成されたすべての一致が含まれます -
追加の説明:名前オプションは実際にはキーに影響します:メトリックのグループ名。例として監視zookeeperとkafkaを取り上げます。
touch process-name.yaml
vim process-name.yaml
process_names:
- name: "{
{.Matches}}"
cmdline:
- '/u01/isi/application/component/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar'
- name: "{
{.Matches}}"
cmdline:
- '/u01/isi/application/component/kafka_2.11-0.10.0.1/bin/../libs/kafka_2.11-0.10.0.1.jar'
3.スタートストップサービス
注:起動パラメーター
-config.path #process-name.yaml的配置文件路径
-web.listen-address #blackbox_exporter监听的服务端口,默认为9256
cd /usr/local/src/process-exporter #进入blackbox_exporter的目录
mkdir logs #创建日志目录
nohup ./process-exporter -config.path="process-name.yaml" -web.listen-address=":9256">> logs/process-exporter.log 2>&1 & #启动服务
netstat -tanlp | grep 9256 #查看监听端口
ps -ef |grep process-exporter |grep -v grep |awk '{print $2}' | xargs kill -9 #停止服务
4.Prometheusに構成を追加します
1)fd_configファイルを書き込む
touch zk_kafka.json
vim zk_kafka.json
[
{
"labels": {
"desc": "zk node",
"group": "zk_process",
"host_ip": "192.168.16.113",
"hostname": "isi-16-113"
},
"targets": [
"192.168.16.113:9256"
]
},
{
"labels": {
"desc": "kafka node",
"group": "kafka_process",
"host_ip": "192.168.16.113",
"hostname": "isi-16-113"
},
"targets": [
"192.168.16.113:9256"
]
}
]
2)Prometheus.ymlに構成を追加します
...
...
- job_name: 'zk_kafka-process'
scrape_interval: 2m
scrape_timeout: 120s
static_configs:
file_sd_configs:
- files:
- /home/monitor/prometheus/conf.d/zk_kafka.json
5.構成を確認してサービスをリロードします
cd /usr/local/src/prometheus/
./promtool check config prometheus.yml #检查配置文件是否正确
curl -XPOST http://192.168.16.115:9090/-/reload #重载服务