自动化运维之日志系统第二篇 ELK实战

上一篇准备知识://www.greatytc.com/p/dd1a3a0df63f

一、ELK简介

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成:

ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是最流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

在ElasticSearch中,所有节点的数据是均等的。

Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。

logstash收集日志基本流程: input-->codec-->filter-->codec-->output

input:从哪里收集日志。

filter:发出去前进行过滤

output:输出至Elasticsearch或Redis消息队列

codec:输出至前台,方便边实践边测试

数据量不大日志按照月来进行收集

Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

二、部署环境:

CentOS release 6.7,elasticsearch6.2.2,logstash62.2,kibana6.2.2;虚拟机内存要大于2G。关闭防火墙和SELinux。

1.java环境(es需要安装java才能使用)

[root@localhost ~]#  yum install java 

[root@localhost ~]# java -version

openjdk version "1.8.0_161"

OpenJDK Runtime Environment (build 1.8.0_161-b14)

OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

2、安装Elasticsearch

      2.1. 导入elasticsearch PGP key

              rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

      2.2.推荐去安装新版本的

              地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html

      2.3.添加elasticsearch的yum仓库

        [root@localhost ~]# vim /etc/yum.repos.d/elasticsearch.repo

              [elasticsearch-6.x]

              name=Elasticsearch repository for 6.x packages

              baseurl=https://artifacts.elastic.co/packages/6.x/yum

              gpgcheck=1

              gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

              enabled=1

              autorefresh=1

              type=rpm-md

        2.4.安装ElasticSearch

      [root@localhost ~] # yum install -y elasticsearch

          2.5.yum安装使用普通用户,需要配置limits

      [root@localhost ~]# vim /etc/security/limits.conf

                    elasticsearch soft memlock unlimited

                    elasticsearch hard memlock unlimited

          2.6. 创建数据目录并设置权限

      [root@localhost ~]# mkdir -p /data/es-data

      [root@localhost ~]# chown -R elasticsearch:elasticsearch /data/es-data

          2.7. yum安装 默认配置文件在 /etc/elasticsearch

    [root@localhost ~]# vim /etc/elasticsearch/elasticsearch.yml

    [root@localhost ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml

            cluster.name: menghuan-elk-cluster  #集群名称

            node.name: linux-node  #节点名称

            path.data:  /data/es-data  #数据存放路径

            path.logs:  /var/log/elasticsearch  #日志存放路径

            bootstrap.memory_lock:  false  #6.x下测试 开启会有问题 或许是内存不充足导致还行调研

            network.host:  192.168.56.11    #允许访问的ip

            http.port:  9200

            discovery.zen.ping.unicast.hosts: ["192.168.56.10","192.168.56.11"] #单播方式 组播在6.x下面貌似不好使

      [root@localhost ~]# chkconfig --add elasticsearch

      [root@localhost ~]# chkconfig elasticsearch on

      [root@localhost ~]# chkconfig --list |grep elasticsearch

            elasticsearch  0:off 1:off 2:on 3:on 4:on 5:on 6:off

      [root@localhost ~]# service  elasticsearch  start

Starting elasticsearch: Exception in thread "main" 2018-03-10 09:39:39,721 main ERROR No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'log4j2.debug' to show Log4j2 internal initialization logging.

SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]];

报错 解决: 参数的冒号前后没有加空格,加了之后就好

然后重新启动后显示:Starting elasticsearch:                                    [  OK  ]  这个时候还是有一些问题 通过查看/var/log/elasticsearch/menghuan-elk-culster.log日志文件

发现有以下2个错误

[1]: max number of threads [1024] for user [elasticsearch] is too low, increase to at least [4096]

[2]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

解决如下:

[1]: [root@localhost init.d]# vim /etc/security/limits.d/90-nproc.conf

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

*          soft    nproc    1024

*          soft    nproc    4096

root      soft    nproc    unlimited

