ELK学习笔记

一、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.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

 跟新中。。。

posted @ 2018-08-02 01:39  Javis的BLOG  阅读(266)  评论(0编辑  收藏  举报