ELK(ElasticSearch、Logstash和Kiabana)

=============基础环境安装(需要epel源)================

[on master 10.0.0.20 slave 10.0.0.21]
1)下载并安装GPG Key
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
2)添加yum仓库
vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
3)安装elasticsearch
        yum install -y elasticsearch
4)  安装Redis nginx java
        yum install -y redis nginx  java
安装完java后,检测
        java -version

=============[on master 10.0.0.20]====================

systemctl stop firewalld && setenforce 0
hostnamectl set-hostname master
cat >> /etc/hosts <<eof
10.0.0.20 master
10.0.0.21 slave
eof

1)配置修改配置文件
 mkdir -p /data/es-data
 vim /etc/elasticsearch/elasticsearch.yml  //将里面内容清空,配置下面内容
cluster.name: huanqiu                            # 组名(同一个组,组名必须一致)
node.name: master                            # 节点名称,建议和主机名一致
path.data: /data/es-data                        # 数据存放的路径
path.logs: /var/log/elasticsearch/         # 日志存放的路径
bootstrap.mlockall: true                         # 锁住内存,不被使用到交换分区去
network.host: 0.0.0.0                            # 网络设置
http.port: 9200                                    # 端口
2)启动并查看
        chown  -R elasticsearch.elasticsearch /data/
        systemctl  start elasticsearch
        systemctl  status elasticsearch
 CGroup: /system.slice/elasticsearch.service
           └─3005 /bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSI...
注意:上面可以看出elasticsearch设置的内存最小256m,最大1g
        netstat -antlp |egrep "9200|9300"
tcp6       0      0 :::9200                 :::*                    LISTEN      3005/java           
tcp6       0      0 :::9300                 :::*                    LISTEN      3005/java 

a)安装head插件
[root@elk-node1 src]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
[root@elk-node1 src]# systemctl restart elasticsearch

b)安装kopf监控插件
[root@elk-node1 src]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
 [root@elk-node1 src]# systemctl restart elasticsearch

=====================[on slave 10.0.0.21]===============

systemctl stop firewalld && setenforce 0
hostnamectl set-hostname slave
cat >> /etc/hosts <<eof
10.0.0.20 master
10.0.0.21 slave
eof

1)配置修改配置文件
        mkdir -p /data/es-data   
         cat /etc/elasticsearch/elasticsearch.yml
cluster.name: huanqiu        
node.name: slave
path.data: /data/es-data 
path.logs: /var/log/elasticsearch/ 
bootstrap.mlockall: true 
network.host: 0.0.0.0  
http.port: 9200        
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.1.160", "192.168.1.161"]
2)  修改权限配置
       chown -R elasticsearch.elasticsearch /data/
3)  启动服务
[root@slave src]# systemctl start elasticsearch
[root@slave src]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2016-09-28 16:49:41 CST; 1 weeks 3 days ago
     Docs: http://www.elastic.co
  Process: 17798 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)
 Main PID: 17800 (java)
   CGroup: /system.slice/elasticsearch.service
            └─17800 /bin/java -Xms256m -Xmx1g -Djava.awt.headless=true  -XX:+UseParNewGC -XX:+UseConcMarkSweepGC  -XX:CMSInitiatingOccupancyFra...
Oct 09 13:42:22 slave elasticsearch[17800]: [2016-10-09  13:42:22,295][WARN 
4)  查看端口
           netstat -antlp|egrep "9200|9300"
tcp6       0      0 :::9200                 :::*                    LISTEN      2928/java           
tcp6       0      0 :::9300                 :::*                    LISTEN      2928/java           
tcp6       0      0 127.0.0.1:48200         127.0.0.1:9300          TIME_WAIT   -                   
tcp6       0      0 ::1:41892               ::1:9300                TIME_WAIT   -
a)安装head插件
[root@elk-node1 src]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
[root@elk-node1 src]# systemctl restart elasticsearch

b)安装kopf监控插件
[root@elk-node1 src]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
 [root@elk-node1 src]# systemctl restart elasticsearch

=================访问两个插件:================

http://10.0.0.20:9200/_plugin/head/
http://10.0.0.20:9200/_plugin/kopf/#!/cluster

http://10.0.0.21:9200/_plugin/head/
http://10.0.0.21:9200/_plugin/kopf/#!/cluster

====Logstash安装配置(这个在客户机上是要安装的。[on master 10.0.0.20 slave 10.0.0.21])===

基础环境安装(客户端安装logstash,收集到的数据写入到elasticsearch里,就可以登陆logstash界面查看到了)
1)下载并安装GPG Key
[root@elk-node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
2)添加yum仓库
[root@hadoop-node1 ~]# vim /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
3)安装logstash
[root@elk-node1 ~]# yum install -y logstash
4)logstash启动
[root@elk-node1 ~]# systemctl start elasticsearch
[root@elk-node1 ~]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2016-11-07 18:33:28 CST; 3 days ago
     Docs: http://www.elastic.co
 Main PID: 8275 (java)
   CGroup: /system.slice/elasticsearch.service
            └─8275 /bin/java -Xms256m -Xmx1g -Djava.awt.headless=true  -XX:+UseParNewGC -XX:+UseConcMarkSweepGC  -XX:CMSInitiatingOccupancyFrac...

===================Kibana安装配置=====================