[2]:修改/etc/elasticsearch/elasticsearch.yml 增加配置:bootstrap.system_call_filter: false

修复完以上2个问题后重启 就可以启动成功了

[root@localhost ~]# ps -ef|grep elasticsearch

495      25551    1 73 10:21 ?        00:00:23 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.Cp7sEmq3 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/lib/elasticsearch -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/var/log/elasticsearch/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/usr/share/elasticsearch -Des.path.conf=/etc/elasticsearch -cp /usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -p /var/run/elasticsearch/elasticsearch.pid -d


      2.8.  6.x新版本 请安装此插件

      /usr/share/elasticsearch/bin/elasticsearch-plugin install x-pack

      到此ES安装完毕

3.安装kibana

    3.1. 推荐安装新版本

          地址: https://www.elastic.co/guide/en/kibana/current/rpm.html

      3.2.添加kibana到yum仓库

    [root@localhost ~]# vim /etc/yum.repos.d/kibana.repo

            [kibana-6.x]

            name=Kibana repository for 6.x packages

            baseurl=https://artifacts.elastic.co/packages/6.x/yum

            gpgcheck=1

            gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

            enabled=1

            autorefresh=1

            type=rpm-md

      3.4.安装kibana

      [root@localhost ~]# yum install -y kibana

    3.5 kibana自启动

      [root@localhost ~]# chkconfig --add kibana

      [root@localhost ~]# chkconfig kibana on         

      [root@localhost ~]# chkconfig --list |grep kibana

                  kibana 0:off 1:off 2:on 3:on 4:on 5:on 6:off

      3.6. 修改kibana配置文件

    [root@localhost ~]# vim /etc/kibana/kibana.yml

    [root@localhost kibana]# grep '^[a-z]' /etc/kibana/kibana.yml

          server.port: 5601  #访问端口

          server.host: "192.168.56.10"  #允许访问主机 (建议内网)

          elasticsearch.url: "http://192.168.56.10:9200"    #es地址

          kibana.index: ".kibana"

      3.7. 运行Kibana

[root@localhost ~]# service kibana start

        kibana started

[root@localhost ~]# ps -ef|grep kibana

kibana    2528    1 43 07:59 pts/0    00:00:02 /usr/share/kibana/bin/../node/bin/node --no-warnings /usr/share/kibana/bin/../src/cli -c /etc/kibana/kibana.yml

root      2537  1802  0 07:59 pts/0    00:00:00 grep kibana

      3.8.访问kibana_url:http://192.168.56.10:5601/


    3.9.创建kibana索引(创建之前得先装logstash,把数据给ES才行)


4.安装logstash

    4.1.推荐安装新版本

地址:https://www.elastic.co/guide/en/logstash/current/installing-logstash.html#package-repositories

    4.2.添加logstash的yum仓库

        [root@localhost ~] # vim /etc/yum.repos.d/logstash.repo

                [logstash-6.x]

                name=Elastic repository for 6.x packages

                baseurl=https://artifacts.elastic.co/packages/6.x/yum

                gpgcheck=1

                gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

                enabled=1

                autorefresh=1

                type=rpm-md

      4.3.安装logstash

            [root@localhost ~]# yum install -y logstash

      4.4.配置Logstash以及自启动

logstash6生成init脚本后台启动

默认情况使用rpm包安装完logstash之后没有启动脚本,这一点我觉得算是开发不够彻底。官网给了一个脚本,需要根据不同的系统版本生成对应的启动脚本,而且官网没有给明使用方法,对于新用户来说算是个坑,不过在终端可以查看到脚本的使用帮助。

我的系统是CentOS6,这里说一下6的使用方法,7类似,具体方法如下:

4.4.1.查看脚本使用帮助

[root@localhost ~]# cd /usr/share/logstash/bin/

[root@localhost ~]# ./system-install --help

Usage: system-install [OPTIONSFILE] [STARTUPTYPE] [VERSION]

