ELK部署流程

ELK部署(简单部署流程)

简介

ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。

ElasticSearch简称ES,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
Logstash是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、解析,并将数据发送给ES。
Kibana为 Elasticsearch 提供了分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度表格、图形。

ELK常见的几种架构

1 Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。

2 Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。

3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如kafka) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。

架构图:
ELK架构图

安装部署

我这里介绍的是第二种架构模式

安装包下载地址:https://www.elastic.co/cn/downloads/

fileBeat安装(需要收集项目日志的服务器上都要安装)

1.下载fileBeat安装包

提供两种方式:
(1)官方下载地址:https://www.elastic.co/cn/downloads/beats/filebeat
(2)在线下载:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.1-x86_64.rpm
sudo rpm -vi filebeat-7.2.1-x86_64.rpm
备注:这里下载的是7.2.1版本,使用者也可以自己看情况安装其他版本,版本号参见官网

亲身经历:
这里我推荐使用rpm安装,因为filebeat源码安装配置systemctl启动的service配置很复杂;

1. wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.1-x86_64.rpm
2. sudo rpm -vi filebeat-7.2.1-x86_64.rpm
## 启动
3. systemctl start filebeat
## 设置开机启动, 可参照官网设置 https://www.elastic.co/guide/en/beats/filebeat/current/running-with-systemd.html
4. systemctl enable filebeat.service
## 默认查看日志方式
5. journalctl -u filebeat.service
#####-------------修改默认日志地址----begin------------
## 1、创建目录
mkdir /etc/systemd/system/filebeat.service.d
## 2、创建文件
vi /etc/systemd/system/filebeat.service.d/debug.conf
## 3、在文件中添加
Environment="BEAT_LOG_OPTS=-path.logs /var/log/filebeat"
## 4、保存退出
## 刷新服务
systemctl daemon-reload
## 重启服务
service filebeat restart
#####-------------修改默认日志地址---end-------------

2.配置说明

   修改/etc/filebeat/filebeat.yml
   可以删掉原来的,新建filebeat.yml,贴上下面的内容,然后修改下面的修改点
