依赖
一个内置的with-http_stub_status_module
模块
配置
启用的时候只需要配置server
块当中加上一小段访问url
即可获取到
location /status {
stub_status on;
}
docker
实现
目前采用nginx:alpine
作为镜像,实现访问http://127.0.0.1/status
获取到服务状态信息
由于需要修改/etc/nginx/conf.d/default.conf
文件,所以我们可以选择挂载一个文件或者重新构建一个镜像
下面我们创建一个Dockerfile
,该文件主要是在default.conf
文件使用sed
查找server_name localhost;
并且在后面加入一段location
FROM nginx:alpine
RUN sed -i '/server_name localhost;/a\ location /status {\n stub_status on;\n }' /etc/nginx/conf.d/default.conf
创建compose.yaml
文件如下
services:
nginx:
container_name: demo-nginx
image: demo-nginx
build: .
restart: always
ports:
- "80:80"
开始构建镜像
$ docker compose build
启动容器
$ docker compose up -d
查看容器内部nginx
配置确认location /status
块存在
$ docker exec demo-nginx cat /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location /status {
stub_status on;
}
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
....
结果验证
浏览器访问地址http://127.0.0.1/status
获取返回数据如下
Active connections: 2
server accepts handled requests
2 2 4
Reading: 0 Writing: 1 Waiting: 1
字段含义
Active connections
: 活跃连接数server
accepts
: 接收请求handled
: 已处理请求requests
: 客户端请求
Reading
: 当前所有连接中正在读取请求Header
的数量Writing
: 当前所有连接中正在返回数据的数量Waiting
: 当前等待请求的空闲客户端连接数
配置syslog
nginx
支持把日志access_log/error_log
通过syslog
的方式发送出去
首先需要确保机器有syslog
服务
可以通过执行命令查看
$ systemctl status rsyslog
查看docker0
网口的IP
,该IP
会作为容器内部访问宿主机的IP
,在linux
系统中,该IP
一般会是172.17.0.1
$ ip addr show docker0
15: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:81:36:cb:3c brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:81ff:fe36:cb3c/64 scope link
valid_lft forever preferred_lft forever
通过修改/etc/nginx/nginx.conf
文件的方式配置远程syslog
服务的地址,由于nginx
目前处于容器中,所以填上docker0
的IP
表示把syslog
日志发送到宿主机的syslog
服务
http {
...
access_log /var/log/nginx/access.log main;
access_log syslog:server=172.17.0.1:514,tag=nginx_access_log;
error_log syslog:server=172.17.0.1:514,tag=nginx_error_log;
...
}
之后在容器启动之后,在终端输入命令查看syslog
$ tail -f /var/log/syslog
打开浏览器访问nginx
的服务,就可以在上面终端看到访问日志了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。