NOTE: These arguments are ordered, and co-dependent

OPTIONSFILE: Full path to a startup.options file

OPTIONSFILE is required if STARTUPTYPE is specified, but otherwise looks first

in /usr/share/logstash/config/startup.options and then /etc/logstash/startup.options

Last match wins

STARTUPTYPE: e.g. sysv, upstart, systemd, etc.

OPTIONSFILE is required to specify a STARTUPTYPE.

VERSION: The specified version of STARTUPTYPE to use. The default is usually preferred here, so it can safely be omitted.

Both OPTIONSFILE & STARTUPTYPE are required to specify a VERSION.

a、要跟startup.options文件的绝对路径,如果是rpm安装的在/etc/logstash/startup.options,如果是二进制包解压安装的则在解压目录下的config目录下面。

b、必须要跟启动类型,比如CentOS6是sysv,CentOS7是systemd。

4.4.2.执行脚本生成启动文件

[root@localhost ~]# /usr/share/logstash/bin/system-install /etc/logstash/startup.options sysv

Successfully created system startup script for Logstash

4.4.3.执行完就可以使用init脚本启动logstash了

[root@localhost ~]# service logstash start

      logstash started

[root@localhost ~]# ps -ef|grep logstash

logstash  3086    1 99 09:36 pts/0    00:00:09 /usr/bin/java -Xms256m -Xmx1g -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -cp /usr/share/logstash/logstash-core/lib/jars/animal-sniffer-annotations-1.14.jar:/usr/share/logstash/logstash-core/lib/jars/commons-compiler-3.0.8.jar:/usr/share/logstash/logstash-core/lib/jars/error_prone_annotations-2.0.18.jar:/usr/share/logstash/logstash-core/lib/jars/google-java-format-1.5.jar:/usr/share/logstash/logstash-core/lib/jars/guava-22.0.jar:/usr/share/logstash/logstash-core/lib/jars/j2objc-annotations-1.1.jar:/usr/share/logstash/logstash-core/lib/jars/jackson-annotations-2.9.1.jar:/usr/share/logstash/logstash-core/lib/jars/jackson-core-2.9.1.jar:/usr/share/logstash/logstash-core/lib/jars/jackson-databind-2.9.1.jar:/usr/share/logstash/logstash-core/lib/jars/jackson-dataformat-cbor-2.9.1.jar:/usr/share/logstash/logstash-core/lib/jars/janino-3.0.8.jar:/usr/share/logstash/logstash-core/lib/jars/javac-shaded-9-dev-r4023-3.jar:/usr/share/logstash/logstash-core/lib/jars/jruby-complete-9.1.13.0.jar:/usr/share/logstash/logstash-core/lib/jars/jsr305-1.3.9.jar:/usr/share/logstash/logstash-core/lib/jars/log4j-api-2.9.1.jar:/usr/share/logstash/logstash-core/lib/jars/log4j-core-2.9.1.jar:/usr/share/logstash/logstash-core/lib/jars/log4j-slf4j-impl-2.9.1.jar:/usr/share/logstash/logstash-core/lib/jars/logstash-core.jar:/usr/share/logstash/logstash-core/lib/jars/slf4j-api-1.7.25.jar org.logstash.Logstash --path.settings /etc/logstash

4.4.4 关闭logstash

         rpm 安装的logstash有 initctl 的守护进程

         使用initctl stop logstash来关闭 logstash

    4.5.测试

    [root@localhost ~]# /usr/share/logstash/bin/logstash -e 'input { stdin {} } output { stdout{codec => rubydebug} }'

虽然可以使用 但是会出现一些warngin如下图:

解决如下:

mkdir -p /usr/share/logstash/config/

ln -s /etc/logstash/* /usr/share/logstash/config

chown -R logstash:logstash /usr/share/logstash/config/

再次测试不提示warning

至此ELK安装已经完毕 预知后事如何 请等待下篇继续讲述

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容