博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云服务器安装ELK 不成功的教训
阅读量:3647 次
发布时间:2019-05-21

本文共 4641 字,大约阅读时间需要 15 分钟。

前提,安装java8 的环境

一: 安装elasticsearch : 

参考 安装之后发现启动不了,,找不到配置文件,尝试着修改,但没有成功,索性就放弃这种方式,改为手动安装: 一开始参考 安装的elasticsearch-5.4.0 版本, 返现启动之后,,cpu 的占用非常高,服务器很卡顿,然后又换成了elasticsearch-6.2.4 版本,,没有再出现卡顿的状况,,我也不知道为啥TT

参考: 

下载: wget  

解压: unzip elasticsearch-6.2.4.zip 

然后我们通过如下命令进入bin目录: cd elasticsearch-6.2.4/bin/

接下来我们就可以启动我们的单节点集群: ./elasticsearch

注意:elasticsearch不支持root用户进行启动,用sdev 启动 所以我们需要在重新添加一个普通用户并赋予相应等权限,命令如下:

chown -R sdev:sdev /opt/elasticsearch-6.2.4

但是启动后又报错: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]意思是 es能创建的文件数目太少,

解决方案:

编辑 /etc/security/limits.conf,追加以下内容;

* soft nofile 262144
* hard nofile 262144   // * 表示给所有用户起作用
此文件修改后需要重新登录用户,才会生效

 

本机测试: curl http://127.0.0.1:9200  返回一个json 字符串,就表示成功过了,,

外网测试:  浏览器访问: 外网ip+端口号  也是返回下面的json

{name: "KBetdDz",cluster_name: "elasticsearch",cluster_uuid: "-E-U912CRtCNEFp_NWM-Ww",version: {number: "6.2.4",build_hash: "ccec39f",build_date: "2018-04-12T20:37:28.497551Z",build_snapshot: false,lucene_version: "7.2.1",minimum_wire_compatibility_version: "5.6.0",minimum_index_compatibility_version: "5.0.0"},tagline: "You Know, for Search"}

安装ES 还可能遇到的问题: 参考:  

启动: ./bin/elasticsearch  -d  后台运行,,  

关闭: kill -9 pid

配置文件 /opt/elasticsearch-6.2.4/config/elasticsearch.yml

二: 安装: kibana  参考  

启动: sudo service kibana start

位置 : /opt/kibana

配置⽂文件 vi /opt/kibana/config/kibana.yml 

server.host: "0.0.0.0"          开放防火墙和安装组的5600端口

本机测试: curl http://127.0.0.1:5601

外网测试: 

 

三:生成SSL证书;

sudo vi /etc/ssl/openssl.cnf

subjectAltName = IP: 外网ip

cd /etc/pki/tls

sudo openssl req -config /etc/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt   // ⽣成公钥和私钥 ,filebeat 要访问ELK server 的时候需要再配置⽂件加上公钥.

四:安装logstash

安装位置:/opt/logstash

发送log 的配置⽂文件位置:/etc/logstash/conf.d

创建一个叫 02-beats-input.conf 的配置文件,并配置 “filebeat” 的input:

sudo vi /etc/logstash/conf.d/02-beats-input.conf

input {

     beats {

           port => 5044

           ssl => true

           ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"

           ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"

     }

}

保存,退出。指定的 beats 输入会监听 TCP 端口5044,它将使用我们前面创建的 SSL 证书和私钥。

现在来创建 10-syslog-filter.conf 配置文件,在这里面我们会添加 syslog 信息的 filter:

sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

filter {

        if [type] == "syslog" {

        grok {

              match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %          {SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }

               add_field => [ "received_at""%{@timestamp}" ]

                add_field => [ "received_from""%{host}" ]

         }

         syslog_pri { }

         date {

              match => [ "syslog_timestamp""MMM  d HH:mm:ss""MMM dd HH:mm:ss" ]

         }

       }

}

保存,退出。这个 filter 查询 syslog 类型的 logs(通过 Filebeat),而且它会使用grok来解析传入的 syslog 日志,使之结构化和可查询。

创建 30-elasticsearch-output.conf 配置文件: sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

