13.prometheus监控tengine(无用)
一、环境准备
1.1 docker安装tengine带nginx-module-vts模块(二选一)
mkdir /data/ -p
cd /data/ # 通过git clone下载已经创建好的docker-compose.yaml文件
git clone https://gitee.com/linge365/docker-compose.git
version: '3'
services:
tengine:
image: registry.cn-shenzhen.aliyuncs.com/linge365/tengine:2.4.0-geoip2
container_name: tengine # 容器名,相当于docker run命令中的--name
restart: unless-stopped # 之前是什么状态,docker重启后,保持之前的状态(如果之前是stop,那docker重启时,也是stop状态)
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录,相当于docker run命令中的-v
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./conf/conf.d:/etc/nginx/conf.d
- ./html:/usr/share/nginx/html
- ./log:/var/log/nginx
- ./cert:/etc/nginx/cert
#- ./geoip2:/etc/nginx/geoip2
environment: # 设置环境变量,相当于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
ports: # 映射端口,相当于docker run 命令中的-p
- "80:80"
- "443:443"
tengine.yaml文件
cd docker-compose/tengine
docker-compose up -d
1.2 编译安装的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
2.1 准备tengine环境
tengine开启status(docker安装的tengine)
注:
●监控tengine我将使用第三方nginx-module-vts模块。
检查是否安装有nginx-module-vts模块,nginx-module-vts模块已在上面的环境搭建安装好。
[root@test tengine]# docker exec -it tengine nginx -V 2>&1 | grep -o nginx-module-vts
nginx-module-vts
修改配置文件
cd /data/tengine/docker-compose/tengine
vim conf/nginx.conf
# 在http标签中加入vhost_traffic_status_zone配置
http {
vhost_traffic_status_zone; ...
} vim conf/nginx_prod.conf
http {
vhost_traffic_status_zone; ... server { ... location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
} vim conf/conf.d/default.conf
server { ... location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
} # 检查配置
[root@test tengine]# 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 # web检查
curl http://192.168.11.62/status/format/json
http://192.168.10.100/status
2.2 二进制安装nginx-vts-exporter(二选一)
nginx-vts-exporter下载地址: https://github.com/hnlq715/nginx-vts-exporter/releases
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
chown prometheus:prometheus -R /opt/prometheus # 创建systemd服务
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 # 启动服务
systemctl daemon-reload
systemctl start nginx_vtx_exporter.service
systemctl enable nginx_vtx_exporter.service
2.3 docker安装nginx-vts-exporter
docker-compose方式
mkdir /data/nginx_vts_exporter cd /data/nginx_vts_exporter 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 # metrics地址
http://192.168.10.100:9913/metrics
3.Prometheus配置
cd /data/docker-prometheus #在scrape_configs(搜刮配置):下面增加如下配置: cat >> prometheus/prometheus.yml << "EOF"
- job_name: 'nginx_vts_exporter'
static_configs:
- targets: ['192.168.10.100:9913']
labels:
instance: test服务器
EOF # 重新加载配置
curl -X POST http://localhost:9090/-/reload # 检查
http://192.168.10.14:9090/targets
3.1 常用监控指标
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主机
4. 触发器
cat >>prometheus/rules/tengine.yml <<"EOF"
groups:
- 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)
检查配置并加载
docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml curl -X POST http://localhost:9090/-/reload # 检查
http://192.168.10.14:9090/rules
http://192.168.10.14:9090/alerts?search=
5. dashboard
grafana展示prometheus从nginx_exporter收集到的的数据
13.prometheus监控tengine(无用)的更多相关文章
- 基于prometheus监控k8s集群
本文建立在你已经会安装prometheus服务的基础之上,如果你还不会安装,请参考:prometheus多维度监控容器 如果你还没有安装库k8s集群,情参考: 从零开始搭建基于calico的kuben ...
- Prometheus监控(二)
Prometheus监控(二) 数据类型 Counter(计数器类型) Counter类型的指标的工作方式和计数器一样,只增不减(除非系统发生了重置),Counter一般用于累计值. Gauges(仪 ...
- Prometheus 监控Mysql服务器及Grafana可视化
Prometheus 监控Mysql服务器及Grafana可视化. mysql_exporter:用于收集MySQL性能信息. 使用版本 mysqld_exporter 0.11.0 官方地址 使用文 ...
- Prometheus监控k8s集合
Prometheus监控k8s Prometheus监控k8s(1)-Prometheus简介 Prometheus监控k8s(2)-手动部署Prometheus Prometheus监控k8s(3) ...
- Prometheus监控 Redis & Redis Cluster 说明
说明 在前面的Prometheus + Grafana 部署说明之「安装」文章里,大致介绍说明了Prometheus和Grafana的一些安装使用,现在开始如何始部署Prometheus+Grafan ...
- Prometheus监控Docker Swarm集群(一)
Prometheus监控Docker Swarm集群(一) cAdvisor简介 为了解决容器的监控问题,Google开发了一款容器监控工具cAdvisor(Container Advisor),它为 ...
- Prometheus监控神器-Alertmanager篇(1)
本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解. 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的.警 ...
- 手把手教你使用 Prometheus 监控 JVM
概述 当你的 Java 业务容器化上 K8S 后,如果对其进行监控呢?Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标,以便使用 Prometheus 来采集监控 ...
- Prometheus监控k8s企业级应用
Prometheus架构图 常见的镜像 pod 备注 kube-state-metric 用来收集K8S基本状态信息的监控代理 node-exporter 专门用来收集K8S运算节点基础信息,需要部署 ...
- 第15章: Prometheus监控Kubernetes资源与应用
Prometheus监控Kubernetes资源与应用 目录 1 监控方案 2 2 监控指标 4 3 实现思路 4 4 在K8S中部署Prometheus 4 5 在K8S中部署Grafana与可视化 ...
随机推荐
- 记录--HTML问题:如何实现分享URL预览?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 需求分析 为了提高用户对页面链接分享的体验,需要对分享链接做一些处理. 以 Telegram(国外某一通讯软件) 为例,当在 Tel ...
- 一文搞懂JavaEE的接口
在Java EE(Java Enterprise Edition)开发环境中,编程意义上的"接口"(interface)和API接口虽然都涉及接口的概念,但它们属于不同层面的术语. ...
- 马文·柯林斯的教育之道 「Marva Collins' Way」 阅读笔记
<马文·柯林斯的教育之道> 是 哈佛幸福课(积极心理学) 中强列推荐的一本书 这本书主写的是 马文·柯林斯 的成长经历已经和教育理念,仅看介绍,会误认为这本书只是在说鼓励式的教学理念,看完 ...
- 脱离于ASP.NET 和Visual Studio编辑Razor脚本
Razor Pad是一个编辑Razor脚本的工具,脱离于ASP.NET 和Visual Studio. github地址:https://github.com/RazorPad/RazorPad 如果 ...
- 京东二面:Redis为什么快?我说Redis是纯内存访问的,然后他对我笑了笑。。。。。。
引言 Redis是一个高性能的开源内存数据库,以其快速的读写速度和丰富的数据结构支持而闻名.作为一个轻量级.灵活的键值存储系统,Redis在各种应用场景下都展现出了惊人的性能优势.无论是作为缓存工具. ...
- zynq之TF卡写入常见问题
zynq之TF卡写入常见问题 1.基本原理 前面做过zynq的TF读写实验,使用串口返回了实验所需的现象.那个时候也没有深究头文件"ff.h"里的几个常用的函数.这次需要使用TF卡 ...
- 基于proteus的4026的二分频计数
基于proteus的4026的二分频计数 1.芯片原理 4026还是一个CMOS芯片,是直接输出段码的计数器.显然,这个芯片的作用就是和七段数码管配合,直接将计数结果显示在数码管上.这里只是用于分频, ...
- KingbaseES Insert On Conflict 功能
针对数据写入时有主键冲突的情况,INSERT ON CONFLICT语法可以将冲突主键的INSERT行为转换为UPDATE行为,从而实现冲突主键的覆盖写入.该特性又称UPSERT覆盖写,与MySQL的 ...
- #博弈论#Poj 1740 A New Stone Game
题目 两个人轮流操作,每次选择一个非空石堆后, 选择扔掉至少一个石子后可将剩余石子任意移动至其余非空石堆, 也可以不移,无石子可取者为败,问先手是否必胜 分析 感性理解一下,如果有两堆个数相同的石子, ...
- OpenHarmony开发之MQTT讲解
相信MQTT这个名称大家都不陌生,物联网的开发必然会遇到MQTT相关知识的应用.那么什么是MQTT?它有什么特点?它能解决什么问题?它是如何工作的?OpenAtom OpenHarmony(以下简 ...