zoukankan      html  css  js  c++  java
  • ELK日志分析平台搭建全过程

    一、使用背景

        当生产环境有很多服务器、很多业务模块的日志需要巡检检查。

    二、环境

    系统:centos 6.5

    JDK:1.8

    Elasticsearch-7.0.0

    Logstash-7.0.0

    kibana-7.0.0

    三、安装

    1、安装JDK

    下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    本环境下载的是64位tar.gz包,将安装包拷贝至安装服务器/usr/local目录

    [root@localhost ~]# cd /usr/local/ 
    [root@localhost local]# tar -xzvf jdk-8u111-linux-x64.tar.gz

    配置环境变量

    [root@localhost local]# vim /etc/profile

    将下面的内容添加至文件末尾

    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
    export JAVA_HOME=/usr/java/jdk1.8.0_211
    export JAVA_BIN=/usr/java/jdk1.8.0_211/bin
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN PATH CLASSPATH

    [root@localhost local]# source /etc/profile

    配置limit相关参数

    [root@localhost local]# vim /etc/security/limits.conf
    添加以下内容

    * soft nproc 262144
    * hard nproc 262144
    * soft nofile 262144
    * hard nofile 262144

    创建运行ELK的用户

    [root@localhost local]# groupadd elk

    [root@localhost local]# useradd -g elk elk

    创建ELK运行目录

    [root@localhost local]# mkdir /elk
    [root@localhost local]# chown -R elk:elk /elk

    关闭防火墙:

    [root@localhost ~]# service iptables stop

    以上全部是root用户完成

    2、安装ELK

    以下由elk用户操作

    以elk用户登录服务器

    下载ELK安装包:https://www.elastic.co/downloads,并上传到服务器且解压,解压命令:tar -xzvf 包名

    配置Elasticsearch

    /elk/elasticsearch-7.0.0/config/elasticsearch.yml

    修改如下内容:

    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false

    cluster.name: orange-cluster
    node.name: node-1

    network.host: 10.253.1.28
    http.port: 9200


    #path.data: /var/lib/elasticsearch
    #path.logs: /var/log/elasticsearch

    cluster.initial_master_nodes: ["node-1"]

    http.cors.enabled: true
    http.cors.allow-origin: "*"

    保存退出

    启动Elasticsearch

    /elk/elasticsearch-7.0.0/bin/elasticsearch &

    用浏览器访问:http://10.253.1.28:9200/

    Elasticsearch安装完毕

    安装logstash

    logstash是ELK中负责收集和过滤日志的

    解压缩

    编写配置文件

    /elk/logstash-7.0.0/config/logstash-sample.conf

    logstash的配置文件须包含三个内容:

    input{}:此模块是负责收集日志,可以从文件读取、从redis读取或者开启端口让产生日志的业务系统直接写入到logstash

    filter{}:此模块是负责过滤收集到的日志,并根据过滤后对日志定义显示字段

    output{}:此模块是负责将过滤后的日志输出到elasticsearch或者文件、redis等

    本环境采用从文件读取日志,业务系统产生日志的格式如下:

    [2016-11-05 00:00:03,731  INFO] [http-nio-8094-exec-10] [filter.LogRequestFilter] - /merchant/get-supply-detail.shtml, IP: 121.35.185.117, [device-dpi = 414*736, version = 3.6, device-os = iOS8.4.1, timestamp = 1478275204, bundle = APYQ9WATKK98V2EC, device-network = WiFi, token = 393E38694471483CB3686EC77BABB496, device-model = iPhone, device-cpu = , sequence = 1478275204980, device-uuid = C52FF568-A447-4AFE-8AE8-4C9A54CED10C, sign = 0966a15c090fa6725d8e3a14e9ef98dc, request = {
      "supply-id" : 192
    }]
    [2016-11-05 00:00:03,731 DEBUG] [http-nio-8094-exec-10] [filter.ValidateRequestFilter] - Unsigned: bundle=APYQ9WATKK98V2EC&device-cpu=&device-dpi=414*736&device-model=iPhone&device-network=WiFi&device-os=iOS8.4.1&device-uuid=C52FF568-A447-4AFE-8AE8-4C9A54CED10C&request={
      "supply-id" : 192

    output直接输出到Elasticsearch

    type:代表类型,其实就是将这个类型推送到Elasticsearch,方便后面的kibana进行分类搜索,一般直接命名业务系统的项目名

    path:读取文件的路径

    start_position => "beginning"是代表从文件头部开始读取

    filter{}中的grok是采用正则表达式来过滤日志,其中%{TIMESTAMP_ISO8601}代表一个内置获取2016-11-05 00:00:03,731时间的正则表达式的函数,%{TIMESTAMP_ISO8601:date1}代表将获取的值赋给date1,在kibana中可以体现出来

    其中index是定义将过滤后的日志推送到Elasticsearch后存储的名字

    %{type}是调用input中的type变量(函数)

    启动logstash

    /elk/logstash-7.0.0/bin/logstash -f /elk/logstash-7.0.0/config/logstash-sample.conf &

    代表启动成功

    安装kibana

    解压缩

    编辑配置文件

    /elk/kibana-7.0.0-linux-x86_64/config/kibana.yml

    添加如下内容

    server.port: 9201
    server.host: 10.253.1.28
    elasticsearch.hosts: ["http://10.253.1.28:9200"]

    启动kibana

    /elk/kibana-7.0.0-linux-x86_64/bin/kibana &

    安装过程中可能遇到的问题

    问题一:警告提示

    [2016-11-06T16:27:21,712][WARN ][o.e.b.JNANatives ] unable to install syscall filter: 

    java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in
    at org.elasticsearch.bootstrap.Seccomp.linuxImpl(Seccomp.java:349) ~[elasticsearch-5.0.0.jar:5.0.0]
    at org.elasticsearch.bootstrap.Seccomp.init(Seccomp.java:630) ~[elasticsearch-5.0.0.jar:5.0.0]

    报了一大串错误,其实只是一个警告。

    解决:使用inux 7.0以上版本,就不会出现此类问题了。

    问题二:ERROR: bootstrap checks failed

    max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
    max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

    解决:切换到root用户,编辑limits.conf 添加类似如下内容

    vi /etc/security/limits.conf 

    添加如下内容:

    * soft nproc 262144
    * hard nproc 262144
    * soft nofile 262144
    * hard nofile 262144

    问题三:max number of threads [1024] for user [lish] likely too low, increase to at least [4096]

    解决:切换到root用户,进入limits.d目录下修改配置文件。

    vi /etc/security/limits.d/90-nproc.conf 

    修改如下内容:

    * soft nproc 1024

    #修改为

    * soft nproc 4096

    问题四:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

    解决:切换到root用户修改配置sysctl.conf

    vi /etc/sysctl.conf 

    添加下面配置:

    vm.max_map_count=655360

    并执行命令:

    sysctl -p

    问题五:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

    解决:修改切换到root用户修改配置limits.conf 添加下面两行

    命令:vi /etc/security/limits.conf

    *        hard    nofile           65536
    *        soft    nofile           65536
    切换到es的用户。

  • 相关阅读:
    网站安全编程 黑客入侵 脚本黑客 高级语法入侵 C/C++ C# PHP JSP 编程
    【算法导论】贪心算法,递归算法,动态规划算法总结
    cocoa2dx tiled map添加tile翻转功能
    8月30日上海ORACLE大会演讲PPT下载
    【算法导论】双调欧几里得旅行商问题
    Codeforces Round #501 (Div. 3) B. Obtaining the String (思维,字符串)
    Codeforces Round #498 (Div. 3) D. Two Strings Swaps (思维)
    Educational Codeforces Round 89 (Rated for Div. 2) B. Shuffle (数学,区间)
    洛谷 P1379 八数码难题 (BFS)
    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords (贪心)
  • 原文地址:https://www.cnblogs.com/Memories-off/p/10750494.html
Copyright © 2011-2022 走看看