CentOS7安装部署ELK6.2.4

CentOS7安装部署ELK6.2.4(Elasticsearch+logstash+redis+beats+kibana+elasalert)

功能

该架构可将多台机器的日志收集起来,进行存储、搜索、分析、可视化管理、监控

ELK各组件功能

Elasticsearch:存储、搜索、分析数据
logstash:Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
redis:内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件
beats:全品类采集器
beats种类:
Filebeat:轻量型日志采集器,用于转发和汇总日志与文件。
Metricbeat:用于从系统和服务收集指标。Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据,从 CPU 到内存,从 Redis 到 Nginx,不一而足。
Packetbeat:是一款轻量型网络数据包分析器,能够将主机和容器中的数据发送至 Logstash 或 Elasticsearch。
Auditbeat:收集您 Linux 审计框架的数据,监控文件完整性。Auditbeat 实时采集这些事件,然后发送到 Elastic Stack 其他部分做进一步分析。
Heartebeat:通过主动探测来监测服务的可用性。通过给定 URL 列表,Heartbeat 仅仅询问:网站运行正常吗?Heartbeat 会将此信息和响应时间发送至 Elastic 的其他部分,以进行进一步分析。
Functionbeat:在作为一项功能部署在云服务提供商的功能即服务 (FaaS) 平台上后,Functionbeat 即能收集、传送并监测来自您的云服务的相关数据。
kibana:Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。
Elasalert:是一个简单的框架,用于从Elasticsearch中的数据中发出异常,spikes或其他感兴趣的模式的警报。

架构

ES集群:elk01(192.168.1.1)、elk02(192.168.1.2)、elk03(192.168.1.3)
redis集群:master:elk01、salve:elk02、elk03
logstash和beats:其中一台机器安装或者都安装启动均可以
kibana:其中一台机器安装或者都安装启动均可以,只要收集其中一台es的数据就可以

1. 安装配置Elasticsearch6.2.4

1)下载安装包
https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/6.2.4/elasticsearch-6.2.4.rpm
2)安装配置(3台机器都需要)
[root@elkt01 ~]# rpm -ivh elasticsearch-6.2.4.rpm
[root@elkt01 ~]# mkdir /elk/elk01
[root@elk01 ~]# chown elasticsearch;elasticsearch /elk/elk01
[root@elk01 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: elk
node.name: elktest
path.data: /elk/elk01 //数据存放目录,不同节点目录名不同
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true //禁用swap
network.host: 192.168.1.1 //es服务器IP,不同节点IP不同
http.port: 9200 //es服务器端口
transport.tcp.port: 9300
discovery.seed_hosts: [“elk01“、”elk02“、”elk03“”] //es服务器发现主机初始列表
discovery.zen.minimum_master_nodes: 2 //其中一个节点down,集群依然运行,自动将分片分配给其他节点
node.max_local_storage_nodes: 2
action.auto_create_index: true //自动创建index
[root@elk01 ~]# vim /etc/elasticsearch/jvm.options
-Xms30g // Set Xmx and Xms to no more than 50% of your physical RAM
-Xmx30g
-XX:HeapDumpPath=/elk/elk01 //在内存不足异常时将堆转储到该目录
[root@elk01 ~]# vim /etc/security/limits.conf //永久生效
soft nofile 65535 //打开文件的最大数量
hard nofile 65535
soft nproc 4096 //创建的线程数至少为4096
hard nproc 8192
[root@elk01 ~]# ulimit -n 65535 //临时设置打开文件的最大数量
[root@elk01 ~]# ulimit –a //查看是否生效
注:如果是systemd而非systemctl,则需要通过以下方式修改限制
[root@elk01 ~]# systemctl edit elasticsearch //
[Service]
LimitMEMLOCK=infinity
[root@elk01 ~]# systemctl daemon-reload

swap对性能和节点稳定性非常不利,应该不惜一切代价加以避免。它会导致垃圾回收持续几分钟而不是几毫秒,并且会导致节点响应缓慢,甚至与集群断开连接
[root@elk01 ~]# swapoff –a //临时禁用swap
[root@elk01 ~]# cat /etc/fstab将swap注释掉
[root@elk01 ~]# vim /etc/elasticsearch/elasticsearch.yml
bootstrap.memory_lock: true

Elasticsearch使用mmapfs目录存储其索引。默认操作系统对mmap计数的限制可能太低,这可能导致内存不足异常
[root@elk01 ~]# sysctl -w vm.max_map_count=524288 //临时修改mmap限制
[root@elk01 ~]# vim /etc/sysctl.conf //永久修改mmap限制
vm.max_map_count=524288
重启服务器之后查看是否生效:
[root@elk01 ~]# sysctl vm.max_map_count
vm.max_map_count = 524288

3)启动服务(3台机器都需要)
[root@elk01 ~]# chkconfig --add elasticsearch
[root@elk01 ~]# systemctl daemon-reload
[root@elk01 ~]# systemctl enable elasticsearch.service
[root@elk01 ~]# systemctl start elasticsearch.service
此时可以web访问 http://192.168.1.1:9200
在这里插入图片描述

