跳到主要内容

2 篇博文 含有标签「ELK」

查看所有标签

EFK 二进制安装

· 阅读需 3 分钟

测试环境 EFK 搭建

上传软件包

主机放置目录
192.168.8.107/opt/
192.168.8.211/opt/
192.168.8.212/opt/

Elasticsearch 安装部署

解压elasticsearch并配置bin/elasticsearch.yml
cd /opt
tar -zxvf elasticsearch-7.7.0-linux-x86_64.tar.gz
mv elasticsearch-7.7.0-linux-x86_64 elasticsearch-7.7.0
cd elasticsearch-7.7.0/config
vim elasticsearch.yml

cluster.name: ELK-Cluster #ELK的集群名称,名称相同即属于是同一个集群
node.name: elk-node1 #本机在集群内的节点名称
path.data: /opt/elasticsearch-7.7.0/config/data #数据存放目录
path.logs: /opt/elasticsearch-7.7.0/config/data/log #日志保存目录
bootstrap.memory_lock: true #服务启动的时候锁定足够的内存,防止数据写入swap
network.host: 192.168.8.107 #监听的IP地址
http.port: 9200 #服务监听的端口
discovery.seed_hosts: ["192.168.8.107"] #单播配置一台即可
cluster.initial_master_nodes: ["elk-node1"]

配置内存限制
vim jvm.options

-Xms2g
-Xmx2g
创建用户以及数据目录
mkdir -p /opt/elasticsearch-7.7.0/config/{data,data/log}
groupadd elk
useradd -g elk elk
passwd elk
chown -R elk:elk /opt/elasticsearch-7.7.0 -R
su elk
cd bin/
./elasticsearch
# 启动报错:需要修改文件的最大打开数以及内存锁定
修改内核参数

vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft memlock unlimited
* hard memlock unlimited
修改最大线程数

vim /etc/security/limits.d/20-nproc.conf

*     soft    nproc    unlimited

vim /etc/sysctl.conf

vm.max_map_count = 655360

sysctl -p

reboot

启动服务
su elk
cd /opt/elasticsearch-7.7.0/bin/
./elasticsearch

netstat -nltup |grep 9200 #验证服务

Kibana 安装部署

解压部署
cd /opt
tar xf kibana-7.7.0-linux-x86_64.tar.gz
mv kibana-7.7.0-linux-x86_64 kibana-7.7.0
cd kibana-7.7.0/config/
修改配置文件

vim kibana.yml

server.port: 5601    #监听端口
server.host: "192.168.8.107" #监听地址
elasticsearch.hosts: ["http://192.168.8.107:9200"] #elasticsearch服务器地址

xpack.reporting.capture.browser.chromium.disableSandbox: true
xpack.reporting.capture.browser.chromium.proxy.enabled: false
xpack.reporting.enabled: false

i18n.locale: "zh-CN" #修改为中文
启动 Kibana
cd /opt/kibana-7.7.0/bin
nohup ./kibana --allow-root &
netstat -lntp | grep 5601 #验证

Filebeat 安装部署

安装在应用程序跑的服务器中:211、212

解压安装
cd /opt
tar xf filebeat-7.7.0-linux-x86_64.tar.gz
mv filebeat-7.7.0-linux-x86_64 filebeat-7.7.0
cd filebeat-7.7.0
修改配置文件

vim filebeat.yml

