侧边栏壁纸
博主头像
一揽芳华 博主等级

行动起来,活在当下

  • 累计撰写 265 篇文章
  • 累计创建 24 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

2.3.监控tengine(新增)

芳华是个男孩!
2024-10-14 / 0 评论 / 0 点赞 / 11 阅读 / 0 字
广告 广告

title: 2.3.监控tengine(新增)
order: 9

icon: lightbulb

一、环境

主机名

IP地址

系统

说明

localhost

192.168.11.61

Ubuntu 20.04

docker安装的prometheus

test

192.168.11.62

Ubuntu 20.04

tengine 2.4.0

1、环境准备

docker安装

docker-compose安装

2、安装tengine

a、docker安装tengine带nginx-module-vts模块(二选一)

mkdir /data/ -p
cd /data/

通过git clone下载已经创建好的docker-compose.yaml文件

 git clone https://gitee.com/linge365/docker-compose.git

运行

  • 带了nginx-module-vts模块
cd docker-compose/tengine

docker-compose up -d

检查

docker ps

STATUS列为up 为正常

b、编译安装的tengine安装nginx-module-vts模块(二选一)

如果tengine是自行编译安装的,安装nginx-module-vts模块,如下:

#下载nginx-module-vts插件

cd /usr/local/src/
git clone git://github.com/vozlt/nginx-module-vts.git

重新编译nginx,指定nginx-module-vts目录

注:

  • 编译前记得备份原来的tengine目录。
cd /usr/local/src/tengine-2.4.0  #进入到tengine源码目录
./configure  ...  --add-module=/usr/local/src/nginx-module-vts
make
make install

二、监控tengine

tengine开启status(docker安装的tengine)

注:

  • 监控tengine我将使用第三方nginx-module-vts模块。

检查是否安装有nginx-module-vts模块,nginx-module-vts模块已在上面的环境搭建安装好。

 docker exec -it tengine nginx -V 2>&1 | grep -o nginx-module-vts
nginx-module-vts

tengine开启status全部配置