2. 安装配置redis4.0.9

1)下载
http://download.redis.io/releases/redis-4.0.9.tar.gz
2)elk01主节点安装配置
tar zxvf redis-4.0.9.tar.gz -C /usr/local/etc/
vim /usr/local/etc/redis-4.0.9/redis.conf
在这里插入图片描述
[root@elk01 ~]# cd /usr/local/etc/redis-4.0.9/src/
[root@elk01 src]# make & make install
3)启动服务
[root@elk01 src]# redis-server /usr/local/etc/redis-4.0.9/redis.conf
4)进入redis查看keys
[root@elk01 src]# redis-cli
127.0.0.1:6379> keys *
“syslog”
5)elk02和elk03安装配置redis
tar zxvf redis-4.0.9.tar.gz -C /usr/local/etc/
vim /usr/local/etc/redis.conf (配置文件与master不同之处如下,其余相同)
slaveof 192.168.1.1 6379
masterauth 123456
redis-server /usr/local/etc/redis-4.0.9/redis.conf
[root@elk02 src]# redis-cli
127.0.0.1:6379> keys *
“syslog”

3. 安装配置logstash6.2.4

1)下载
https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/6.2.4/logstash-6.2.4.rpm
2)安装配置(其中一台机器安装即可)
rpm -ivh logstash-6.2.4.rpm
[root@elk01 ~]# vim /etc/logstash/logstash.yml
node.name: elk01
path.data: /var/lib/logstash
pipeline.workers: 8
pipeline.batch.size: 1000
pipeline.batch.delay: 50
pipeline.ordered: auto
log.level: info
path.logs: /var/log/logstash
[root@elk01 ~]# vim /etc/logstash/jvm.options
-Xms4g
-Xmx4g
3)测试标准输入和输出
[root@elk01 ~]# cd /usr/share/logstash/bin/
./logstash -e ‘input { stdin {}} output { stdout {codec => rubydebug}}’
输入123456
输出:
{
“message” => “123456”,
“@version” => “1”,
“host” => “elk01”,
“@timestamp” => 2020-08-11T02:39:48.704Z
}
4)测试输出到文件
[root@elk01 ~]# vim /etc/logstash/conf.d/logstash-sample.conf
input {
stdin {}
}
output {
file {
path => “/tmp/test20200811.log”
}
}
[root@elk01 ~]# ./logstash -f /etc/logstash/conf.d/logstash-sample.conf //开启服务
5)将redis接收到的数据输出到es
[root@elk01 ~]# vim /etc/logstash/conf.d/logstash-sample.conf
input {
redis {
port => “6379”
host => “elk01”
data_type => “list”
key => “syslog”
password => “123123”
}
}
filter {
grok {
match => { “message” => “%{SYSLOGPAMSESSION}” }
}
}
output {
elasticsearch {
hosts => [“http://elk01:9200”,“http://elk02:9200”,“http://elk03:9200”]
index => “logstash-%{+YYYY.MM.dd}”
}
}
6)验证配置
[root@elk01 ~]# cd /usr/share/logstash/bin/
[root@elk01 bin]# ./logstash -f /etc/logstash/conf.d/logstash-sample.conf --config.test_and_exit
7)开启服务
[root@elk01 ~]# systemctl daemon-reload
[root@elk01 ~]# systemctl enable logstash.service
[root@elk01 ~]# systemctl start logstash.service
8)查看数据是否传输到es
curl -XGET http://elk01:9200/_cat/indices | grep logstash

