基于ARM架构的黄河服务器搭建ELK大数据分析平台

一、准备工作

1、环境配置

[root@bogon ~]# yum -y remove java-1.8.0-openjdk-headless.x86_64    #卸载yum方式安装的jdk
[root@bogon ~]# yum install -y java    #安装jdk
[root@bogon ~]# java -version    #验证
[root@bogon ~]# yum -y install wget
[root@bogon ~]# yum -y install vim

2、调整防火墙

systemctl stop firewalld
# 或者采用以下方式
firewall-cmd --zone=public --add-port=5601/tcp --permanent    #防火墙添加5601端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent    #防火墙添加9200端口

二、部署ELK

1、安装Elasticsearch

获取安装文件到 /usr/local/

[root@bogon ~]# cd /usr/local   #切换到非root目录
[root@bogon local]# wget https://mirrors.huaweicloud.com/elasticsearch/7.8.0/elasticsearch-7.8.0-linux-aarch64.tar.gz
[root@bogon local]# tar -zxvf elasticsearch-7.8.0-linux-aarch64.tar.gz    #解压

修改文件 /usr/local/elasticsearch-7.8.0/config/elasticsearch.yml,取消注释以下内容所在行

  • cluster.name: elk-Cluster #ELK的集群名称,名称相同即属于是同一个集群
  • node.name: elk-node1 #本机在集群内的节点名称
  • path.data: /elk/data #数据存放目录
  • path.logs: /elk/logs #日志保存目录
  • network.host:192.168.1.199 #本机IP地址
  • http.port:9200 #端口
  • cluster.initial_master_nodes: [“elk-node1”] #节点名称

创建用户以及用户组

[root@bogon local]# groupadd es_group    #新建用户组
[root@bogon local]# useradd -g es_group es_user    #向组内添加用户
[root@bogon local]# chown -R es_user:es_group elasticsearch-7.8.0    #授权
[root@bogon local]# ll    #查看文件夹授权是否成功

创建数据和日志文件夹并授权

[root@bogon local]# mkdir -p /elk/{data,logs}    #创建
[root@bogon local]# chown es_user:es_group /elk/ -R
[root@bogon local]# chmod 777 -R /elk #使elasticsearch对 elk 文件夹有读写权限

以非root用户身份运行elasticsearch

[root@bogon local]# su es_user    #切换用户
[es_user@bogon local]# ./elasticsearch-7.8.0/bin/elasticsearch    #运行

验证elasticsearch是否配置正确

  • 在浏览器访问:http://192.168.1.199:9200/
  • 或在终端输入命令:
curl 192.168.1.199:9200
基于ARM架构的黄河服务器搭建ELK大数据分析平台
参考结果图

监控elasticsearch集群状态:

http://192.168.1.199:9200/_cluster/health?pretty=true

  • 如果status为green,表示在正常运行
  • 如果status为yellow,表示副本分片丢失
  • 如果status为red,表示主分片丢失

常见问题

