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

扫描二维码关注公众号,回复: 14457084 查看本文章

安装前准备:

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出现了问题 

猜你喜欢

转载自blog.csdn.net/tiny_du/article/details/109462178