阿里云服务器安装ELK 不成功的教训

前提,安装java8 的环境

一: 安装elasticsearch : 

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

参考: https://blog.csdn.net/ProMonkey_chen/article/details/80489000

下载: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.zip 

解压: 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 还可能遇到的问题: 参考: https://blog.csdn.net/qq_21387171/article/details/53577115 

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

关闭: kill -9 pid

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

二: 安装: kibana  参考  https://www.linuxidc.com/Linux/2016-06/132616.htm

启动: 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

外网测试: http://外网ip: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 安装成功后的测试可以参考: https://blog.csdn.net/chenleiking/article/details/73563930

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

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
}

参考https://stackoverflow.com/questions/50093667/filebeat-index-template-json-for-elasticsearch-6-2-4 对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分钟就搭建完成了,,,血的教训,,多采用公司成熟的架构,,安装软件时 多采用手动安装,避免太多的坑了.

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值