logstash 收集 nginx 日志
最编程
2024-06-03 13:03:54
...
1.配置nginx日志
编辑nginx.conf文件 vim /etc/nginx/nginx.conf
在http节点下配置如下
log_format json '{"@timestamp":"$time_iso8601",'
'"@version":"1",'
'"client":"$remote_addr",'
'"url":"$uri",'
'"status":"$status",'
'"domain":"$host",'
'"host":"$server_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"referer": "$http_referer",'
'"ua": "$http_user_agent"'
'}';
access_log /data/nginx/logs/access_json.log json;
目的就是将nginx的日志以json的形式进行文件存储,方便es存储
访问nginx 查看日志 tail -f /data/nginx/logs/access_json.log
可以看到新的入职信息说明配置正常
安装elk
采用docker-compose
version: "3"
services:
elasticsearch:
image: "elasticsearch:7.1.1"
container_name: "elasticsearch"
restart: "always"
volumes:
- "elasticsearch:/usr/share/elasticsearch"
#vim /etc/sysctl.conf
#vm.max_map_count=262144
#sysctl -w vm.max_map_count=262144
#sysctl -p
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node
networks:
- "elk"
ports:
- "9200:9200"
- "9300:9300"
kibana:
image: "kibana:7.1.1"
container_name: "kibana"
restart: "always"
depends_on:
- elasticsearch
volumes:
- "kibana:/usr/share/kibana"
networks:
- "elk"
ports:
- "5601:5601"
logstash:
image: "logstash:7.1.1"
container_name: "logstash"
restart: "always"
networks:
- "elk"
ports:
- "5044:5044"
- "9600:9600"
volumes:
- "logstash:/usr/share/logstash"
- "/data/nginx/logs:/data/nginx/logs"
networks:
elk:
volumes:
elasticsearch:
logstash:
kibana:
配置
- 配置logstash.yml
在config/logstash.yml
文件下追加
path.config: /usr/share/logstash/conf.d/*.conf
- 配置logstash日志处理文件
新增conf.d/logstash.conf
文件 内容如下:
input {
file {
type => "nginx-access-log"
path => "/data/nginx/logs/access_json.log"
start_position => "beginning"
stat_interval => "2"
codec => json
}
}
filter {}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
#index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
index => "logstash-nginx-access-log-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
stdout {
codec => json_lines
}
}
说明:
- start_position 指从文件开始位置读取
- stat_interval 指每间隔两秒读取一次
- index 指定索引名称
- user | password 这里没有安装
xpack
插件,所以用户名,密码不用配置,如果需要可以 自行配置
启动docker-compose
docker -compose up -d --build
之后打开head插件发现发出来一个index库
打开http:{host}:5601
在kibana中添加nginx日志匹配规则
Management-->index patterns-->create index pattern
输入
logstash-nginx-*
就是在logstash中配置的索引名称前缀然后配置时间排序字段
@timestamp
这样kibana就可以根据此字段进行时间倒序展示了配置好之后就可以在左侧
discover
中查看对应的日志索引信息了另外可以进行字段筛选显示
下一篇: 容器下的 nginx 日志
推荐阅读
-
深入理解LNMP系列之四:Nginx日志详细解析
-
全面指南:使用lnmp、ELK 8.5.0和GeoIP解析Nginx日志,并在2022年11月版中实现数据可视化和IP地址地图可视化
-
如何设置Nginx的日志配置
-
Java 实现Shell命令执行与日志收集的实用技巧与注意事项
-
Elasticsearch:将 Logstash 日志保存到 Elasticsearch
-
为什么我们需要 Logstash、Fluentd 和其他日志摄取器?-流畅比特与 Fluentd
-
在 linux 下自动备份压缩 nginx 日志 - Log Cutter
-
Nginx 日志如何查看、在哪里查看、access.log 日志内容详情
-
[Nginx] 如何配置 Nginx 日志?这是最全面的一篇!
-
nginx日志记录详情