单机版 Elasticsearch&Kibana&Filebeat 安装与配置

前言

ELK 对于日志管理来说毫无疑问是最好的选择,但有的时候觉得 Logstash 比较的笨重,相反 Filebeat 也不失为一个好的选择。

此次安装的版本为 7.15.0

安装

对于几个组件的安装都是非常的简单,可以直接利用官方打好的包就好

Elasticsearch 安装文档

Kibana 安装文档

Filebeat 安装文档

安装时建议通过 RPM 包安装,这样能固定版本减少一些兼容性问题如:

1
2
3
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.0-x86_64.rpm
shasum -a 512 kibana-7.15.0-x86_64.rpm
sudo rpm --install kibana-7.15.0-x86_64.rpm

配置

Elasticsearch

如果只是单机版的话 Elasticsearch 配置倒是不用过多修改,接下来配置一下 Elasticsearch 开启密码访问就可以了

设置密码文档

安全配置参考

1
xpack.security.enabled: true # 普通的安全设置

最后再通过下面命令设置各个用户的密码

1
$ /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

上面命令会设置各个内置用户的密码

内置用户文档

Kibana

Kibana 只需要配置如下几个项目即可

1
2
3
4
5
6
server.port: 5601 # 端口
server.host: "0.0.0.0" # 允许远程连接
elasticsearch.hosts: ["http://localhost:9200"] # ES的地址
elasticsearch.username: "kibana_system" # 上面设置的用户和密码
elasticsearch.password: "password"
i18n.locale: "zh-CN" # 页面支持中文

Filebeat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["localhost:9200"]
username: "elastic"
password: "elastic"
index: "filebeat-%{+yyyy.MM.dd}"
indices:
- index: "filebeat-nginx-access-%{+yyyy.MM.dd}"
when.equals:
fields.type: nginx.access
- index: "filebeat-nginx-error-%{+yyyy.MM.dd}"
when.equals:
fields.type: nginx.error

setup.ilm.enabled: false # 索引生命周期
setup.ilm.check_exists: false
setup.template.enabled: true # 索引模版
setup.template.name: "filebeat"
setup.template.pattern: "filebeat-*"

对于 Filebeat 的设置,这里的 username 需要用 elastic 用户。如果用 beats_system 用户的话会提示 403 无权限。

具体可以参考:Security error with beats_system account and Filebeat with system module

Filebeat Module

nginx 为例打开 nginx.accessnginx.error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vi /etc/filebeat/modules.d/nginx.yml

access:
enabled: true
var.paths: ["/var/log/nginx/access.log"]
input:
fields:
type: nginx.access

error:
enabled: true
var.paths: ["/var/log/nginx/error.log"]
input:
fields:
type: nginx.error

索引

进入 Kibana 管理页面,新建索引
Management->Stack Management->索引模式->创建索引模式

Pipeline

配置到索引时就已经可以在 Kibana 中看到有 nginx 默认的日志进来,但如果我们有自定义的日志格式,就需要用到 Pipeline

Pipeline 所存放的位置 /usr/share/filebeat/module/nginx/access/ingest/pipeline.yml

也可通过开发工具查询 GET _ingest/pipeline/filebeat-7.15.0-nginx-access-pipeline

Grok Debugger