一、elk框架和java1.8环境搭建
1.1: 环境说明
约定:
centos6
iptables关闭 如果不关闭的话,需要开放对应的端口访问
selinux关闭
1.2: ELK简介
els:ElasticSearch,Logstash,Kibana,Beats
elk:ElasticSearch,Logstash,Kibana
① ElasticSearch 搜索引擎
ElasticSearch 是一个基于Lucene的搜索引擎,提供索引,搜索功能。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
Logstash 是一个开源的服务器端数据处理流水线,它可以同时从多个数据源获取数据,并将其转换为最喜欢的"存储"(Ours is Elasticsearch, naturally.)
③ Beats:采集日志信息(加上beats 就是els),GO开发的,所以高效、很快
Filebeat:Log Files
Metricbeat:Metrics
Packetbeat:Network Data
Winlogbeat:Windows Event Logs
Heartbeat:Uptime Monitoring
Kibana 让你可视化你的Elasticsearch数据并导航Elastic Stack,所以你可以做任何事情,从凌晨2:00分析为什么你得到分页,了解雨水可能对你的季度数字造成的影响。
原理图:
1.3: yum 安 装 jdk1.8
Java 8 is required for Logstash 6.x and 5.x.(https://www.elastic.co/downloads/logstash)
yum install java-1.8.0-openjdk -y
#elasticsearch、logstash依赖于java环境
1.4: 使用官方的二进制包解压安装jdk1.8
先下载java linux 64位tar.gz包java 1.8
下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1.5: 解压,移动(即安装)
cd /usr/local/src/ tar -zxvf jdk-8u162-linux-x64.tar.gz
mv jdk1.8.0_162 /usr/local/ #用全路径验证java是否安装成功 /usr/local/jdk1.8.0_162/bin/java -version
1.6: 配置java环境变量
vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_162/ export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH source /etc/profile
1.7: java版本查看
java -version
二、kibana的安装和启动
2.1: kibana 下载地址
(kibana 主要用来展现数据,它本身不存储数据 )
https://artifacts.elastic.co/downloads/kibana/kibana-6.1.1-linux-x86_64.tar.gz
2.2: 添加elk用户,解压安装
usermod -s /sbin/nologin elk #不让elk用户来登录系统解压安装kibana: tar -zxf kibana-6.1.1-linux-x86_64.tar.gz mv kibana-6.1.1-linux-x86_64 /usr/local/kibana-6.1.1
2.3: kibana配置文件
vim /usr/local/kibana-6.1.1/config/kibana.yml
修改:
server.port: 5601 server.host: "0.0.0.0"(监听在所有网卡,有风险) #elasticsearch.url: "http://localhost:9200" (默认是连接elasticsearch的9200端口) #elasticsearch.username: "user" (配置连接elasticsearch的用户名和密码) #elasticsearch.password: "pass"
2.4: 把kibana目录改为elk用户
chown -R elk:elk /usr/local/kibana-6.1.1/
2.5: 新增启动脚本
vim /usr/local/kibana-6.1.1/bin/start.sh nohup /usr/local/kibana-6.1.1/bin/kibana >>/tmp/kibana.log 2>>/tmp/kibana.log chmod a+x /usr/local/kibana-6.1.1/bin/start.sh
2.6: 用普通用户启动
su -s /bin/bash elk '/usr/local/kibana-6.1.1/bin/start.sh'
访问kibana,注意防火墙放开tcp 5601端口。我这边就直接关闭防火墙了。
2.7:使用Nginx限制访问kibana
使用nginx转发到kibana,由于kibana没有权限控制,可以借助nginx来部署认证和进行ip控制先把kibana改到监听127.0.0.1,然后利用nginx来转发。配置如下:
server { listen 5609; access_log /usr/local/nginx/logs/kibana_access.log main; error_log /usr/local/nginx/logs/kibana_error.log error; location / { allow 127.0.0.1; deny all; proxy_pass http://127.0.0.1:5601; } }
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
如果ip经常变化,感觉麻烦的话,就使用用户名密码登录的方式。 location / { auth_basic "elk auth"; auth_basic_user_file /usr/local/nginx/conf/htpasswd; proxy_pass http://127.0.0.1:5601; }
生成密码文件
printf "elk:$(openssl passwd -1 elkpass)\n" >/usr/local/nginx/conf/htpasswd
三、elasticsearch安装和启动
3.1: elasticsearch的下载地址
(elasticsearch主要用来存储数据和查询分析,供kibana调取并进行展现)
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.1.tar.gz
3.2:解压安装
cd /usr/local/src/ tar -zxf elasticsearch-6.1.1.tar.gz mv elasticsearch-6.1.1 /usr/local/
3.3:elasticsearch配置
vim /usr/local/elasticsearch-6.1.1/config/elasticsearch.yml 修改: path.data: /usr/local/elasticsearch-6.1.1/data path.logs: /usr/local/elasticsearch-6.1.1/logs network.host: 127.0.0.1 http.port: 9200
3.4:把elasticsearch目录改为elk
mkdir -p /usr/local/elasticsearch-6.1.1/data mkdir -p /usr/local/elasticsearch-6.1.1/logs chown -R elk:elk /usr/local/elasticsearch-6.1.1/
3.5: 更改jvm的内存限制(看个人机器配置)
vim /usr/local/elasticsearch-6.1.1/config/jvm.options -Xms100M -Xmx100M
3.6: 编辑elasticsearch启动脚本,-d后台启动。
vim /usr/local/elasticsearch-6.1.1/bin/start.sh /usr/local/elasticsearch-6.1.1/bin/elasticsearch -d >>/tmp/elasticsearch.log 2>>/tmp/elasticsearch.log chmod a+x /usr/local/elasticsearch-6.1.1/bin/start.sh
3.7: 启动elasticsearch
注意ES必须要普通用户启动
su -s /bin/bash elk '/usr/local/elasticsearch-6.1.1/bin/start.sh' 观察日志 tailf /tmp/elasticesearch.log 观察kibana网页,看下还会不会报elasticsearch的错误 elasticsearch监听在非127.0.0.1,需要验证内核参数 network.host: 0.0.0.0
3.8: 常见启动报错
1、(处理max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144])
vim /etc/sysctl.conf 添加 vm.max_map_count = 262144
2、( 处 理 max number of threads [1024] for user [elk] is too low,increase to at least [4096]
vim /etc/security/limits.d/90-nproc.conf
* soft nproc 4096
* hard nproc 4096
3、( 处 理 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536])
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
4、(处理system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk)
vim /usr/local/elasticsearch-6.1.1/config/elasticsearch.yml
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
跟新中。。。