http {
    vhost_traffic_status_zone;

    ...

    server {

        ...

        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}

修改nginx的配置

vim conf/nginx.conf

在http标签中加入vhost_traffic_status_zone配置。如下:

http {
    vhost_traffic_status_zone;

    ...
}

修改server.conf配置

vim conf/conf.d/default.conf

在server标签中加入status如下配置:

    server {

        ...

        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }

检查配置

docker exec -it tengine nginx -t

返回如下表示正常

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启

docker restart tengine

检查-有json数据返回表示正常

curl http://192.168.11.62/status/format/json

web检查-显示如下页面表示正常

1、二进制安装nginx-vts-exporter(二选一)

nginx-vts-exporter下载地址: https://github.com/hnlq715/nginx-vts-exporter/releases

下载二进制包解压并放入/opt目录

wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.8/nginx-vtx-exporter_0.10.8_linux_amd64.tar.gz

mkdir /opt/prometheus/nginx_vtx_exporter -p

tar xvf nginx-vtx-exporter_0.10.8_linux_amd64.tar.gz -C /opt/prometheus/nginx_vtx_exporter

ls -l /opt/prometheus/nginx_vtx_exporter

创建用户

useradd -M -s /usr/sbin/nologin prometheus

更改exporter文件夹权限

chown prometheus:prometheus -R /opt/prometheus

创建 systemd 服务

nginx_exporter.service

cat > /etc/systemd/system/nginx_vtx_exporter.service <<"EOF"
[Unit]
Description=nginx_vtx_exporter
After=network.target

[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=always
ExecStart=/opt/prometheus/nginx_vtx_exporter/nginx-vtx-exporter -nginx.scrape_uri=http://192.168.11.62/status/format/json

[Install]
WantedBy=multi-user.target
EOF

启动 nginx_exporter

systemctl daemon-reload
systemctl start nginx_vtx_exporter.service

加入到开机自启动

systemctl enable nginx_vtx_exporter.service

检查

systemctl status nginx_vtx_exporter.service

启动不了检查日志

journalctl -u nginx_vtx_exporter.service -f

3、docker安装nginx-vts-exporter(二选一)

docker-compose方式

mkdir /data/nginx_vts_exporter

cd /data/nginx_vts_exporter

通过cat创建文件

cat >docker-compose.yaml <<EOF
version: '3.3'
services:
  nginx_vts_exporter:
    image: sophos/nginx-vts-exporter:latest
    container_name: nginx_vts_exporter
    environment:
      NGINX_STATUS: http://192.168.11.62/status/format/json
    restart: always
    ports:
      - "9913:9913"
EOF

启动

docker-compose up -d

检查

docker ps
或:
docker logs -f nginx_vts_exporter

3、参数解释

Environment variable

默认

description

NGINX_STATUS

http://localhost/status/format/json

4、metrics地址

注:安装好Exporter后会暴露一个http://ip:端口/metrics的HTTP服务

名称

地址

备注

nginx-vts-exporter

http://192.168.11.62:9913/metrics

5、Prometheus配置

配置prometheus去采集(拉取)nginx_exporter的监控样本数据

cd /data/docker-prometheus 

#在scrape_configs(搜刮配置):下面增加如下配置:

cat >> prometheus/prometheus.yml << "EOF"
  - job_name: 'nginx_vts_exporter'
    static_configs:
    - targets: ['192.168.11.62:9913']
      labels:
        instance: test服务器
EOF

重新加载配置

curl -X POST http://localhost:9090/-/reload

检查

http://192.168.11.61:9090/targets?search=

6、常用的监控指标

nginx_server_connections{status="accepted"} 接收请求数
nginx_server_connections{status="active"} 活动连接数
nginx_server_connections{status="handled"} 成功处理请求数
nginx_server_connections{status="reading"} 正在进行读操作的请求数
nginx_server_connections{status="requests"} 总请求数
nginx_server_connections{status="waiting"} 正在等待的请求数
nginx_server_connections{status="writing"} 正在进行写操作的请求数

nginx_upstream_requests{backend="xx:8080",code="4xx"} 后端节点请求状态

nginx_server_requests{code="4xx",host="*"}          状态码为4xx,所有主机
nginx_server_requests{code="4xx",host="localhost"}  状态码为4xx,localhost主机
nginx_server_requests{code="5xx",host="*"}          状态码为5xx,所有主机     
nginx_server_requests{code="5xx",host="localhost"}  状态码为5xx,localhost主机

7、添加触发器

触发器

cd /data/docker-prometheus

使用cat在alert.yml文件末尾追加。

cat >>prometheus/alert.yml <<"EOF"
- name: tengine
  rules:
  - alert: 客户端请求tengine非200
    expr: sum by (code) (rate(nginx_server_requests{code=~"4xx|5xx"}[2m])) > 0
    for: 2m
    labels:
      severity: critical
    annotations:
      summary: "客户端http请求异常"
      description: "HTTP状态码非 200-399"
  - alert: tengine请求后端节点非200
    expr: sum by (code) (rate(nginx_upstream_requests{code=~"4xx|5xx"}[2m])) > 0
    for: 2m
    labels:
      severity: critical
    annotations:
      summary: "后端节点http请求异常"
      description: "后端节点请求状态码非 200-399"
EOF

  • 2个触发器大部分重复(如:tengine请求后端节点返回500,那tengine也会给客户端返回500)

检查:

vim prometheus/alert.yml

检查配置

docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml

返回ok,表示配置没有问题

重新加载配置

curl -X POST http://localhost:9090/-/reload

检查

http://192.168.11.61:9090/alerts?search=

或:

http://192.168.11.61:9090/rules

8、dashboard

grafana展示prometheus从nginx_exporter收集到的的数据

https://grafana.com/grafana/dashboards/2949

0
广告 广告

评论区