centos安装openresty和logstash安装
1.安装环境
linux: centos8.1
使用用户:root
openresty:1.21.4.1-alpine-fat
logstash:8.8.1
docker:20.10.24
docker-compose: 1.29.2
2.安装步骤
2.1 新建挂载文件目录和配置文件
2.1.1 新建文件目录
mkdir logs logstash-pipeline -- 在你的安装目录新建挂载文件
2.1.2 调整logstash.yml
因为我只安装logstash,没有安装es,所以需要调整logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://yourip:9200" ]
xpack.monitoring.enabled: false
log.level: debug
前面两个配置是我在容器中直接复制出来的,没删除,因为没安装es,我就没管他。
1.http.host: “0.0.0.0”:
指定 Elasticsearch 监听的网络地址。0.0.0.0 表示监听所有网络接口。表示 Elasticsearch 将会监听服务器上的所有可用 IP 地址,允许远程连接。
2.xpack.monitoring.elasticsearch.hosts: [ “http://yourip:9200” ]:
指定 Elasticsearch 集群的监控目标。你需要将 “http://yourip:9200” 替换为你实际的 Elasticsearch 集群的地址。用于将 Elasticsearch 集群的监控数据发送到指定的目标。
3.xpack.monitoring.enabled: false:
用于控制是否启用监控功能。设置为 false,Elasticsearch 将不会生成和发送监控数据。
4.log.level: debug:
用于设置 Elasticsearch 的日志级别。我在开发环境调试,所以将日志级别设置为 debug,有助于排查问题。如果是生产环境,需要将日志级别设置为更高的级别,比如 info 或 warn,这样可以减少日志量。
2.1.3 调整nginx.conf
user root;
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
error_log logs/error.log notice;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#
# log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for" '
# '$request_time $upstream_response_time $host $request_id';
# access_log logs/access.log main;
log_format json_combined escape=json '{'
'"request_start_time":"$time_local",'
'"client":"$remote_addr",'
'"http_referer":"$http_referer",'
'"request_uri":"$request_uri",'
'"uri":"$uri",'
'"scheme":"$scheme",'
'"status":"$status",'
'"response_byte_size":"$body_bytes_sent",'
'"request_total_time":"$request_time",'
'"upstream_addr":"$upstream_addr",'
'"upstream_response_time":"$upstream_response_time",'
'"upstream_header_time":"$upstream_header_time",'
'"upstream_bytes_received":"$upstream_bytes_received",'
'"upstream_connect_time":"$upstream_connect_time",'
'"upstream_status":"$upstream_status",'
'"agent":"$http_user_agent",'
'"request":"$request",'
'"request_id":"$request_id",'
'"http_x_forwarded_for":"$http_x_forwarded_for",'
'"project_code":"$http_project_code"'
'}';
access_log logs/access.log json_combined;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
server {
# 修改成自己的端口,和docker-compose映射的端口保持一致即可
listen 8000;
location /demo {
content_by_lua_block {
ngx.say("配置成功了耶")
}
}
}
}
这里我的access.log日志格式设置成了json格式,logstash解析access.log就相对简单很多。我开始设置的是第一种,解析时贼费劲,我的发量已经不能支持我挣扎。
2.1.4 新增logstash.conf
input {
file {
path => "/usr/share/logstash/openresty-logs/access.log" # logstash挂载的日志路径
start_position => "beginning"
# sincedb_path => "/dev/null" # 这是全量的,每次都会从头读
}
}
output {
stdout {
codec => rubydebug
}
}
这里只是个简单的示例,按需配置
2.2 docker-compose配置
1.创建一个自定义网络
docker network create mynetwork
2.docker-compose.yml配置
version: '3.1'
services:
openresty:
image: openresty/openresty:1.21.4.1-alpine-fat
ports:
- 8000:8000
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
- ./logs:/usr/local/openresty/nginx/logs
restart: always
networks:
- mynetwork
logstash:
image: docker.elastic.co/logstash/logstash:8.8.1
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./logstash-pipeline:/usr/share/logstash/pipeline
- /www/docker-compose/openresty/logstash.yml:/usr/share/logstash/config/logstash.yml
- ./logs:/usr/share/logstash/openresty-logs
networks:
- mynetwork
networks:
mynetwork:
external: true
mynet网络在networks部分被标记为external,表示这个网络是在Docker Compose的管理范围之外创建的。配置这个是为了和其他容器通过服务名通信,如果你没有需要或者有其他实现方式,直接去掉即可。
这是最终的目录结构:
2.3 启动
# 在docker-compose.yml目录中执行
docker-compose up -d
# 查看是否启动成功
docker ps
# 启动日志排查
docker-compose logs -f
重要的人会越来越少,剩下的人也会越来越重要
还没有评论,来说两句吧...