CentOS7 安装 ELK

作者: siediyer 分类: linux 发布时间: 2021-10-19 12:08

ELK是一个成熟的日志系统,主要功能有收集、分析、检索,详细见 elastic官网

本文主要介绍如何在CentOS7下安装最新版本的ELK,当然现在docker已经有完全配置成功的elk容器,安装配置非常方便,但是如果你想自己从安装jdk开始,那这篇博客将能够帮助到你。

安装前了解一下

操作系统及各组件版本

  • centos-7-x86_64
  • java8
  • elasticsearch-7.15.1
  • kibana-6.2.4
  • logstash-6.2.4

禁用SELinux

[root@localhost ~]# vim /etc/sysconfig/selinux

把 SELINUX=enforcing 改为 SELINUX=disabled。这一步具体原因我不清楚,但是在公司安装成功,但是晚上回去在自己电脑上再安装一遍发现最后在浏览器登录kibana始终都是报Nginx502Bad,确认所有步骤都没有问题,最后就是因为漏掉这项配置没有改,改完OK!

java

下载

[root@localhost ~]# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.rpm"

下载链接在 oracle官网,当然如果你愿意使用java8并且这里的链接可以使用,那么就不需要到oracle官网找jdk的下载链接了。

安装

[root@localhost ~]# rpm -ivh jdk-8u171-linux-x64.rpm

查看java是否安装成功

[root@localhost ~]# java -version
java version "1.8.0_171"

第一次安装的时候,因为考虑到jdk是向下兼容的,所以尝试了java10,结果在安装logtash的时候失败了,折腾了会还是老老实实的装回了java8

elasticsearch

导入秘钥