1)kibana的安装:
[root@master ~]# cd /usr/local/src
[root@master src]# wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
[root@master src]# tar zxf kibana-4.3.1-linux-x64.tar.gz
[root@master src]# mv kibana-4.3.1-linux-x64 /usr/local/kibana
2)修改配置文件:
[root@slave config]# pwd
/usr/local/kibana/config
[root@master config]# cp kibana.yml kibana.yml.bak
[root@master config]# vim kibana.yml 
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://10.0.0.20:9200"
kibana.index: ".kibana"
[root@master ~]# yum -y install screen
[root@master ~]# screen  -S "zz"                        #这样就另开启了一个终端窗口
[root@master config]# /usr/local/kibana/bin/kibana    [ctrl+Z 运行到后台]
  log   [04:44:50.393] [info][status][plugin:kibana] Status changed from uninitialized to green - Ready
  log   [04:44:50.428] [info][status][plugin:elasticsearch] Status changed from uninitialized to yellow - Waiting for Elasticsearch
  log   [04:44:50.448] [info][status][plugin:kbn_vislib_vis_types] Status changed from uninitialized to green - Ready
  log   [04:44:50.458] [info][status][plugin:markdown_vis] Status changed from uninitialized to green - Ready
在起一个终端
[root@maste终端2 ~]# screen -ls
There is a screen on:
        15041.zz pts-0.elk-node1   (Detached)
1 Socket in /var/run/screen/S-root.
[root@tivf18 root]# screen -r zz
3)收集java日志,其中包含上面讲到的日志收集
[root@maste终端2 ~]# vim  file.conf
input {
    file {
      path => "/var/log/messages"
      type => "system"
      start_position => "beginning"
    }
}
input {
    file {
       path => "/var/log/elasticsearch/huanqiu.log"
       type => "es-error"
       start_position => "beginning"  \\死的
    }
}
output {
 
    if [type] == "system"{
        elasticsearch {
           hosts => ["10.0.0.20:9200"]
           index => "system-%{+YYYY.MM.dd}"
        }
    }
    if [type] == "es-error"{
            elasticsearch {
               hosts => ["10.0.0.20:9200"]
               index => "es-error-%{+YYYY.MM.dd}"
            }
        }
}
[root@maste终端2 ~]# /opt/logstash/bin/logstash -f file.conf &  \\放后台
  访问kibana:http://10.0.0.20:5601/
  在settings中填写 system-*  (file.conf里定义的system-%{+YYYY.MM.dd})--》create
a)查看日志登陆,需要点击“Discover”-->"message",点击它后面的“add”
注意:
需要右边查看日志内容时带什么属性,就在左边点击相应属性后面的“add”
b)添加新的日志采集项,点击Settings->+Add New,比如添加
system系统日志。注意后面的*不要忘了。
c)如果打开kibana查看日志,发现没有日志内容,出现“No results found”,如下图所示,这说明要查看的日志在当前时间没有日志信息
输出,可以点击右上角的时间钟来调试日志信息的查看。

日志配置实例

修改nginx的配置文件,分别在nginx.conf的http和server配置区域添加下面内容:
http里追加下面:
log_format  json '{"@timestamp":"$time_iso8601",'
                           '"@version":"1",'
                           '"client":"$remote_addr",'
                           '"url":"$uri",'
                           '"status":"$status",'
                           '"domain":"$host",'
                           '"host":"$server_addr",'
                           '"size":$body_bytes_sent,'
                           '"responsetime":$request_time,'
                           '"referer": "$http_referer",'
                           '"ua": "$http_user_agent"'
               '}';

server追加下面:
access_log  /var/log/nginx/access_json.log  json;

启动nginx服务:
[root@master ~]# systemctl start nginx
[root@master ~]# systemctl status nginx
[root@master ~]# cat file.conf  (基于端口要编辑 /etc/rsyslog.conf)
input {
    file {
      path => "/var/log/messages"
      type => "system"
      start_position => "beginning"
    }
 
    file {
       path => "/var/log/elasticsearch/huanqiu.log"
       type => "es-error"
       start_position => "beginning"
       codec => multiline {
           pattern => "^\["
           negate => true
           what => "previous"
       }
    }
    file {
       path => "/var/log/nginx/access_json.log"
       codec => json
       start_position => "beginning"
       type => "nginx-log"
    }
    syslog {
        type => "system-syslog"
        host => "10.0.0.20"
        port => "514"
    }
}
 
 
output {
 
    if [type] == "system"{
        elasticsearch {
           hosts => ["10.0.0.20:9200"]
           index => "system-%{+YYYY.MM.dd}"
        }
    }
 
    if [type] == "es-error"{
        elasticsearch {
           hosts => ["10.0.0.20:9200"]
           index => "es-error-%{+YYYY.MM.dd}"
        }
    }
    if [type] == "nginx-log"{
        elasticsearch {
           hosts => ["10.0.0.20:9200"]
           index => "nginx-log-%{+YYYY.MM.dd}"
        }
    }
     if [type] == "system-syslog"{
        elasticsearch {
           hosts => ["10.0.0.21:9200"]
           index => "system-syslog-%{+YYYY.MM.dd}"
        }
    }
}
[root@master ~]# /opt/logstash/bin/logstash -f file.conf --configtest
在开一个终端(screen 也可)
[root@master ~]# /usr/local/kibana/bin/kibana


基于端口收集系统日志

格式
[root@elk-node1 ~]# cat syslog.conf
input {
    syslog {
        type => "system-syslog"
        host => "10.0.0.21"
        port => "514"
    }
}
 
output {
    stdout {
        codec => "rubydebug"
    }
}
对上面的采集文件进行执行:
[root@elk-node1 ~]# /opt/logstash/bin/logstash -f syslog.conf
重新开启一个窗口,查看服务是否启动:
[root@master ~]# netstat -ntlp|grep 514
tcp6       0      0 192.168.1.160:514       :::*     LISTEN      17842/java          
[root@master ~]# vim /etc/rsyslog.conf
#*.* @@remote-host:514                   【在此行下面添加如下内容】
*.* @192.168.1.160    客户端上的配置
[root@master ~]# systemctl  restart rsyslog
回到原来的窗口(即上面采集文件的执行终端),就会出现数据:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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