ELK部署

本次采用最小化安装环境:
2c4g centos7 v7.6.2 操作系统盘50G
192.168.150.171 elk-1 Elasticsearch+kibana
192.168.150.172 elk-2 Elasticsearch
192.168.150.173 elk-3 Logstash
192.168.150.174 elk-4 filebeat+tomcat/nginx等

可以额外添加50G数据磁盘格式化挂载到/elk: (有问题 后续再弄)
参见博客:https://blog.youkuaiyun.com/weixin_44515412/article/details/119871922

一、Elasticsearch

全文搜索和分析引擎,支持分布式可实现高可用、提供 API 接口。

0、各服务器初始化
#修改主机名
# hostnamectl set-hostname ELK-1 && reboot #各服务器配置自己的主机名并重启
# hostnamectl set-hostname ELK-2
# hostnamectl set-hostname ELK-3

#关闭防火墙和 selinux

#各服务器配置本地域名解析:
# cat >> /etc/hosts <<EOF
192.168.150.171 elk-1
192.168.150.172 elk-2
192.168.150.173 elk-3
EOF

#各服务器时区同步
[root@elk-1 ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump wget ntpdate
[root@elk-1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@elk-1 ~]# echo "*/5 * * * * ntpdate time1.aliyun.com &> /dev/null && hwclock -w" >> /var/spool/cron/root
[root@elk-1 ~]# systemctl restart crond
[root@elk-1 ~]# reboot
1、171\172上安装elasticsearch
[root@elk-1 ~]# tar xvf elasticsearch-7.6.2-linux-x86_64.tar.gz -C /usr/local/
[root@elk-1 ~]# vim /usr/local/elasticsearch-7.6.2/config/elasticsearch.yml
cluster.name: ELK-Cluster #ELK 的集群名称,名称相同即属于是同一个集群
node.name: elk-node1 #本机在集群内的节点名称
path.data: /elk/data #数据保存目录
path.logs: /elk/logs #日志保存目录
bootstrap.memory_lock: true #服务启动的时候锁定足够的内存,防止数据写入swap
network.host: 0.0.0.0 #监听IP
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.150.171", "192.168.150.172"]
[root@elk-1 ~]# vim /usr/local/elasticsearch-7.6.2/config/jvm.options
22 -Xms2g
23 -Xmx2g #最小和最大内存限制
将 -XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC并重启

[root@elk-1 ~]# mkdir -p /elk/{data,logs}
[root@elk-1 ~]# useradd elasticsearch
[root@elk-1 ~]# chown elasticsearch.elasticsearch /elk/ -R
[root@elk-1 ~]# chown elasticsearch.elasticsearch /usr/local/elasticsearch-7.6.2/ -R
[root@elk-1 ~]# vim /etc/sysctl.conf
vm.max_map_count=262144
[root@elk-1 ~]# vim /etc/security/limits.conf
* 				soft	memlock 		unlimited	
* 				hard	memlock 		unlimited
*               soft    nofile          65536
*               hard    nofile          65536
[root@elk-1 ~]#su - elasticsearch #不支持用root启动
[elasticsearch@etc-1 ~]$/usr/local/elasticsearch-7.6.2/bin/elasticsearch
启动方式:./bin/elasticsearch 或者加上 -d,(或者 nohup ./bin/elasticsearch&) 已守护线程方式启动
#验证:
[elasticsearch@etc-1 ~]$ss -ntl
LISTEN      0      128               [::]:9200           [::]:*                  
LISTEN      0      128               [::]:9300           [::]:*  
#访问网址:192.168.150.171:9200和192.168.150.172:9200

报错处理:
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
https://blog.youkuaiyun.com/baidu_38225647/article/details/103359906
处理报错:
uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException
https://blog.youkuaiyun.com/qq_26975307/article/details/88651820
处理报错:
Exception in thread “main” java.nio.file.AccessDeniedException: /usr/local/elasticsearch-7.6.2
https://blog.youkuaiyun.com/weixin_42740530/article/details/113850703
处理报错:
Native controller process has stopped - no new native processes can be started
https://www.cnblogs.com/phpper/p/9803934.html
https://www.cnblogs.com/fogwang/p/12469874.html
报错处理:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
https://www.cnblogs.com/zhi-leaf/p/8484337.html

2、安装 elasticsearch 浏览器插件 head
实现对 elasticsearch 集群的状态监控与管理配置等功能。
下载地址:https://github.com/mobz/elasticsearch-head
谷歌浏览器-设置-扩展程序开发者模式-加载已解压的扩展程序(elasticsearch-Chrome浏览器插件-0.1.5_0)
#谷歌浏览器-选择该插件-连接http://192.168.150.172:9200/

3、监控 elasticsearch 集群状态

#(1)通过 shell 命令获取集群状态:
[root@elk-2 ~]#curl -sXGET http://192.168.150.171:9200/_cluster/health?pretty=true  #green表示运行正常,yellow表示副本分片丢失,red表示主分片丢失
#通过 python 对其中的信息进行分析
[root@elk-2 ~]#vim els-cluster-monitor.py
#!/usr/bin/env python
#coding:utf-8
#Author Zhang Jie
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
import subprocess
body = ""
false="false"
obj = subprocess.Popen(("curl -sXGET http://192.168.150.172:9200/_cluster/health?pretty=true"),shell=True,
stdout=subprocess.PIPE)
data = obj.stdout.read()
data1 = eval(data)
status = data1.get("status")
if status == "green":
 print("50")
else:
 print("100")
[root@elk-2 ~]#python els-cluster-monitor.py
50

#(2)zabbix 添加监控

Master 的职责:
统计各 node 节点状态信息、集群状态信息统计、索引的创建和删除、索引分配的管理、关闭 node 节点等
Slave 的职责:
从 master 同步数据、等待机会成为 Master

二、Logstash(173上安装)

通过插件实现日志收集和转发,支持日志过滤,支持普通log、自定义json格式的日志解析。

1、安装jdk8

下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

[root@elk-1 ~]# tar xvf jdk-8u261-linux-x64.tar.gz -C /usr/local/
[root@elk-1 ~]# ln -sv /usr/local/jdk1.8.0_261 /usr/local/jdk
[root@elk-1 ~]# ln -sv /usr/local/jdk/bin/java /usr/bin/
[root@elk-1 ~]# cat >> /etc/profile <<EOF
export HISTTIMEFORMAT="%F %T `whoami` "
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
EOF
[root@elk-1 ~]# source /etc/profile
[root@elk-1 ~]# java -version

2、安装Logstash

[root@elk-3 ~]#rpm -ivh logstash-7.6.2.rpm 
[root@elk-3 ~]#chown logstash.logstash /usr/share/logstash #权限更改为 logstash 用户和组,否则启动的时候日志报错

3、测试:
测试标准输入和输出:

[root@elk-3 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug }}' #标准输入和输出
hello  #输入测试
#输出显示:
{
      "@version" => "1", #事件版本号,一个事件就是一个 ruby 对象
          "host" => "etc-3",  #标记事件发生在哪里
       "message" => "hello",  #消息的具体内容
    "@timestamp" => 2021-11-15T04:49:09.315Z  #当前事件的发生时间
}

