Prometheus 容器自定义监控nginx状态

1. 目录结构

#目录结构
[root@test-master /opt/prometheus]# tree ./
./
├── nginx_status.sh           #取值
├── prometheus.yml         #配置文件
├── status.html                  #状态页面
└── v
    └── v_settings.yml         #动态新增结点

2.prometheus持久化配置文件

#prometheus.yml
[root@test-master /opt/prometheus]# cat 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.
alerting:
  alertmanagers:
  - static_configs:
    - targets:
rule_files:
scrape_configs:
  #- job_name: 'prometheus'
  #  static_configs:
  #    - targets: ['localhost:9090','IP:PROT'] # 添加node-exporter启动地址和IP
  - job_name: 'auto_discovery_node_exporter'
    file_sd_configs:
    - files:
      - /opt/v_settings.yml
      refresh_interval: 5s

3.自动发现的配置文件

#v_settings.yml
[root@test-master /opt/prometheus/v]# cat v_settings.yml 
[
  {
    "targets":  ["192.168.58.15:9100"],
    "labels": {"name": "basic"}
  },
  {
    "targets":  ["192.168.58.15:9091"],
    "labels": {"name": "custome"}
  }
]

4.监控nginx状态的脚本

♥prometheus的配置文件中已加入动态发现
#nginx_status.sh
[root@test-master /opt/prometheus]# cat nginx_status.sh 
#!/bin/bash
#instance_name=`hostname -i` # 该指令要求hosts文件必须有解析
# instance_name=`hostname -f | cut -d '.' -f 1`  # 以点号作为分割只取第一段作为本机的主机标签
INSTANCE_NAME=`hostname -s`

# 要求机器名不能是"localhost"不然标签就没有区分了
if [ $INSTANCE_NAME == "localhost" ]
    then
        echo "Must FQDN hostname"
        exit
fi

# 定义Prometheus抓取的KEY值,用于保存TCP的wait状态相关的连接(connections)

# 通过netstat工具抓取connected链接的数量
curl -o /opt/prometheus/status.html http://192.168.58.15/nginx_status
# 发送数据
echo "active_connections `cat /opt/prometheus/status.html |awk 'NR==1{print $3}'`" | curl --data-binary @- http://192.168.58.15:9091/metrics/job/nginx_status_test/instance/$INSTANCE_NAME
echo "requests `cat status.html |awk 'NR==3{print $3}'`" | curl --data-binary @- http://192.168.58.15:9091/metrics/job/nginx_status_test/instance/$INSTANCE_NAME

5.启动prometheus容器

docker run -d -p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/v/:/opt/ \
--name prometheus \
prom/prometheus

6.启动export容器

docker run -d -p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--net="host" \
--name node-exporter \
--restart always \
prom/node-exporter

7.启动pushgetway容器

docker run -d \
--name=pg_nginx \
-p 9091:9091 \
prom/pushgateway

8.测试发送

#发送信息
[root@test-master /opt/prometheus]# bash nginx_status.sh 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值