环境准备

基础环境介绍

操作系统 部署应用 应用版本号 IP地址 主机名
CentOS 7.4 Elasticsearch/Logstash 6.4.3 192.168.1.1 elk1
CentOS 7.4 Elasticsearch/Logstash/Redis 6.4.3 192.168.1.2 elk2
CentOS 7.4 Elasticsearch/Kibana 6.4.3 192.168.1.3 elk3

基础环境配置

安装基本软件包以及配置hosts

yum -y install vim net-tools epel-release wget

cat /etc/hosts

192.168.1.1 elk1
192.168.1.2 elk2
192.168.1.3 elk3

修改文件描述符以及内核参数

vim /etc/sysctl.conf

vm.max_map_count = 655360

sysctl -p /etc/sysctl.conf

vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

  不需要重启,退出重连即可显示最新配置。使用ulimit -n查看。

安装及配置Java环境

yum -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64

vim /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
export JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

创建应用所需用户

user add elk

关闭防火墙

systemctl stop firewalld.service

下载所需应用安装包

Elasticsearch

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz

Logstash

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3.tar.gz

Kibana

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.3-linux-x86_64.tar.gz

应用部署

部署elasticsearch服务

tar xf elasticsearch-6.4.3.tar.gz -C /usr/local/

chown -R elk:elk /usr/local/elasticsearch-6.4.3/

mkdir /data ; chown -R elk:elk /data

vim /usr/local/elasticsearch-6.4.3/config/elasticsearch.yml

