ELK离线版搭建过程

 

ELK简介:

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat隶属于Beats。目前Beats包含四种工具:

    1. Packetbeat(搜集网络流量数据)
    2. Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
    3. Filebeat(搜集文件数据)
    4. Winlogbeat(搜集 Windows 事件日志数据)

本人小白,自己搭建ELK测试玩,以下为自身操作分享,欢迎各位查看指正,大神勿喷。

部署环境:

操作系统:Centos7.6

系统资源:双核4G

                 192.168.0.223(服务端):elasticsearch;kibana;filebeat

                 192.168.0.226(客户端):filebeat

安装前准备:

logstash 和filebeat都具有日志收集功能,filebeat更轻量,占用资源更少;

logstash是jvm跑的,资源消耗比较大,但logstash 具有filter功能,能过滤分析日志。

本文试验采用占用资源更小的filebeat来进行日志收集功能。

首先去ELK的官网上将ELK部署需要的rpm包文件,下载到本地,方便以下安装。

最好下载同一个版本的rpm包文件,否则安装配置的过程中可能会出现问题。

安装JDK

因为elasticsearch需要JDK环境,所以需要提前安装好JDK环境。安装JDK的步骤在此不做过多介绍。

安装elasticsearch

rpm --import GPG-KEY-elasticsearch
rpm -ivh elasticsearch-7.9.2-x86_64.rpm

 安装ES后,进入ES的配置文件,进行配置。

[root@elk ~]# egrep -v "#|^$" /etc/elasticsearch/elasticsearch.yml 
node.name: elk-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1","node-2"]
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"

 创建ES的数据存放目录和日志存放目录并赋予用户及组。

mkdir /var/lib/elasticsearch

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch

mkdir /var/log/elasticsearch

chown -R elasticsearch:elasticsearch /var/log/elasticsearch/

启动ES,并加入开机自启。

systemctl restart elasticsearch
systemctl enable elasticsearch

 在浏览器上访问,进行测试,出现下面的信息即为安装成功。

安装elasticsearch-head

git上下载elasticsearch-head并安装。

cd /var/lib/
git clone git://github.com/mobz/elasticsearch-head.git
cd /var/lib/elasticsearch-head/ 
npm run start &      #在后台运行

elasticsearch-head的端口默认为9100/tcp 

然后在浏览器访问进行测试。

 安装filebeat

rpm -ivh filebeat-7.9.2-x86_64.rpm

进入filebeat文件,进行配置

[root@elk filebeat]# egrep -v "#|^$" /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true                                                #是否启动
  paths:                                                           #上报日志文件路径
    - /var/log/*.log
    - /var/log/messages
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
setup.kibana:
output.elasticsearch:                                      #输出到ES
  hosts: ["192.168.0.223:9200"]                      #ES的地址
processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

 启动filebeat并加入到开机自启。

systemctl start filebeat

systemctl enable filebeat

 安装kibana

rpm -ivh kibana-7.9.2-x86_64.rpm

 进入kibana配置文件,进行配置

[root@elk filebeat]# egrep -v "#|^$" /etc/kibana/kibana.yml 
server.port: 5602                                                              #kibana的服务端口5602/tcp
server.host: "localhost"
elasticsearch.hosts: ["http://192.168.0.223:9200"]           #对应ES的地址及端口
i18n.locale: "zh-CN"                                                         #默认为英文,可以修改成中文显示。(部分字段显示不友好)

 启动kibana并且加入到开机自启

systemctl start kibana

systemctl enable kibana

 访问进行测试,部分功能是收费的,但是可以试用。

 添加filebeat索引进行显示。

 搜索日志进行显示。

可以在上方搜索主机IP,左侧可以选择筛选索引,选择显示字段等内容,右侧可以选择筛选日志时间等。

发现问题及解决

1、发现elasticsearch启动出现了问题。

[1]memory locking requested for elasticsearch process but memory is not locked

[2]the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

 解决:

原因:在/etc/elasticsearch/elasticsearch.yml 开启了 bootstrap.memory_lock: true 这个配置

elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true

官网的解释 是:发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。

所以最好限制住elasticsearch占用的内存情况,可选少用swap

# vim /etc/security/limits.conf

 

elk soft nofile 65536
elk hard nofile 65536
elk soft nproc 2048
elk hard nproc 2048
elk soft memlock unlimited
elk hard memlock unlimited

第二个问题就是注意 elasticsearch.yml的node.name的名称。

2、发现filebeat服务出现了问题

连接不上,是因为elasticsearch.ym那个node出现了问题 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值