日志系统使用文档地址

站内搜索 [记录日志系统的安装->部署->配置->使用文档(3)]

服务器

ES, Logstash, Kibana

内存: 8G
磁盘: 500G
处理器: 4/8核
带宽: 2m

以上配置是原来写的,在之后的线上环境很快就得到了验证,结果就是直接崩溃。

建议每天产生 20-30GB 日志的环境至少需要以下配置:

  • 内存:16G
  • 磁盘:500GB-1TB(硬盘不值钱)
  • 处理器:4/8 核
  • 带宽:5M

Filebeat(被抓取服务所在机器)

略...

端口

  • ELK 服务器对外开放 5601
  • ELK 服务器对 Filebeat 所在服务器内网开放 5044

安装(单点)

安装完 Filebeat 之后,需要给 inputs 下配置文件基于 root 权限或者 go+w 权限:
chown root /etc/filebeat/inputs/* 或者 chown go+w /etc/filebeat/inputs/*

Filebeat(基于 Docker)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: '3'
services:
filebeat:
image: elastic/filebeat:7.13.2
container_name: filebeat
environment:
- TZ=Asia/Shanghai
volumes:
- /var/run/docker.sock:/host_docker/docker.sock
- /var/lib/docker:/host_docker/var/lib/docker
- /opt/log-server/logs:/usr/share/filebeat/logs
- /mydata/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
# filebeat注册表,记录上次扫描到哪里了
- /mydata/filebeat/registry:/usr/share/filebeat/data/registry
depends_on:
- logstash
user: root
links:
- logstash:logstash

Filebeat(基于 yum 源-官网)

被采集服务所在服务器

To add the Beats repository for YUM

1
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

Create a file with a .repo extension

/etc/yum.repos.d/ 目录下创建文件(例如 elastic.repo)并添加以下内容:

1
2
cd /etc/yum.repos.d/
vi elastic.repo
1
2
3
4
5
6
7
8
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安装 Filebeat

1
sudo yum install filebeat

配置开机自启

1
sudo systemctl enable filebeat

如果系统不使用 systemd,则运行:

1
sudo chkconfig --add filebeat

问题Exiting: error loading config file: config file ("/etc/filebeat/filebeat.yml") must be owned by the user identifier (uid=0) or root

解决方案见:https://www.elastic.co/guide/en/beats/libbeat/current/config-file-permissions.html

ELK(基于 Docker)

docker-compose.yml

1
2
cd /opt/elk
vi docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
version: '3'
services:
elasticsearch:
image: elasticsearch:7.14.0
container_name: elasticsearch
environment:
# 建议给总内存的50%(如果是8g以下那就算了)
- ES_JAVA_OPTS=-Xms4096m -Xmx4096m
- TZ=Asia/Shanghai
volumes:
- /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /mydata/elasticsearch/data:/usr/share/elasticsearch/data
- /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300
kibana:
image: kibana:7.14.0
container_name: kibana
links:
- elasticsearch:es
depends_on:
- elasticsearch
volumes:
- /mydata/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
environment:
- TZ=Asia/Shanghai
ports:
- 5601:5601
logstash:
image: logstash:7.14.0
container_name: logstash
environment:
- TZ=Asia/Shanghai
volumes:
- /mydata/logstash/conf.d:/usr/share/logstash/pipeline/conf.d
- /mydata/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
# - /mydata/logstash/logstash.template.json:/usr/share/logstash/templates/logstash.template.json
depends_on:
- elasticsearch
links:
- elasticsearch:es
ports:
- 5044:5044

配置(配置文件已标示注释)

Filebeat && Logstash && Elasticsearch

参考:配置文件详细介绍

配置用户

1
2
3
4
5
docker exec -it [es-id] bash
# 指定密码命令
./bin/elasticsearch-setup-passwords interactive
# 自动生成密码命令
./bin/elasticsearch-setup-passwords auto

各 user:

1
2
3
4
5
6
7
Changed password for user apm_system
Changed password for user kibana_system
Changed password for user kibana
Changed password for user logstash_system
Changed password for user beats_system
Changed password for user remote_monitoring_user
Changed password for user elastic

启动

Filebeat

启动服务:

1
sudo systemctl start filebeat

查看状态:

1
sudo systemctl status filebeat

ELK(cd 到 docker-compose 文件所在路径)

1
docker-compose up -d

验证一下(查看索引):

1
curl -XGET -H "Authorization:Basic base64Encode(user:password)" localhost:9200/_cat/indices

注意的几个点

  • 验证 Filebeat 成功连接 Logstash:INFO [publisher_pipeline_output] pipeline/output.go:151 Connection to backoff(async(tcp://logstash:5044)) established
  • Kibana 没有数据(或是 ES 没正确存储):8 成可能是你存储的数据结构和之前配置的 template.json 映射关系有差,比如我将 createTime 设置成 date 时候,docker logs [logstash id] 时候发现 400 了,提示转换失败

日志系统权限/角色配置

  • 管理员:all
  • index-management:负责建立索引模式
  • log-viewer:仅可查看日志

日志系统索引配置(以及开启日志流模式查看)

ES 日志定期自动清除策略 - Kibana Index Lifecycle Policies