cluster.name: elk_cluster
node.name: elk1
node.attr.rack: r1
path.data: /data/
path.logs: /usr/local/elasticsearch-6.4.3/logs
node.master: true
node.data: true
network.host: elk1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["elk1","elk2","elk3"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.commit_timeout: 100s
discovery.zen.publish_timeout: 100s
discovery.zen.ping_timeout: 100s
discovery.zen.fd.ping_timeout: 100s
discovery.zen.fd.ping_interval: 10s
discovery.zen.fd.ping_retries: 10
action.destructive_requires_name: true
http.cors.allow-origin: "*"
http.cors.enabled: true

以下是Elasticsearch配置项内容详解。

cluster.name: elasticsearch
配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。 node.name: "Franz Kafka"
节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。 node.master: true
指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。 node.data: true
指定该节点是否存储索引数据,默认为true。 index.number_of_shards: 5
设置默认索引分片个数,默认为5片。 index.number_of_replicas: 1
设置默认索引副本个数,默认为1个副本。 path.conf: /path/to/conf
设置配置文件的存储路径,默认是es根目录下的config文件夹。 path.data: /path/to/data
设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:
path.data: /path/to/data1,/path/to/data2 path.work: /path/to/work
设置临时文件的存储路径,默认是es根目录下的work文件夹。 path.logs: /path/to/logs
设置日志文件的存储路径,默认是es根目录下的logs文件夹 path.plugins: /path/to/plugins
设置插件的存放路径,默认是es根目录下的plugins文件夹 bootstrap.mlockall: true
设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit -l unlimited`命令。 network.bind_host: 192.168.0.1
设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。 network.publish_host: 192.168.0.1
设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。 network.host: 192.168.0.1
这个参数是用来同时设置bind_host和publish_host上面两个参数。 transport.tcp.port: 9300
设置节点间交互的tcp端口,默认是9300。 transport.tcp.compress: true
设置是否压缩tcp传输时的数据,默认为false,不压缩。 http.port: 9200
设置对外服务的http端口,默认为9200。 http.max_content_length: 100mb
设置内容的最大容量,默认100mb http.enabled: false
是否使用http协议对外提供服务,默认为true,开启。 gateway.type: local
gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。 gateway.recover_after_nodes: 1
设置集群中N个节点启动时进行数据恢复,默认为1。 gateway.recover_after_time: 5m
设置初始化数据恢复进程的超时时间,默认是5分钟。 gateway.expected_nodes: 2
设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。 cluster.routing.allocation.node_initial_primaries_recoveries: 4
初始化数据恢复时,并发恢复线程的个数,默认为4。 cluster.routing.allocation.node_concurrent_recoveries: 2
添加删除节点或负载均衡时并发恢复线程的个数,默认为4。 indices.recovery.max_size_per_sec: 0
设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。 indices.recovery.concurrent_streams: 5
设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。 discovery.zen.minimum_master_nodes: 1
设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4) discovery.zen.ping.timeout: 3s
设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。 discovery.zen.ping.multicast.enabled: false
设置是否打开多播发现节点,默认是true。 discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]
设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。

su elk

/usr/local/elasticsearch-6.4.3/bin/elasticsearch

  以上方式启动不会将进程运行在后台,适用于进程调试使用。

nohup /usr/local/elasticsearch-6.4.3/bin/elasticsearch &

  将进程放置后台运行。

ss -lnt

State       Recv-Q Send-Q                        Local Address:Port                                       Peer Address:Port
LISTEN 0 100 164.52.7.154:25 *:*
LISTEN 0 128 *:2525 *:*
LISTEN 0 128 *:52580 *:*
LISTEN 0 128 ::ffff:192.168.1.1:9300 :::*
LISTEN 0 128 :::52580 :::*

curl -X GET "192.168.1.1:9200/_cat/health?v"

epoch      timestamp cluster     status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1542005103 01:45:03 elk_cluster green 3 3 0 0 0 0 0 0 - 100.0%

  查看状态正常。

配置Redis服务

yum -y install redis

vim /etc/redis.conf

bind elk2
maxmemory 1gb
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

ss -lnt

State       Recv-Q Send-Q                        Local Address:Port                                       Peer Address:Port
LISTEN 0 128 192.168.1.2:6379 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:52580 *:*
LISTEN 0 128 ::ffff:192.168.1.2:9200 :::*
LISTEN 0 128 ::ffff:192.168.1.2:9300 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::52580 :::*

  查看Redis服务已经启动,后续我们可以配置Logstash使用Redis。

配置Logstash服务

tar xf logstash-6.4.3.tar.gz -C /usr/local/

chown -R elk:elk /usr/local/logstash-6.4.3/

vim /usr/local/logstash-6.4.3/config/logstash.yml

log --> Redis

input {
file {
path => "/var/log/messages"
type => "syslog"
start_position => "beginning"
} } output {
redis {
data_type => "channel"
key => "logstash-*"
host => "192.168.1.2"
port => 6379 } }

Redis --> Elasticsearch

input {
redis {
data_type => "channel"
key => "logstash-*"
host => "192.168.1.2"
port => 6379 } }
output {
elasticsearch {
hosts => "elk1:9200"
index => "logstash-%{type}-%{+YYYY.MM.dd}"
}
}

vim /usr/local/logstash-6.4.3/config/logstash.yml

node.name: elk1
path.data: /usr/local/logstash-6.4.3/data
http.host: "elk1"
path.logs: /usr/local/logstash-6.4.3/logs

配置Kibana服务

tar xf kibana-6.4.3-linux-x86_64.tar.gz -C /usr/local/

chown -R elk:elk /usr/local/kibana-6.4.3-linux-x86_64/

touch /var/run/kibana.pid

chown -R /var/run/kibana.pid

su elk

nohup /usr/local/kibana-6.4.3-linux-x86_64/bin/kibana &

ss -lnt

State       Recv-Q Send-Q                        Local Address:Port                                       Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 192.168.1.3:5601 *:*
LISTEN 0 128 *:52580 *:*
LISTEN 0 128 ::ffff:192.168.1.3:9200 :::*
LISTEN 0 128 ::ffff:192.168.1.3:9300 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::52580 :::*

  Kibana已经部署并启动成功。

  可以展示Elasticsearch中的数据。

搭建ELK集群的更多相关文章

  1. 通过docker搭建ELK集群

    单机ELK,另外两台服务器分别有一个elasticsearch节点,这样形成一个3节点的ES集群. 可以先尝试单独搭建es集群或单机ELK https://www.cnblogs.com/lz0925 ...

  2. 搭建ELK 集群 rpm安装

    上次是使用docker搭建的ELK,三个软件都跑在一台机器的一个docker中,这个就当是测试环境吧. 下面开始搭建正式环境下的ELK集群. 三台服务器 A:logstash B:Elasticsea ...

  3. Docker 搭建 ELK 集群步骤

    前言 本篇文章主要介绍在两台机器上使用 Docker 搭建 ELK. 正文 环境 CentOS 7.7 系统 Docker version 19.03.8 docker-compose version ...

  4. 搭建elk集群 disabled in libcurl elasticsearch-6.2.2 更新license 版本

    0.logstash的部分配置 output { stdout {codec => rubydebug} elasticsearch { hosts => ["172.31.25 ...

  5. 【杂记】docker搭建ELK 集群6.4.0版本 + elasticsearch-head IK分词器与拼音分词器整合

    大佬博客地址:https://blog.csdn.net/supermao1013/article/category/8269552 docker elasticsearch 集群启动命令 docke ...

  6. 搭建Elk集群搭建 ES-filebeat-logstrash-kibana

    一 .基础环境 软件 版本 作用 Linux/Win Server2012 CentOs/Win Server2012 服务器环境 JDK 1.8.0_151 运行环境依赖 Elasticsearch ...

  7. ELK集群搭建

    基于5台虚拟机,搭建ELK集群. 方案: 1. ELK是日志分析平台,而不是一款软件,是一整套解决方案,是三个软件产品的首字母缩写,ELK分别代表: Elasticsearch:负责日志检索和储存 L ...

  8. elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  9. Kibana安装(图文详解)(多节点的ELK集群安装在一个节点就好)

    对于Kibana ,我们知道,是Elasticsearch/Logstash/Kibana的必不可少成员. 前提: Elasticsearch-2.4.3的下载(图文详解) Elasticsearch ...

随机推荐

  1. 当前页面刷新和动态添加控件的jquery事件绑定on

    当前页面刷新(console): location.reload() 给动态添加的控件添加js事件(委托): <ul> <li>菜单一</li> <li> ...

  2. 微信小程序播放视频发送弹幕效果

    首先.先来看一下效果图 然后.再看一下官方文档API对video的说明 相关属性解析: danmu-list:弹幕列表 enable-danmu:是否显示弹幕 danmu-btn:弹幕按钮 contr ...

  3. OPNET仿真软件资料合集

    1. OPEN中国代理商业 http://www.credit-top.com/page/Default.asp?pageID=105

  4. 为什么要使用日志管理?syslog和Windows事件日志

    为什么要使用日志管理?syslog和Windows事件日志 日志管理 - 确保网络安全的先决条件 日志给予您有关网络活动的第一手信息.日志管理确保日志中隐藏的网络活动数据转换为有意义的可操作的安全信息 ...

  5. 18 包 ,logging模块使用

    包: 1 什么是包: 包就是一个包含有__init__.py文件的文件夹 宝本质就是一种模块,即包就是用包导入使用的,包内部包含的文件也都是用来被导入使用 2 为什么要用包 包就是文件夹,那文件加就是 ...

  6. 整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建

    整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建 1.   介绍 Commonservice-system是一个大型分布式.微服务.面向企业的JavaEE体系快速研发平台,基于模 ...

  7. Le Chapitre VIII

    J'appris bien vite à mieux connaître cette fleur. Il y avait toujours eu, sur la planète du petit pr ...

  8. python3 提示 name ‘reload’ is not defined

    import importlib importlib.reload(sys)

  9. laravel 5.1 使用Eloquent ORM 操作实例

    Laravel 的 Eloquent ORM 提供了更优雅的ActiveRecord 实现来和数据库的互动. 每个数据库表对应一个模型文件. 数据库配置 .env文件(也可以直接修改config/da ...

  10. 屏幕抓取程序 (位图DDB的例子)

    屏幕抓取程序的意思是将整个屏幕图显示在应用程序的用户区中,等价于截图.对桌面窗口的操作:首先得知道桌面窗口的宽和高,获取宽和高需要利用窗口的设备句柄,而获取设备句柄需要知道窗口句柄,这一系列的连串关系 ...