`## 修改 #-- 修改备注了要修改的地方,其他地方按文档中的配置
#=========================== Filebeat inputs =============================
#####filebeat 配置如下内容###
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /opt/web/authentication/logs/*.log  #--修改点--#-- 修改日志地址--
  tags: ["JS"] 
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}\s' 
  multiline.negate: true  
  multiline.match: after
  fields:
    appName: center  #--修改点--#-- 项目名称
- type: log   #--修改点--#-- 如果只有一个,可以把这整块去掉
  enabled: true
  paths:
     - /opt/web/sys/*.log  #--修改点--#--  修改日志地址
  tags: ["JS"]
  tail_files: true
  multiline.pattern: '^\d{4}-\d{2}-\d{2}\s'
  multiline.negate: true
  multiline.match: after
  fields:
    appName: resource #--修改点--#--项目名称
 #============================= Filebeat modules ===============================

#==================== Elasticsearch template setting ==========================

#================================ General =====================================

#============================== Dashboards =====================================

#============================== Kibana =====================================

#============================= Elastic Cloud ==================================

#================================ Outputs =====================================
# 注释输出到es中的配置
#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:   #把这行注释掉
 # hosts: ["192.168.100.23:9200"]   #把这行注释掉

#----------------------------- Logstash output --------------------------------
output.logstash:  #这行注释打开
  hosts: ["localhost:5044"]  ## 内网  #--修改点--#-- ## logstash的ip地址和端口号
    

#================================ Processors =====================================
processors:
  - add_host_metadata: 
      netinfo.enabled: true   
  - drop_fields: 
      fields: ["agent","ecs","host.id","@version","host.hostname","host.os.codename","host.os.family","host.os.platform"]
  - add_cloud_metadata: ~

#================================ Logging =====================================

#============================== Xpack Monitoring ===============================


#================================= Migration ==================================

启动命令

## 启动
systemctl start filebeat
## 设置开机启动
systemctl enable filebeat.service
## 查看日志
journalctl -u filebeat.service

Logstash 安装

下载logstash安装包

提供两种方式:
(1)官方下载地址:https://www.elastic.co/cn/downloads/logstash
(2)在线下载:wget https://artifacts.elastic.co/downloads/logstash/logstash-7.7.0.tar.gz
sudo tar tar -zxvf logstash-7.7.0.tar.gz
备注:这里下载的是7.7.0版本,使用者也可以自己看情况安装其他版本,版本号参见官网

配置说明

在安装目录的config文件夹下创建logstash.conf 文件,内容如下:

input {
  beats {
    port => 5044
  }
}
filter {
  grok {
    #match => { "message" => '(?<logtime>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) \[.*?\]\s(?<level>(INFO|DEBUG|ERROR|WARN))\s.*?\)\s-\s.*' }
    # 收集的日志格式 如 2020-01-16 23:58:25,409 ERROR  c.a.n.c.config.impl.ClientWorker(Slf4jLogger.java:157)
    match => { "message" => '(?<logtime>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) .*?(?<level>(INFO|DEBUG|ERROR|WARN))' }
  }
  date {
    match => ["logtime","yyyy-MM-dd HH:mm:ss,SSS"]
  }
}
output {
# 在收集的时候指定一个tag ,同时指定一个appName
 if "JS" in [tags] {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      index => "%{[fields][appName]}-%{+YYYY.MM.dd}"
    }
  }
}

启动命令

// 需要进去目录下的bin文件夹下,使用相对路径启动
nohup ./logstash -f ../config/logstash.conf &
查看配置是否启动

进入安装目录下的logs文件夹下,使用 tail -f logstash-plain.log
如若成功显示以下界面:
配置成功启动说明

Elasticsearch 安装

下载elasticsearch安装包

提供两种方式:
(1)官方下载地址:https://www.elastic.co/cn/downloads/elasticsearch
(2)在线下载:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
sudo tar tar -zxvf logstash-6.2.4.tar.gz
备注:这里下载的是6.2.4版本,使用者也可以自己看情况安装其他版本,版本号参见官网

配置说明

      vi /usr/local/elasticsearch-6.2.4/config/elasticsearch.yml
 #配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: my-es
#节点名称
node.name: node-1
#设置索引数据的存储路径
path.data: /usr/local/elasticsearch/data
#设置日志的存储路径
path.logs: /usr/local/elasticsearch/logs
#设置当前的ip地址,通过指定相同网段的其他节点会加入该集群中
network.host: 0.0.0.0
#设置对外服务的http端口
http.port: 9200
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["127.0.0.1","10.10.10.34:9200"]

再执行启动命令

    sh /usr/local/elasticsearch-6.2.4/bin/elasticsearch   

常见的启动错误

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

修改/etc/security/limits.conf文件 在文件末尾添加如下

 [es@localhost root]$ su root
[root@localhost~]# vi /etc/security/limits.conf
  •   hard    nofile           65536
    
  •   soft     nofile           65536
    

[2]: max number of threads [3818] for user [es] is too low, increase to at least [4096]

[root@localhost ~]# vi /etc/security/limits.d/20-nproc.conf
  •        soft            nproc     4096
    
  •        hard          nproc     4096
    
            root       soft            nproc     unlimited
    

[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

/etc/sysctl.conf文件末尾添加 vm.max_map_count = 2621441

[root@localhost ~]# vi  /etc/sysctl.conf
[root@localhost~]# sudo sysctl -p /etc/sysctl.conf//立即生效

测试elstaicsearch 是否连通

[es@localhost root]$ sh/usr/local/elasticsearch-6.2.4/bin/elasticsearch -d     //加-d就是启动后台进程
[es@localhost root]$ ps -ef|grep elasticsearch
curl  http://localhost:9200

成功显示如下
成功显示图

Kibana

下载kibana安装包

提供两种方式:
(1)官方下载地址:https://www.elastic.co/cn/downloads/kibana
(2)在线下载:wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-linux-x86_64.tar.gz
tar -zxvf kibana-6.3.2-linux-x86_64.tar.gz
备注:这里下载的是6.3.2版本,使用者也可以自己看情况安装其他版本,版本号参见官网

配置说明

   vim config/kibana.yml
# 放开注释,将默认配置改成如下:

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
kibana.index: ".kibana"

启动

bin/kibana

效果
效果图

参考:
filebeat源码安装方式设置开机启动

一、在/etc/init.d目录下新建文件filebeat
注意修改 5 filebeat 安装地址

#!/bin/sh
# chkconfig: 2345 10 90
# description: filebeat

FB_HOME=/var/local/filebeat-7.2.1-linux-x86_64
case "$1" in
start)
    # su elk<<!
    cd $FB_HOME
    ./filebeat &
!
    echo "filebeat startup"
    ;;  
stop)
    es_pid=`ps aux|grep filebeat | grep -v 'grep filebeat' | awk '{print $2}'`
    kill -9 $es_pid
    echo "filebeat stopped"
    ;;  
restart)
    es_pid=`ps aux|grep filebeat | grep -v 'grep filebeat' | awk '{print $2}'`
    kill -9 $es_pid
    echo "filebeat stopped"
    # su elk<<!
    cd $FB_HOME
    ./filebeat &
!
    echo "filebeat startup"
    ;;  
*)
    echo "start|stop|restart"
    ;;  
esac
 
exit $?

二、保存退出,赋予执行权限

chmod +x filebeat

三、添加到开机启动任务

chkconfig --add filebeat

四、如果不设置开机启动的话,也可以使用

> service filebeat start/stop/restart

来操作

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值