4. 客户端安装配置Auditbeat

1)下载
https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/6.2.4/auditbeat-6.2.4-x86_64.rpm
2)安装配置
rpm -ivh auditbeat-6.2.4-x86_64.rpm
[root@elk01 ~]# vim /etc/auditbeat/auditbeat.yml
在这里插入图片描述
禁用elasticsearch,开启输出到redis
在这里插入图片描述
3)验证配置
[root@elk01 bin]# auditbeat test config –e
4)开启服务
[root@elk01 ~]# systemctl daemon-reload
[root@elk01 ~]# systemctl enable auditd.service
[root@elk01 ~]# systemctl start auditd.service
5)查看rules
[root@elk01 ~]# auditbeat show auditd-rules
-a never,exit -S all -F pid=27838
-w /bin/rm -p x -k exec

5. 客户端安装配置Filebeat

1)下载
https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/6.2.4/filebeat-6.2.4-x86_64.rpm
2)安装配置
rpm -ivh filebeat-6.2.4-x86_64.rpm
vim /etc/filebeat/filebeat.yml
在这里插入图片描述
禁用elasticsearch,开启输出到redis
在这里插入图片描述
3)启动服务
[root@elk01 ~]# systemctl daemon-reload
[root@elk01 ~]# systemctl enable filebeat.service
[root@elk01 ~]# systemctl start filebeat.service

6. 服务器端安装配置Kibana

1)下载
https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/6.2.4/kibana-6.2.4-x86_64.rpm
2)安装
rpm -ivh kibana-6.2.4-x86_64.rpm
[root@elk01 ~]# vim /etc/kibana/kibana.yml
server.port: 5601
server.host: “0.0.0.0”
server.maxPayloadBytes: 1048576
server.name: “elk01”
elasticsearch.hosts: [“http://elkt01:9200”]
kibana.index: “.kibana”
elasticsearch.requestTimeout: 30000
ops.interval: 5000
3)启动服务
[root@elk01 ~]# systemctl daemon-reload
[root@elk01 ~]# systemctl enable kibana.service
[root@elk01 ~]# systemctl start kibana.service
如果启动后web无法打开,需将elasticsearch重启再启动kibana

7. 服务器端安装配置Elasalert

1)Python环境
[root@elk01 ~]# python3 --version
Python 3.6.8
[root@elk01 ~]# pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
You have mail in /var/spool/mail/root
2)下载安装
查看需要的pip包以及版本
在这里插入图片描述
在这里插入图片描述
离线安装:
在官网 https://github.com/Yelp/elastalert将requirement.txt和requirement-dev.txt文件下载到elk01和一台可以连接外网的服务器,在可以连接外网的服务器使用以下命令下载pip包到/tmp目录
python3 -m pip download --destination-directory /tmp/ -r requirements.txt
python3 -m pip download --destination-directory /tmp/ -r requirements-dev.txt
将包传到elk01的/elk/tools/目录下,在elk01运行以下命令安装pip包
pip3 install --no-index --find-links=/elk/tools/ -r /elk/tools/requirements.txt
pip3 install --no-index --find-links=/elk/tools/ -r /elk/tools/requirements-dev.txt
pip3 install elastalert
3)配置
创建index
elastalert-create-index
New index name (Default elastalert_status)
Name of existing index to copy (Default None)
New index elastalert_status created
Done!
[root@elk01 ~]# vim /opt/elastalert-0.2.4/config.yaml
rules_folder: example_rules
run_every:
minutes: 1
buffer_time:
minutes: 15
es_host: 192.168.1.1
es_port: 9200
writeback_index: elastalert_status
writeback_alias: elastalert_alerts
alert_time_limit:
days: 2
从官网下载rules文件
https://github.com/Yelp/elastalert/tree/master/example_rules
修改文件,设置邮件报警,当logstash-*匹配到的index中message含有Package temperature above threshold发送邮件报警
在这里插入图片描述
4)测试配置正确与否
elastalert-test-rule --config config.yaml example_rules/example_frequency.yaml
5)启动服务
python3 -m elastalert.elastalert --verbose --rule example_frequency.yaml
创建服务文件
f
启动服务
[root@elk01 ~]# systemctl start elastalertd.service
6)收到邮件报警
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值