output {

         elasticsearch {

         hosts => ["127.0.0.1:9200"]

          sniffing => true

          manage_template => false

          index => "ads-metadata-test-%{+YYYY.MM.dd}” //用来⾃自定义index

          document_type => "%{[@metadata][type]}"

          }

}

保存,退出。这个 output 主要是配置 Logstash 去存储运行在 localhost:9200上的Elasticsearch beat 数据,这里有一个命名要求,由被使用的 beat 来命名(在这个情况下是filebeat)。

启动logstash : sudo service logstash configtest  报错找不到java 路径,,在bin/logstash 和bin/logstash.lib.sh 的第一行添加java路径 export JAVA_HOME=/usr/local/lib/jdk1.8.0_191

尝试了logstash-6.5.4,logstash-5.6.10 ,logstash-2.4.0 版本,启动./bin/logstash 的时候,,服务器都很卡,,

之后莫名其妙的 sudo service logstash configtest  就返回 Configuration OK 了

sudo service logstash restart  能启动logstash  但是  service logstash start  启动不了logstash,,奇怪了

加载的配置文件: /etc/logstash/conf.d

输出的日志:  /var/log/logstash/logstash.log

logstash 安装成功后的测试可以参考: 

在阿里云服务器上我安装的logstash-2.4.0 ,logstash一大缺点就是资源消耗(默认的堆大小是 1GB) 运行logstash之后,服务器就非常的卡,,参考: ,

Filebeat 是一个轻量级的日志传输工具,它的存在正弥补了 Logstash 的缺点:Filebeat 作为一个轻量级的日志传输工具可以将日志推送到中心 Logstash。在版本 5.x 中,Elasticsearch 具有解析的能力(像 Logstash 过滤器)— Ingest。这也就意味着可以将数据直接用 Filebeat 推送到 Elasticsearch,并让 Elasticsearch 既做解析的事情,又做存储的事情。

 

cd beats-dashboards-*

./load.sh   beat 索引没有添加成功,

报错:{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}

既然我们用filebeat ,,所以beat的索引不添加,,也没问题

五: 安装Filebeat: 

 

加载 filebeat-index-template.json 时报错:  原因是该json对于ES6.2.4来说 已经过时,

{  "error" : "Content-Type header [application/x-www-form-urlencoded] is not supported",  "status" : 406}

参考 对json格式 字段进行修改,就可以了,,另外注意 /etc/filebeat 目录下的filebeat-index-template.json 也要更新

curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json -H 'Content-Type: application/json'

 

最后logstash 采用2.4.1 ,但是发现与elasticsearch6.2.4 不兼容,,很坑啊,,  各种问题,,

决定采用公司服务器的elk配置,,TT  20分钟就搭建完成了,,,血的教训,,多采用公司成熟的架构,,安装软件时 多采用手动安装,避免太多的坑了.

 

 

 

 

 

 

 

 

转载地址:http://hneyn.baihongyu.com/

你可能感兴趣的文章
Windows10系统PHP安装及Apache配置支持PHP解析教程
查看>>
Ubuntu下使用docker配置nginx
查看>>
Ubuntu下Nginx+PHP7-fpm的配置
查看>>
小白学习JavaSE-day02
查看>>
小白学习JavaSE-day05-类与对象
查看>>
小白学习JavaSE-day06-类的继承
查看>>
小白学习JavaSE-day07之抽象类
查看>>
小白学习之JavaSE-day09-String与基本类型、包装类型的转换,StringBuffer的使用
查看>>
idea安装vue插件,新建文件没有Vue Component解决方法
查看>>
Linux之进程管理相关命令
查看>>
Linux虚拟机内如何安装Docker
查看>>
Docker容器内如何安装mysql
查看>>
SpringSecurity-模拟数据库认证
查看>>
vue整合ElementUI(适合新手快速入门)
查看>>
MySQL逻辑架构以及工作流程的简述
查看>>
CodeForces C2. Exam in BerSU (hard version)
查看>>
CodeForces 1183D. Candy Box (easy version)
查看>>
java日期操作java.util.Calendar
查看>>
java简单日期转字符串,字符串转日期
查看>>
本地文件 推送到 gitHub 教程
查看>>