上一篇讲了 ELK 的部署,本篇来实战一下,将 nginx 的日志通过 Logstash 传输到 Elasticsearch 中,然后我们通过 Kibana 去查看日志。
安装 Nginx
sudo cat > /etc/yum.repos.d/nginx.repo << EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
yum install -y nginx
启动 nginx
systemctl start nginx
浏览器访问机器 IP,如果有防火墙/安全组请记得开放 80 端口
先看一下 nginx 访问日志
配置 Logstash
Logstash 是由 Elastic 公司推出的一款开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送指定的存储库中,Logstash 官方介绍。
Logstash 包含 3 个主要部分:输入(inputs),过滤器(filters)和输出(outputs)。
- inputs 主要用来提供接收数据的规则,比如使用采集文件内容;
- filters 主要是对传输的数据进行过滤,比如使用 grok 规则进行数据过滤;
- outputs 主要是将接收的数据根据定义的输出模式来进行输出数据,比如输出到 Elasticsearch 中。
上一篇文章我们已经安装好了 Logstash,然后我们开始写 logstash 的配置文件,新建 nginx_access.conf 写入如下内容:
input {
file {
# 读取文件的路径, 基于 glob 匹配语法
path => "/var/log/nginx/access.log"
type => "nginx_access"
# beginning/end 是否从头读取文件, 默认从尾部读取
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
}
output {
# 输出到 ES 中, 自动按天创建索引
elasticsearch {
hosts => ["192.168.199.161:9200"]
index => "nginx-%{+YYYY.MM.dd}"
}
}
logstash 加载配置文件
/usr/share/logstash/bin/logstash -f nginx_access.conf
在浏览器中访问 http://ip:5601
点击 Add your data
按钮,Create index pattern
创建索引匹配规则,输入 nginx 可以看到下面已经匹配到一条索引
继续 Next step
下一步,选择 @timestamp
Time field,然后 Create index pattern 创建
左侧菜单点击 Discover
就可以看到 nginx 的访问日志啦
参考