CentOS7 安装 ELK
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