[root@localhost ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

下载

[root@localhost ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.1-x86_64.rpm

elasticsearch,kibana,logstash的最新下载地址都在这里,当然如果你愿意使用elk7.15.1并且这个的链接可以使用,那么就不需要到官网找下载链接了

安装

[root@localhost ~]# rpm -ivh elasticsearch-7.15.1-x86_64.rpm

判断安装是否成功

curl 127.0.0.1:9200
[root@siediyer-com ~]# rpm -ivh elasticsearch-7.15.1-x86_64.rpm
警告:elasticsearch-7.15.1-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中...                          ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级/安装...
   1:elasticsearch-0:7.15.1-1         ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
 sudo systemctl daemon-reload
 sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
 sudo systemctl start elasticsearch.service
Created elasticsearch keystore in /etc/elasticsearch/elasticsearch.keystore
[root@siediyer-com ~]# sudo systemctl start elasticsearch.service

^C
[root@siediyer-com ~]# curl 127.0.0.1:9200
{
  "name" : "siediy-com",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "QYMRB45ORXuiEP9SAyV-1Q",
  "version" : {
    "number" : "7.15.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "83c34f456ae29d60e94d886e455e6a3409bba9ed",
    "build_date" : "2021-10-07T21:56:19.031608185Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

配置

[root@localhost ~]# vim /etc/elasticsearch/elasticsearch.yml

取消43、59行的注释,行号不一定准确,但一定是下面这几项

bootstrap.memory_lock: true
http.port: 9200

启动

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable elasticsearch
[root@localhost ~]# systemctl start elasticsearch
[root@localhost ~]# systemctl restart elasticsearch
[root@localhost ~]# netstat -plntu

最后通过 netstat -plntu 查看是否elasticsearch进程是否启动成功,如果有9200的端口这一行输出了那就代表启动成功,如果没有可能需要重启下虚拟机。

logstash

下载
[root@localhost ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.rpm
安装
[root@localhost ~]# rpm -ivh logstash-6.2.4.rpm
启动
[root@localhost ~]# systemctl enable logstash
[root@localhost ~]# systemctl start logstash

设置data的目录

 # 创建/data/ls-data目录,用于logstash数据的存放

# 创建/data/ls-data目录,用于logstash数据的存放 
mkdir -p /data/ls-data

# 修改该目录的拥有者为logstash
chown -R logstash:logstash /data/ls-data

设置log的目录
#  创建/data/ls-log目录,用于logstash日志的存放
mkdir -p /log/ls-log
# 修改该目录的拥有者为logstash
chown -R logstash:logstash /log/ls-log

修改配置文件logstash.yml
vim /etc/logstash/logstash.yml

根据下面的内容进行修改,wq保存。
# 设置数据的存储路径为/data/ls-data
path.data: /data/ls-data

# 设置管道配置文件路径为/etc/logstash/conf.d
path.config: /etc/logstash/conf.d

# 设置日志文件的存储路径为/log/ls-log
path.logs: /log/ls-log

启动Logstash
# 启动
systemctl start logstash
# 查看状态
systemctl status logstash
# 设置开机启动 
systemctl enable logstash

测试安装是否成功
# 查看下logstash的安装目录
rpm -ql logstash
 # 创建一个软连接,每次执行命令的时候不用在写安装路径(yum安装是在/usr/share下)
ln -s /usr/share/logstash/bin/logstash /bin/
# 执行logstash的命令
logstash -e 'input { stdin { } } output { stdout {} }'

等待片刻后出现“The stdin plugin is now waiting for input:”,输入“abc”回车,有返回的输出。

 ctrl+c退出。

如果标准输出还有elasticsearch中都需要保留,看下面

# 192.168.12.16是试验elk的ip

/usr/share/logstash/bin/logstash -e ‘input { stdin { } } output { elasticsearch { hosts => [“192.168.12.16:9200”] } stdout { codec => rubydebug }}’

等待片刻后出现“The stdin plugin is now waiting for input:”,输入“test”回车,返回下面标准的输出。

 


kibana

下载
[root@localhost ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-x86_64.rpm
安装
[root@localhost ~]# rpm -ivh kibana-6.2.4-x86_64.rpm

搜索RPM包
[root@localhost ~]# rpm -ql kibana
默认是装在/usr/share/kibana/下。
# 修改kibana的配置文件
[root@localhost ~]# vim /etc/kibana/kibana.yml

取消2、7、21行的注释,行号不一定准确,但一定是下面这几项

#kibana页面映射在5601端口
server.port: 5601

#允许所有ip访问5601端口
server.host: "0.0.0.0"

#elasticsearch所在的ip及监听的地址
elasticsearch.url: "http://localhost:9200"

kibana.index: ".kibana"

给kibana添加代理

upstream kib {
   server 127.0.0.1:5601;
}

server {
    listen       80;
    server_name  kib.siediy.com;
    access_log  /www/wwwlogs/kib.access.log;
    error_log  /www/wwwlogs/kib.error.log;

    include enable-php-74.conf;    

    location / {
        proxy_set_header   Host             $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass   http://kib;
        proxy_read_timeout 120;
        proxy_ignore_client_abort on;
    }
}

启动

[root@localhost ~]# systemctl enable kibana
[root@localhost ~]# systemctl start kibana
[root@localhost ~]# netstat -plntu

和elasticsearch一样,最后通过netstat -plntu查看kibana是否启动成功,如果有端口号为5601的输出那就代表kibana启动成功了。

浏览器访问kibana

配置本地host

如果你的电脑是win10,并且安装目录在C盘,编辑文件C:\Windows\System32\drivers\etc\hosts添加这一行

192.168.93.133 elk-stack.co

打开端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --add-port=81/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

现在就可以本地通过浏览输入elk-stack.co,访问kibana了!
但是如果出现 lookup elk-stack.co on 127.0.0.1:53: no such host,可能是host文件的修改还没有生效,重启一下电脑就可以,如果重启还是不行参考这里,实在不行就通过虚拟机的ip地址直接访问就行了

查看es

如果出现这两张图那就安装成功啦!

ELK的功能非常强大,自己在逐步学习中,但是发现除了看官方文档似乎很难找的好的学习资料了,英文不好看起来虽然痛苦但是看懂还有有收获的,所以我把我的学习过程记录下来,希望可以帮助正在学习ELK的你。

参考资料

https://www.howtoforge.com/tutorial/how-to-install-elastic-stack-on-centos-7/
https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-7
https://www.elastic.co/guide/index.html

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Title - Artist
0:00