一、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 接收,处理,转发日志的工具 

  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:独立的、美观的图形数据展示界面

  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.-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..0_162 /usr/local/
#用全路径验证java是否安装成功
/usr/local/jdk1..0_162/bin/java -version

1.6: 配置java环境变量

  vim /etc/profile
export JAVA_HOME=/usr/local/jdk1..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.-linux-x86_64.tar.gz
mv kibana-6.1.-linux-x86_64 /usr/local/kibana-6.1.

2.3: kibana配置文件

vim /usr/local/kibana-6.1.1/config/kibana.yml

修改:

  server.port:
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./

2.5: 新增启动脚本

  vim /usr/local/kibana-6.1./bin/start.sh
nohup /usr/local/kibana-6.1./bin/kibana >>/tmp/kibana.log >>/tmp/kibana.log
chmod a+x /usr/local/kibana-6.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 ;
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..tar.gz
mv elasticsearch-6.1. /usr/local/

3.3:elasticsearch配置

vim /usr/local/elasticsearch-6.1./config/elasticsearch.yml
修改:
path.data: /usr/local/elasticsearch-6.1./data
path.logs: /usr/local/elasticsearch-6.1./logs
network.host: 127.0.0.1
http.port:

3.4:把elasticsearch目录改为elk

mkdir -p /usr/local/elasticsearch-6.1./data
mkdir -p /usr/local/elasticsearch-6.1./logs
chown -R elk:elk /usr/local/elasticsearch-6.1./

3.5: 更改jvm的内存限制(看个人机器配置)

vim /usr/local/elasticsearch-6.1./config/jvm.options
-Xms100M
-Xmx100M

3.6: 编辑elasticsearch启动脚本,-d后台启动。

 vim /usr/local/elasticsearch-6.1./bin/start.sh
/usr/local/elasticsearch-6.1./bin/elasticsearch -d >>/tmp/elasticsearch.log >>/tmp/elasticsearch.log
chmod a+x /usr/local/elasticsearch-6.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.,需要验证内核参数
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

跟新中。。。

ELK学习笔记的更多相关文章

  1. ELK学习笔记(一)安装Elasticsearch、Kibana、Logstash和X-Pack

    最近在学习ELK的时候踩了不少的坑,特此写个笔记记录下学习过程. 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因 ...

  2. ELK学习笔记之CentOS 7下ELK(6.2.4)++LogStash+Filebeat+Log4j日志集成环境搭建

    0x00 简介 现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的. 经 ...

  3. ELK学习笔记(二)-HelloWorld实例+Kibana介绍

    这次我们通过一个最简单的HelloWolrd来了解一下ELK的使用. 进入logstash的config目录,创建stdin.conf 文件. input{ stdin{ } } output{ st ...

  4. ELK学习笔记(三)单台服务器多节点部署

    一般情况下单台服务器只会部署一个ElasticSearch node,但是在学习过程中,很多情况下会需要实现ElasticSearch的分布式效果,所以需要启动多个节点,但是学习开发环境(不想开多个虚 ...

  5. ELK学习笔记(四)SpringBoot+Logback+Redis+ELK实例

    废话不多说,直接上干货,首先看下整体应用的大致结构.(整个过程我用到了两台虚拟机  应用和Shipper 部署在192.168.25.128 上 Redis和ELK 部署在192.168.25.129 ...

  6. ELK学习笔记之基于kakfa (confluent)搭建ELK

    0x00 概述 测试搭建一个使用kafka作为消息队列的ELK环境,数据采集转换实现结构如下: F5 HSL–>logstash(流处理)–> kafka –>elasticsear ...

  7. ELK学习笔记之F5 DNS可视化让DNS运维更安全更高效-F5 ELK可视化方案系列(3)

    0x00 概述 此文力求比较详细的解释DNS可视化所能带来的场景意义,无论是运维.还是DNS安全.建议仔细看完下图之后的大篇文字段落,希望能引发您的一些思考. 在“F5利用Elastic stack( ...

  8. ELK学习笔记之F5利用EELK进行应用数据挖掘系列(2)-DNS

    0x00 概述 很多客户使用GTM/DNS为企业业务提供动态智能解析,解决应用就近性访问.优选问题.对于已经实施多数据中心双活的客户,则会使用GSLB提供双活流量调度.DNS作为企业业务访问的指路者, ...

  9. ELK学习笔记之F5利用ELK进行应用数据挖掘系列(1)-HTTP

    0x00 概述 F5 BIGIP从应用角度位于网络结构的关键咽喉位置,可获取所有应用的流量,针对流量执行L7层处理,即便是TLS加密的流量也可以通过F5进行SSL offload.通过F5可以统一获取 ...

  10. ELK学习笔记之Logstash和Filebeat解析对java异常堆栈下多行日志配置支持

    0x00 概述 logstash官方最新文档.假设有几十台服务器,每台服务器要监控系统日志syslog.tomcat日志.nginx日志.mysql日志等等,监控OOM.内存低下进程被kill.ngi ...

随机推荐

  1. 《Java编程思想》笔记 第二章 一切都是对象

    1.对象存储位置 对象的引用存在栈中,对象存在堆中.new 出来的对象都在堆中存储.栈的存取速度较快. 所有局部变量都放在栈内存里,不管是基本类型变量还是引用类型变量,都存储在各自的方法栈中: 但是引 ...

  2. [译]Java8的函数式接口

    Java8引入了 java.util.function 包,他包含了函数式接口,具体的描述在以下api说明文档中: 函数式接口为lambda表达式和方法引用提供目标类型.每个函数式接口有一个单独的抽象 ...

  3. NetBeans中从实体创建Restful webservice工程

    分布式系统和移动计算...... 这学期上的课,名字听起来是不是很霸气? 然而 其实就是 restful 和 安卓...... 汗....... 用的IDE还是netBeans, 第一次听说有这个ID ...

  4. 使用navicat修改Mysql默认密码

    本质就是修改数据库mysql里面的数据表user一个字段,并执行如下一句mysql语句: UPDATE user SET password=PASSWORD('密码') WHERE user='roo ...

  5. AC日记——[Ahoi2013]作业 bzoj 3236

    3236 思路: 莫队+树状数组维护: 代码: #include <cmath> #include <cstdio> #include <cstring> #inc ...

  6. 使用 gulp 压缩图片

    请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 使用 gulp 压缩 JS 压缩 图片文件可降低文件大小,提高图片加载速度. 找到规律转换为 gulp 代码 规律 找到 images/ ...

  7. PHP文件操作函数

    1 获得文件名: basename(); 给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉. eg: 复制代码 代码如下: ...

  8. 备份文件的python脚本(转)

    作用:将目录备份到其他路径.实际效果:假设给定目录"/media/data/programmer/project/python" ,备份路径"/home/diegoyun ...

  9. 如何在Android Studio中创建jniLib和asset文件夹 2

    1.创建asset文件夹 如图进行操作 2.创建jniLib文件夹 —打开app下面的gradle文件(不是project的gradle) —在gradle文件的Android标签里面添加 sourc ...

  10. CF 1003B Binary String Constructing 【构造/找规律/分类讨论】

    You are given three integers a, b and x. Your task is to construct a binary string s of length n=a+b ...