### Filebeat inputs
filebeat.inputs:
- type: log
enabled: true
paths:
- /mnt/opt/service_log/*.log
#配置多行日志合并规则,已时间为准,一个时间发生的日志为一个事件
multiline.pattern: '^\d{4}-\d{2}-\d{2}'
multiline.negate: true
multiline.match: after

### Filebeat modules
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false

### Kibana
setup.kibana:

setup.kibana.host: "http://192.168.8.107:5601"
setup.dashboards.enabled: true

### Outputs
#--- Elasticsearch output ---
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["192.168.8.107:9200"]
index: "filebeat-%{+yyyy.MM.dd}"

setup.template.name: "my-log"
setup.template.pattern: "my-log-*"
json.keys_under_root: false
json.overwrite_keys: true
#设置解析json格式日志的规则
processors:
- decode_json_fields:
fields: [""]
target: json
启动 Filebeat
nohup ./filebeat -e -c ./filebeat.yml &

Kibana 根据业务调整

http://192.168.8.107:5601/

添加常用的字段

  • @timestamp
  • host.hostname
  • log.file.path
  • message

EFK Docker 版搭建

· 阅读需 3 分钟

测试环境EFK搭建

Elasticsearch

  • 在指定节点上安装ES
# 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.12.0

# 运行容器
docker run -d -e ES_JAVA_POTS="-Xms1024m -Xmx1024m" -e "discovery.type=single-node" \
-p 9200:9200 -p 9300:9300 \
-m 4096M \
--name es7.12.0 docker.elastic.co/elasticsearch/elasticsearch:7.12.0

# 验证
docker ps -a | grep ela
docker logs -f CONTAINER ID

# 访问http://localhost:9200/ ,出现如下信息说明ElasticSearch 启动成功

Kibana

  • 在指定节点上安装Kibana
# 拉取镜像
docker pull docker.elastic.co/kibana/kibana:7.12.0

# 运行容器
docker run --link CONTAINER ID:elasticsearch \
-p 5601:5601 \
-m 2048M \
-d --name kibana7.12.0 docker.elastic.co/kibana/kibana:7.12.0
  • 修改配置
# 这里启动不一样的是多了 --link 选项,作用是将两个容器关联到一起可以互相通信,因为kibana到时候需要从ElasticSearch中拿数据。当然也可以通过 --network 创建自己的局域网连接各个容器。

# 这里需要配置kibana.yml,不然kibana默认通过localhost是找不到ES的。

# 进入容器命令行模式
docker exec -it 8180d5fdcdcf /bin/bash

# 修改kibana.yml文件
vi config/kibana.yml
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ] # 修改为es地址
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN" # 修改为中文

# 重启kibana容器
docker restart xxxx

# 访问 http://localhost:5601/ 如果成功进入界面,就说明启动成功了。

FileBeat

  • k8s-node1、k8s-node2、k8s-node3都需要安装
# 拉取镜像
docker pull docker.elastic.co/beats/filebeat:7.12.0

# 运行容器
## 此处先不运行,先把下面一步的配置文件修改后再run
docker run -d -v /root/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml -v /data/logs/:/data/logs/ --name filebeat7.12.0 docker.elastic.co/beats/filebeat:7.12.0
  • 修改配置文件
#拉取完成之后,先不着急启动,在启动之前需要完成先建立一份映射的配置文件filebeat.docker.yml,选择目录创建filebeat.docker.yml
#=========================== Filebeat inputs ==============
filebeat.inputs:

- type: log

enabled: true
##配置你要收集的日志目录,可以配置多个目录
paths:
- /data/logs/*.log

##配置多行日志合并规则,已时间为准,一个时间发生的日志为一个事件
multiline.pattern: '^\d{4}-\d{2}-\d{2}'
multiline.negate: true
multiline.match: after

#-------------------------- Kibana ---------

## 设置kibana的地址,开始filebeat的可视化
setup.kibana.host: "http://172.16.10.xxx:5601"
setup.dashboards.enabled: true

#-------------------------- Elasticsearch output ---------
output.elasticsearch:
hosts: ["http://172.16.10.xxx:9200"]
index: "filebeat-%{+yyyy.MM.dd}"

setup.template.name: "my-log"
setup.template.pattern: "my-log-*"
json.keys_under_root: false
json.overwrite_keys: true
##设置解析json格式日志的规则
processors:
- decode_json_fields:
fields: [""]
target: json