测试输出到文件:

[root@elk-3 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { file { path => "/tmp/log-%{+YYYY.MM.dd}messages.gz"}}'
hello
[root@elk-3 ~]#tail /tmp/log-2021.11.15messages.gz  #打开文件验证
{"@version":"1","@timestamp":"2021-11-15T04:52:19.138Z","message":"hello","host":"etc-3"}

测试输出到 elasticsearch:

[root@elk-3 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch {hosts => ["192.168.150.171:9200"] index => "mytest-%{+YYYY.MM.dd}" }}'
hello
test
es验证:
[root@elk-1 ~]# ll /elk/data/nodes/0/indices/
drwxrwxr-x 8 elasticsearch elasticsearch 65 Nov 15 13:59 3lymPRvJQMaPxq69eFFZHA
drwxrwxr-x 4 elasticsearch elasticsearch 29 Nov 15 15:46 Hb6lXolzSGyzyWPx_qxomg

4、日志查看

默认情况下日志会保存在以下两个位置
/var/log/messages
/usr/local/logstash/logs

三、kibana

通过接口调用 elasticsearch 的数据,并进行前端数据可视化的展现

安装:通过 rpm 包或者二进制的方式进行安装
rpm 方式安装:
[root@elk-1 ~]# rpm -ivh kibana-7.6.2-x86_64.rpm
[root@elk-1 ~]# vim /etc/kibana/kibana.yml 
server.port: 5601 #监听端口
server.host: "0.0.0.0" #监听地址
elasticsearch.hosts: ["http://192.168.150.171:9200","http://192.168.150.172:9200"]
i18n.locale: "zh-CN" #支持中文

#启动 kibana 服务并验证:
[root@elk-1 ~]# systemctl start kibana && systemctl enable kibana
[root@elk-1 ~]# ss -tnl | grep 5601
查看状态:
http://192.168.150.171:5601/status

#kibana验证数据:
management-kibana-索引模式-创建索引模式-输入索引名、时间戳-创建-discover验证(选择时间等)
#查看 head 插件显示的索引状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值