ELK(elasticsearch + logstash+kibana首字母缩写) 是比较好用的数据分析系统
(完整过程,并投入使用....待完善......)
Zen discovery是elasticsearch默认的内部发现模块
# 设置节点之间交互的tcp端口,默认为9300
transport.tcp.port: 9300
节点发现:
单播方式(6.x.x默认只支持单播发现机制,不支持多播方式,以前的版本支持)
#设置集群中master节点的初始化列表,可以通过这些节点来自动发现新加入集群的节点(:冒号后有空格)
discovery.zen.ping.unicast.hosts: [“node-1:9300”, ”node-2:9300”, ”node-3:9300”]
有其他节点依次加入即可
配置主节点和数据节点:
node.master: false # 每一个选项配置冒号后都有一个空格
node.data: true
node.master: true 有资格成为主节点
node.data: false
node.master: true
node.data: false
node.master: false ---即不作主节点
node.data: false ---也不存储数据
主节点的选取的配置
# 如果没有这种配置,遭受网络故障的集群就有可能将集群分为两个独立的集群--脑裂
形成一个集群,有主节点资格并互相连接的节点的最小数目。
discovery.zen.minimun_master_nodes: 2 设置为至少2个节点才能形成一个集群
例如:
10个节点,此值取(10/2)+1= 6 至少有6个节点才能组成集群
3个节点,此值取(3/2)+1 = 2 至少为2个节点
配置单播
transport.tcp.port: 9300
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts:
["node-1:9300", "node-2:9300","node-3:9300"]
discovery.zen.minimun_master_nodes: 2
cd /tools
tar -zxvf elasticsearch-6.5.4.tar.gz
mv elasticsearch-6.5.4 /usr/local 程序一般都安装在该目录下面
Caused by: java.lang.RuntimeException: can not run elasticsearch as root elasticsearch不能运行在root用户下面
useradd elk
chown -R elk:elk elk
chown -R elk:elk elasticsearch-6.5.4
su - elk 切换到elk这个用户下面
[elk@node-1 bin]$ ./elasticsearch 启动es报错
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
使用root账号在该文件末尾添加
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
vi /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p 让刚刚更改的配置文件生效 sysctl.conf
要重新启动一个终端执行如下的命令才生效:(不能在设置的终端进行该命令,即使执行也不生效)
/etc/security/limits.conf 检查该文件中修改的部分 H 硬件 S 软件
[root@node-1 ~]$ ulimit -Hn
65536
[root@node-1 ~]$ ulimit -Sn
65536
上修改的配置文件生效:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --reload
su - elk
vi .bash_profile
export PATH=$JAVA_HOME/bin:$PATH
source .bash_profile
下面是一些查询时的慢日志参数设置
index.search.slowlog.level: TRACE
index.search.slowlog.threshold.query.warn: 10s
index.search.slowlog.threshold.query.info: 5s
index.search.slowlog.threshold.query.debug: 2s
index.search.slowlog.threshold.query.trace: 500ms
index.search.slowlog.threshold.fetch.warn: 1s
index.search.slowlog.threshold.fetch.info: 800ms
index.search.slowlog.threshold.fetch.debug:500ms
index.search.slowlog.threshold.fetch.trace: 200ms
允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
systemctl list-unit-files | grep enable 查看开机自启动项
创建elasticsearch的启动脚本
su - elk 切换到es的启动用户
cd /usr/local/elasticsearch-6.5.4
touch es-startup.sh
#!/bin/bash
nohup /usr/local/elasticsearch-6.5.4/bin/elasticsearch >> /usr/local/elasticsearch-6.5.4/es-output.log 2>&1 &
jps 查看java进程
tail -f es-output.log 查看日志
kill -9 jps进程号
==================================================================================================
Kibana可以不更Elasticsearch部署在一台机器,这个看机器的配置,一般部署在单独的一台机器上,比较耗内存
Kibana.yml 基础项配置
server.port: 5601 配置服务端口
server.host: "0.0.0.0" 所有ip都能访问,外网ip也能访问
elasticsearch.url: "http://localhost:9200" elasticsearch服务所在的Ip, 目前只支持配置集群中的一个ip,可以考虑nginx搭建多台---研究......
脚本启动Kibana
cd /usr/local/kibana-6.5.4-linux-x86_64/
touch kb-startup.sh
chmod a+x kb-startup.sh
#!/bin/bash
nohup /usr/local/kibana-6.5.4-linux-x86_64/bin/kibana >> /usr/local/kibana-6.5.4-linux-x86_64/kb-output.log 2>&1 &
tail -f kb-startup.log
vi /usr/lib/systemd/system/kibana.service 开机启动
[Unit]
Description=Kibana Server Manager
[Service]
ExecStart=/usr/local/kibana-6.5.4-linux-x86_64/bin/kibana
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable kibana
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
systemctl start kibana
systemctl stop kibana
systemctl status kibana
http://ip:5601