#问题1:
ERROR: [2] bootstrap checks failed[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least[65536]
#解决方案:
编辑 /etc/security/limits.conf,追加以下内容;
[root@bogon local]# vi /etc/security/limits.conf //添加, 【注销后并重新登录生效】
* soft nofile 655350
* hard nofile 655360
* soft nproc 1024
* hard nproc 2048
####################################解释####################################
# soft nproc :单个用户可用的最大进程数量(超过会警告);
# hard nproc :单个用户可用的最大进程数量(超过会报错);
# soft nofile:可打开的文件描述符的最大数(超过会警告);
# hard nofile:可打开的文件描述符的最大数(超过会报错);
############################################################################
此文件修改后需要重新登录用户,才会生效

#问题2:
ERROR:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#解决方案:
编辑 /etc/sysctl.conf,追加以下内容:
[root@bogon local]# vi /etc/sysctl.conf
############################################################################
vm.max_map_count=655360
############################################################################
保存后,执行:
sysctl -p

2、安装logstash

获取安装文件:

[root@bogon ~]# cd /usr/local
[root@bogon local]# wget https://mirrors.huaweicloud.com/logstash/7.8.0/logstash-7.8.0.tar.gz
[root@bogon local]# tar -zxvf logstash-7.8.0.tar.gz    #解压

aarch64-linux/文件夹下缺少platform.conf文件,在ARM架构的服务器上运行时会导致代码异常报错,所以我们需要增加paltform.conf文件,并重新打包jar文件

[root@bogon ~]# cd /usr/local/logstash-7.8.0/logstash-core/lib/jars
[root@bogon jars]# mkdir jruby-complete-9.2.11.1
[root@bogon jars]# cp jruby-complete-9.2.11.1.jar jruby-complete-9.2.11.1/
[root@bogon jars]# mv jruby-complete-9.2.11.1.jar jruby-complete-9.2.11.1.jar.bak
[root@bogon jars]# unzip -d jruby-complete-9.2.11.1/ jruby-complete-9.2.11.1/jruby-complete-9.2.11.1.jar 
[root@bogon jars]# rm -f jruby-complete-9.2.11.1/jruby-complete-9.2.11.1.jar
[root@bogon jars]# cp jruby-complete-9.2.11.1/META-INF/jruby.home/lib/ruby/stdlib/ffi/platform/aarch64-linux/types.conf jruby-complete-9.2.11.1/META-INF/jruby.home/lib/ruby/stdlib/ffi/platform/aarch64-linux/platform.conf
[root@bogon jruby-complete-9.2.11.1]# cd jruby-complete-9.2.11.1
[root@bogon jruby-complete-9.2.11.1]# zip -r jruby-complete-9.2.11.1.jar *
[root@bogon jruby-complete-9.2.11.1]# mv jruby-complete-9.2.11.1.jar ../
[root@bogon jruby-complete-9.2.11.1]# cd ../
[root@bogon jars]# rm -rf jruby-complete-9.2.11.1

运行测试

  • 测试标准输出
[root@bogon jars]# cd /usr/local
[root@bogon local]# ./logstash-7.8.0/bin/logstash -e 'input { stdin {} } output { stdout { codec => rubydebug} }'  
hello world    #输入

{
      "@version" => "1",    #事件版本号,一个事件就是一个ruby对象
    "@timestamp" => 2020-08-21T04:30:35.106Z,    #当前事件发生的事件
          "host" => "linux-elk1.exmaple.com",    #标记事件发生在哪里
       "message" => "hello world"    #消息的具体内容
}

新建配置文件,读取指定日志文件,发送到elasticsearch

[root@bogon local]# vim /etc/logs/system-log.conf
input {
    file {
        path => "/var/log/messages"    #日志路径
        type => "systemlog"            #类型,自定义,在进行多个日志收集存储时可以通过该项进行判断输出
        start_position => "beginning"        #logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成 "beginning",logstash 进程就从头开始读取,类似 less +F 的形式运行。
        stat_interval => "2"    #logstash 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒
    }
}

output {
    elasticsearch {
        hosts => ["192.168.1.199:9200"]        #elasticsearch服务器地址
        index => "logstash-%{type}-%{+YYYY.MM.dd}"    #索引名称
    }
}

指定文件启动logstash

[root@bogon local]# ./logstash-7.8.0/bin/logstash -f /etc/logs/system-log.conf

3、安装kibana

获取安装文件

[root@bogon ~]# cd /usr/local
[root@bogon local]# wget https://mirrors.huaweicloud.com/kibana/7.8.0/kibana-7.8.0-linux-x86_64.tar.gz
[root@bogon local]# tar -zxvf kibana-7.8.0-linux-x86_64.tar.gz    #解压

由于在ARM架构服务器上运行,所以需要将 /usr/local/kibana-7.8.0-linux-x86_64/ 下的node文件夹替换为ARM版本的

[root@bogon local]# cd kibana-7.8.0
[root@bogon kibana-7.8.0]# mv node node.bak
[root@bogon kibana-7.8.0]# wget https://mirrors.huaweicloud.com/nodejs/v10.21.0/node-v10.21.0-linux-arm64.tar.gz
[root@bogon kibana-7.8.0]# mv node-v10.21.0-linux-arm64 node

修改文件 /usr/local/kibana-7.8.0-linux-x86_64/config/kibana.yml.yml,取消注释以下内容所在行

server.host: "192.168.1.199"    #监听端口
server.port: 5601    #监听地址
elasticsearch.hosts: ["http://192.168.1.199:9200"]    #elasticsearch服务器地址
i18n.locale: "zh-CN"    #修改为中文

授权

[root@bogon kibana-7.8.0]# cd ../
[root@bogon local]# chown -R es_user:es_group kibana-7.8.0-linux-x86_64

以非root用户身份运行kibana

[root@bogon local]# su es_user    #切换用户
[es_user@bogon local]# ./kibana-7.8.0-linux-x86_64/bin/kibana    #运行

访问 http://192.168.1.199:5601 ,查看效果

基于ARM架构的黄河服务器搭建ELK大数据分析平台
访问效果图

4、通过logstash收集系统message日志

  • 在 /usr/local/logstash-7.8.0/config 下创建随意名称的 logstash 配置文件 example.conf
  • 需要注意的问题是:通过logstash收集别的日志文件,前提需要logstash用户对被收集的日志文件有读的权限并对要写入的文件有写的权限
  • 特别需要注意的是,索引名称不能出现大写符号,不然会报错
[root@bogon local]# vim /usr/local/logstash-7.8.0/config/example.conf
input {
    file {
        path => "/var/log/messages"    #日志路径
        type => "systemlog"    #类型,自定义,在进行多个日志收集存储时可以通过该项进行判断输出
        start_position => "beginning"    #logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成 "beginning",logstash 进程就从头开始读取,类似 less +F 的形式运行。
        stat_interval => "1"    #logstash 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒
    }
}

output {
    elasticsearch {
        hosts => ["192.168.1.199:9200"]    #elasticsearch服务器地址
        index => "example-%{type}-%{+YYYY.MM.dd}"    #索引名称
    }
}

检测配置文件是否有语法错误

[root@bogon local]# logstash -f  /usr/local/logstash-7.8.0/config/example.conf -t

修改日志文件的权限

[root@bogon local]# chmod 777 /var/log/messages

重启logstash

[root@bogon local]# logstash -f  /usr/local/logstash-7.8.0/config/example.conf

访问 http://192.168.1.199:5601 ,定义索引模式,查看数据

基于ARM架构的黄河服务器搭建ELK大数据分析平台
定义索引模式并查看数据

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(1)
witersen的头像witersen
上一篇 2020年11月3日 上午11:14
下一篇 2020年11月14日 下午8:06

发表回复

登录后才能评论