日志深入分析工具ELK配置详解,ELK意况搭建

By admin in 美高梅手机版4858 on 2019年8月3日

一、ELK介绍
1.1 elasticsearch

设想机两台:

logstash 的output插件

明日给大家带来的是开源实时日志深入分析 ELK , ELK 由 ElasticSearch 、
Logstash 和 Kiabana 七个开源工具组成。官方网址:

1.1.1 elasticsearch介绍

192.168.1.42

nginx,logstash和redis在平等台机子上

内部的3个软件是:

ElasticSearch是二个基于Lucene的检索服务器。它提供了二个布满式多用户手艺的全文字笔迹核算索引擎,基于RESTful
web接口。Elasticsearch是用Java开荒的,并视作Apache许可条约下的开放源码公布,是第二盛行的集团查究引擎。设计用来云总结中,能够完结实时搜索,稳定,可信赖,火速,安装使用方便。

192.168.1.46

yum -y install redis,vim /etc/redis.conf
设置bind 0.0.0.0 ,使redis监听在具备端口上

Elasticsearch
是个开源遍及式搜索引擎,它的特色有:分布式,零配置,自动开采,索引自动分片,索引别本机制,
restful 风格接口,多数据源,自动搜索负载等。

1.1.2 elasticsearch多少个第一术语

系统情状保持一致:

systemctl start redis.service, cd
/etc/logstash/conf.d

Logstash
是七个截然开源的工具,他能够对你的日记进行访谈、解析,并将其积攒供未来使用(如,寻找)。

日志深入分析工具ELK配置详解,ELK意况搭建。NRT 
elasticsearch是一个看似实时的搜寻平台,从索引文书档案到可照本宣科有些延迟,平日为1秒。

cat /etc/redhat-release

vim nglogredissample.conf

kibana 也是叁个开源和无偿的工具,他 Kibana 可感到 Logstash 和
ElasticSearch 提供的日志深入分析自个儿的 Web
分界面,能够支持您汇总、分析和探索重要数据日志

集群
集群就是二个或八个节点存款和储蓄数据,在那之中四个节点为主节点,那么些主节点是能够透过大选爆发的,并提供跨节点的一路索引和查找的机能。集群有一个唯一性标示的名字,暗许是elasticsearch,集群名字很重点,每一个节点是依赖集群名字参加到其集群中的。由此,确认保证在差别条件中选取分裂的集群名字。一个集群能够独有贰个节点。刚强提议在配置elasticsearch时,配置成集群形式。
节点
节点就是一台单一的服务器,是集群的一片段,存款和储蓄数据并出席集群的目录和查究效果。像集群一样,节点也是透过名字来标志,暗中认可是在节点运维时随机分配的字符名。当然啦,你能够和睦定义。该名字也蛮主要的,在集群中用来识别服务器对应的节点。
节点能够透过点名集群名字来加盟到集群中。暗中认可情况下,种种节点被设置成参加到elasticsearch集群。假使开发银行了几个节点,假诺能自动开掘对方,他们将会自行创建一个名称叫elasticsearch的集群。

uname -a

input {

系统 系统需要安装的软件 ip 描述
centos6.5 Elasticsearch/test5 192.168.253.210 搜索存储日志
centos6.5 Elasticsearch/test4 192.168.253.200 搜索存储日志
centos6.5 Logstash/nginx/test1 192.168.253.150 用来收集日志给上面
centos6.5 Kibana/nginx/test2 192.168.253.100 用来后端的展示

索引
目录是有几分相似脾气的一文山会海文书档案的集纳。如nginx日志索引、syslog索引等等。索引是由名字标志,名字务必全体大写。这些名字用来进展索引、搜索、更新和删除文书档案的操作。
目录也便是关系型数据库的库。
类型
在四个索引中,可以定义贰个或多少个门类。类型是三个逻辑连串依然分区完全取决于你。平日状态下,二个品种被定于成具备一组一同字段的文书档案。如chinasoft全体的数目存入在四个十足的名称叫logstash-chinasoft的目录中,同一时间,定义了用户数据类型,帖子数据类型和评价类型。
品种绝对于关系型数据库的表。

 

file {

架构原理图:

文档
文书档案是消息的基本单元,能够被索引的。文书档案是以JSON格式表现的。
在类型中,可以依附要求存款和储蓄多个文档。
就算二个文书档案在物理上位居多个索引,实际上四个文书档案必须在一个索引内被索引和分红一个品类。
文档相对于关系型数据库的列。
分片和别本
在骨子里意况下,索引存款和储蓄的数码可能超越单个节点的硬件限制。如叁个十亿文书档案需1TB空间大概不符合积累在单个节点的磁盘上,大概从单个节点寻觅央求太慢了。为了缓和那些难点,elasticsearch提供将引得分成三个分片的功能。当在创制索引时,能够定义想要分片的数目。每多个分片就是贰个全职能的独自的目录,能够献身集群中其余节点上。
分片的多个最首要原因:
a、水平划分扩张,增大存储量
b、布满式并行跨分片操作,提升品质和吞吐量
布满式分片的体制和索求必要的文书档案怎么样聚焦完全部都以有elasticsearch调控的,这个对用户来说是晶莹剔透的。
互连网难题等等另外难题得以在别的时候光顾,为了健壮性,生硬提出要有多少个故障切换机制,无论何种故障以免御分片可能节点不可用。
为此,elasticsearch让大家将引得分片复制一份或多份,称之为分片别本或别本。
别本也可以有三个最首要原因:
高可用性,以应对分片也许节点故障。出于这几个原因,分片别本要在分裂的节点上。
提供质量,增大吞吐量,寻觅能够相互在有着别本上推行。
同理可得,每五个目录能够被分成八个分片。索引也能够有0个或多个副本。复制后,各样索引都有主分片(母分片)和复制分片(复制于母分片)。分片和别本数量得以在每一种索引被成立时定义。索引成立后,能够在其他时候动态的变动别本数量,然则,不可能更动分片数。
暗中认可情状下,elasticsearch为各类索引分片5个主分片和1个别本,那就代表集群至少要求2个节点。索引将会有5个主分片和5个别本(1个全部别本),每种索引总共有13个分片。
种种elasticsearch分片是一个Lucene索引。二个单个Lucene索引有最大的文档数LUCENE-5843,
文书档案数限制为2147483519(MAX_VALUE – 128)。
可通过_cat/shards来监督分片大小。
1.2 logstash
1.2.1 logstash 介绍

美高梅手机版4858 1

path =>
[“/var/log/nginx/access.log”]

美高梅手机版4858 2

LogStash由JRuby语言编写,基于音讯(message-based)的粗略架构,并运维在Java虚构机(JVM)上。区别于分离的代理端(agent)或主机端(server),LogStash可配置单一的代理端(agent)与别的开源软件结合,以达成不一样的效果与利益。

美高梅手机版4858 3

type => “nginxlog”

一、先安装elasticsearch集群,并测量检验通过再实行其余软件安装。

1.2.2 logStash的四大组件

 

start_position => “beginning”

在test5,test4上设置分别安装elasticsearch-2.3.3.rpm 
前提要安装java1.8 步骤如下:

Shipper:发送事件(events)至LogStash;平日,远程代理端(agent)只要求周转那个组件就能够;
Broker and Indexer:接收并索引化事件;
Search and Storage:允许对事件进行寻觅和存款和储蓄;
Web Interface:基于Web的来得分界面
多亏出于上述组件在LogStash架构中可独立布置,才提供了更加好的集群扩张性。
1.2.2 LogStash主机分类

elk准备条件保持一致:

}

yum remove java-1.7.0-openjdk

代理主机(agent
host):作为事件的传递者(shipper),将种种日志数据发送至焦点主机;只需运维Logstash
代理(agent)程序;
大旨主机(central
host):可运转满含中间转载器(Broker)、索引器(Indexer)、搜索和存款和储蓄器(Search
and Storage)、Web界面端(Web
Interface)在内的各类零部件,以促成对日记数据的接受、管理和存款和储蓄。
1.3 kibana

elasticsearch安装:

下载并安装GPG key

rpm –import

添加yum源:

美高梅手机版4858 4

安装elasticsearch

yum install -y
elasticsearch

 

}

rpm -ivh jdk-8u51-linux-x64.rpm

Kibana
也是三个开源和免费的工具,他得以扶持您汇总、深入分析和查找主要数据日志并提供自身的web分界面。他得以为Logstash 和 ElasticSearch 提供的日记解析的 Web 分界面

logstash安装

下载并安装GPG key

  1. [root@linux-node2 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

添加yum仓库

  1. [root@linux-node2 ~]# vim /etc/yum.repos.d/logstash.repo
  2. [logstash-2.1]
  3. name=Logstash repository for 2.1.x packages
  4. baseurl=http://packages.elastic.co/logstash/2.1/centos
  5. gpgcheck=1
  6. gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
  7. enabled=1

安装logstash

  1. [root@linux-node2 ~]# yum install -y logstash

安装kibana

  1. [root@linux-node2 ~]#cd /usr/local/src
  2. [root@linux-node2 ~]#wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
  3. tar zxf kibana-4.3.1-linux-x64.tar.gz
  4. [root@linux-node1 src]# mv kibana-4.3.1-linux-x64 /usr/local/
  5. [root@linux-node2 src]# ln -s /usr/local/kibana-4.3.1-linux-x64/ /usr/local/kibana

安装Redis,nginx和java

yum install -y
redis nginx java

 

filter {

java -version

二、使用ELK必要性(化解运营痛点)
开辟职员不能登入线上服务器查看详细日志
种种系统皆有日记,日至数据分散难以搜索
日志数据量大,查询速度慢,只怕数额缺乏实时

管制配置elasticsearch

grok {

yum localinstall elasticsearch-2.3.3.rpm -y

三、elk计划之情形企图
3.1 机器准备

管理linux-node1的elasticsearch

修改elasticsearch配置文件,并授权

  1. [root@linux-node1 src]# grep -n '^[a-Z]' /etc/elasticsearch/elasticsearch.yml
  2. 17:cluster.name: chuck-cluster 判别节点是否是统一集群
  3. 23:node.name: linux-node1 节点的hostname
  4. 33:path.data: /data/es-data 数据存放路径
  5. 37:path.logs: /var/log/elasticsearch/ 日志路径
  6. 43:bootstrap.mlockall: true 锁住内存,使内存不会再swap中使用
  7. 54:network.host: 0.0.0.0 允许访问的ip
  8. 58:http.port: 9200 端口
  9. transport.tcp.port:
    9300
  10. node.master:
    true
  11. node.data:
    true
  12. discovery.zen.ping.unicast.hosts: [“192.168.1.46:9300”,
    “192.168.1.42:9301”]
  13. discovery.zen.minimum_master_nodes:
    1

  1. [root@linux-node1 ~]# mkdir -p /data/es-data
  2. [root@linux-node1 src]# chown elasticsearch.elasticsearch /data/es-data/

启动elasticsearch

  1. [root@linux-node1 src]# systemctl start elasticsearch
  2. [root@linux-node1 src]# systemctl enable elasticsearch
  3. ln -s '/usr/lib/systemd/system/elasticsearch.service' '/etc/systemd/system/multi-user.target.wants/elasticsearch.service'
  4. [root@linux-node1 src]# systemctl status elasticsearch
  5. elasticsearch.service - Elasticsearch
  6. Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled)
  7. Active: active (running) since Thu 2016-01-14 09:30:25 CST; 14s ago
  8. Docs: http://www.elastic.co
  9. Main PID: 37954 (java)
  10. CGroup: /system.slice/elasticsearch.service
  11. └─37954 /bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConc...
  12. Jan 14 09:30:25 linux-node1 systemd[1]: Starting Elasticsearch...
  13. Jan 14 09:30:25 linux-node1 systemd[1]: Started Elasticsearch.
  14. [root@linux-node1 src]# netstat -lntup|grep 9200
  15. tcp6 0 0 :::9200 :::* LISTEN 37954/java

 

做客9200端口,会把音讯体现出来 

 

 美高梅手机版4858 5

match => { “message” =>
“%{NGINXACCESS}” }

service elasticsearch start

两台虚构机:
192.168.3.17 node1.chinasoft.com
192.168.3.16 node2.chinasoft.com

elasticsearch实行相互

}

cd /etc/elasticsearch/

闭馆防火墙、selinux,时间设置成同样

相互的两种艺术

  • Java API : 
    node client 
    Transport client
  • RESTful API 
    Javascript 
    .NET 
    php 
    Perl 
    Python 
    Ruby

 使用head插件显示索引和分片情形

/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

在插件中加多一个index-demo/test的目录,提交诉求 

美高梅手机版4858 6

美高梅手机版4858 7

}

vim elasticsearch.yml

3.2 系统碰到(两台完全一致)

选用kopf插件监察和控制elasticsearch

/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

美高梅手机版4858 8

美高梅手机版4858 9

 

 

output {

美高梅手机版4858 10

cat
/etc/RedHat-release 
CentOS release 6.5
(Final)

管理linux-node2的elasticsearch

将linux-node1的安排文件拷贝到linux-node第22中学,并修改配置文件并授权 
铺排文件中cluster.name的名字自然要平等,当集群内节点运行的时候,暗中同意使用组播(多播),寻找集群中的节点

 

  1. [root@linux-node1 src]# scp /etc/elasticsearch/elasticsearch.yml 192.168.56.12:/etc/elasticsearch/elasticsearch.yml
  2. [root@linux-node2 elasticsearch]# sed -i '23s#node.name: linux-node1#node.name: linux-node2#g' elasticsearch.yml
  3. [root@linux-node2 elasticsearch]# mkdir -p /data/es-data
  4. [root@linux-node2 elasticsearch]# chown elasticsearch.elasticsearch /data/es-data/

 注意修改:

vim   elasticsearch.yml

transport.tcp.port: 9301

node.master: false
node.data: true

 

启动elasticsearch

  1. [root@linux-node2 elasticsearch]# systemctl enable elasticsearch.service
  2. ln -s '/usr/lib/systemd/system/elasticsearch.service' '/etc/systemd/system/multi-user.target.wants/elasticsearch.service'
  3. [root@linux-node2 elasticsearch]# systemctl start elasticsearch.service
  4. [root@linux-node2 elasticsearch]# systemctl status elasticsearch.service
  5. elasticsearch.service - Elasticsearch
  6. Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled)
  7. Active: active (running) since Thu 2016-01-14 02:56:35 CST; 4s ago
  8. Docs: http://www.elastic.co
  9. Process: 38519 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)
  10. Main PID: 38520 (java)
  11. CGroup: /system.slice/elasticsearch.service
  12. └─38520 /bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConc...
  13. Jan 14 02:56:35 linux-node2 systemd[1]: Starting Elasticsearch...
  14. Jan 14 02:56:35 linux-node2 systemd[1]: Started Elasticsearch.

输入master的ip访谈,出现了三个节点的新闻:

美高梅手机版4858 11

美高梅手机版4858 12

 

redis {

美高梅手机版4858 13

此处运用rpm包安装
rpm -ivh elasticsearch-2.3.3.rpm

配置logstash

行使rubudebug展现详细输出,codec为一种编解码器

  1. [root@linux-node1 bin]# /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug} }'
  2. Settings: Default filter workers: 1
  3. Logstash startup completed
  4. chuck ==>输入
  5. {
  6. "message" => "chuck",
  7. "@version" => "1",
  8. "@timestamp" => "2016-01-14T06:07:50.117Z",
  9. "host" => "linux-node1"
  10. } ==>使用rubydebug输出

使用logstash将音讯写入到elasticsearch

  1. [root@linux-node1 bin]# /opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.56.11:9200"] } }'
  2. Settings: Default filter workers: 1
  3. Logstash startup completed
  4. maliang
  5. chuck
  6. chuck-blog.com
  7. www.chuck-bllog.com

美高梅手机版4858 14

选择logstash运维一个计划文件,会在elasticsearch中写一份

[root@linux-node1 ~]# cat normal.conf
input { stdin { } }
output {
elasticsearch { hosts => [“localhost:9200”] }
stdout { codec => rubydebug }
}
[root@linux-node1 ~]# /opt/logstash/bin/logstash -f normal.conf
Settings: Default filter workers: 1
Logstash startup completed
123
{
“message” => “123”,
“@version” => “1”,
“@timestamp” => “2016-01-14T06:51:13.411Z”,
“host” => “linux-node1

 

port => “6379”

修改如下配置

rpm -ivh logstash-2.3.2-1.noarch.rpm 
安装kibana
cd /usr/local/src
wget

tar zxf kibana-4.3.1-linux-x64.tar.gz
mv kibana-4.3.1-linux-x64 /usr/local/
ln -s /usr/local/kibana-4.3.1-linux-x64/ /usr/local/kibana
安装Redis,nginx和java

征集系统日志的conf

[root@linux-node1 ~]# cat system.conf
input {
  file {
    path => “/var/log/messages”
    type => “system”
    start_position => “beginning”
    }
}
output {
  elasticsearch {
    hosts => [“192.168.56.11:9200”]
    index => “system-%{+YYYY.MM.dd}”
        }
}
[root@linux-node1 ~]# /opt/logstash/bin/logstash -f system.conf

 

 美高梅手机版4858 15

美高梅手机版4858 16

host => [“127.0.0.1”]

cluster.name: myelk 
#安装集群的名称,在三个集群里面都以其一名称,必须一致

rpm -ivh jdk-8u102-linux-x64.rpm

收集elasticsearch的error日志

 此处把上个system日志和这么些error(java程序日志)日志,放在一块儿。使用if决断,二种日志分别写到不相同索引中.此处的type(固定的正是type,不可改换)不得以和日志格式的别样三个域(能够精通为字段)的称呼再次,也正是说日志的域不得以有type那一个名称。

 

[root@linux-node1 ~]# cat all.conf
input {
  file {
    path => “/var/log/messages”
    type => “system”
    start_position => “beginning”
  }
  file {
    path => “/var/log/elasticsearch/chuck-cluster.log”
    type => “es-error”
    start_position => “beginning”
  }
}
output {
  if [type] == “system” {
    elasticsearch {
      hosts => [“192.168.56.11:9200”]
      index => “system-%{+YYYY.MM.dd}”
    }
  }
  if [type] == “es-error” {
    elasticsearch {
      hosts => [“192.168.56.11:9200”]
      index => “es-error-%{+YYYY.MM.dd}”
    }
  }
}
[root@linux-node1 ~]# /opt/logstash/bin/logstash -f all.conf

 美高梅手机版4858 17

data_type => “list”

node.name: test5   
#设置每一个节点的名,每种节点的称呼必须差异样。

yum install -y redis nginx

kibana配置

美高梅手机版4858 18

开头二个screen,并运转kibana

  1. [root@linux-node1 ~]# screen
  2. [root@linux-node1 ~]# /usr/local/kibana/bin/kibana
  3. 使用crtl +a+d退出screen

动用浏览器展开192.168.1.46:5601

美高梅手机版4858 19

 

美高梅手机版4858 20

 

key => “logstash-%{type}”

path.data:
/path/to/data   
#内定数量的贮存地方,线上的机器那一个要松手单一的大分区里面。

四、管理配置elasticsearch
4.1 管理node1.cinasoft.com的elasticsearch
修改elasticsearch配置文件,并授权
grep -n ‘^[a-Z]’ /etc/elasticsearch/elasticsearch.yml
cluster.name: chinasoft_elk_cluster 判断节点是或不是是统一集群
node.name: node1.chinasoft.com 节点的hostname
node.master: true 是不是为主节点
path.data: /data/es-data 数据寄放路线
path.logs: /var/log/elasticsearch/ 日志路线
bootstrap.mlockall: true 锁住内部存款和储蓄器,使内部存款和储蓄器不会再swap中利用
network.host: 0.0.0.0 允许访谈的ip
http.port: 9200 端口

logstash手机nginx、syslog和tcp日志

}

path.logs:
/path/to/logs    #日志的目录

mkdir -p /data/es-data
chown elasticsearch.elasticsearch /data/es-data/
启动elasticsearch
service elasticsearch start
Starting elasticsearch:                                    [  OK  ]
chkconfig elasticsearch on

搜罗nginx的访谈日志

在此间运用codec的json插件将日志的域进行分层,使用key-value的点子,使日志格式更清晰,易于寻找,还是能够减弱cpu的负载 
转移nginx的布局文件的日志格式,使用json

美高梅手机版4858 21

启动nginx

美高梅手机版4858 22

选用logstash将nginx访谈日志搜罗起来,继续写到all.conf中 

}

bootstrap.mlockall:
true 
#启航最优内部存款和储蓄器配置,运维就分配了十足的内部存款和储蓄器,品质会好广大,测量试验自身就不运营了。

/etc/init.d/elasticsearch status
elasticsearch (pid  3545) is running…
ss -tunlp|grep 9200
tcp    LISTEN     0      50                    :::9200                
:::*      users:((“java”,3545,108))
做客9200端口,会把音讯呈现出来

征集系统syslog日志

使用文件file的样式搜集了系统日志/var/log/messages,可是实际生育情状是索要使用syslog插件直接访谈 
修改syslog的配置文件,把日记音讯发送到514端口上

美高梅手机版4858 23

将system-syslog放到all.conf中,启动all.conf

美高梅手机版4858 24

 

 美高梅手机版4858 25

在elasticsearch插件中就可见到增加的system-syslog索引 

美高梅手机版4858 26

编写tcp.conf

美高梅手机版4858 27

利用nc对6666端口写入数据

[root@linux-node1 ~]# nc 192.168.1.46 6666 </var/log/yum.log

将音信输入到tcp的伪设备中

 echo “chuck” >/dev/tcp/192.168.1.46/6666

一时半刻到此停止….

 

其间output是将nginx的日志发送给redis的list,list是三个链表结构,首要职能是push、pop、获取三个限制的全体值等等,操作中

network.host: 0.0.0.0 
#监听的ip地址,这些代表全部的地方。

{
  “name” : “node1.chinasoft.com”,
  “cluster_name” : “chinasoft_elk_cluster”,
  “version” : {
    “number” : “2.3.3”,
    “build_hash” : “218bdf10790eef486ff2c41a3df5cfa32dadcfde”,
    “build_timestamp” : “2016-05-17T15:40:04Z”,
    “build_snapshot” : false,
    “lucene_version” : “5.5.0”
  },
  “tagline” : “You Know, for Search”
}

key驾驭为链表的名字,Redis的list类型其实正是三个各类子成分都以string类型的双向链表。链表的最大尺寸是(2的33遍方)。大家

http.port: 9200     
#监听的端口号

美高梅手机版4858 28
4.2 elasticsearch进行交互
4.2.1 交互的二种格局
Java API :
node client
Transport client
RESTful API
Javascript
.NET
php
Perl
Python
Ruby
4.2.2运用RESTful API实行互动
翻看当前目录和分片情状,稍后会有插件展现
curl -i -XGET ” -d ‘{
“query” {
“match_all”: {}
}
}’
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 95
{
“count” : 0, 索引0个
“_shards” : { 分区0个
“total” : 0,
“successful” : 0, 成功0个
“failed” : 0 失败0个
}
}

能够因此push,pop操作从链表的头顶恐怕尾巴部分加多删减成分。那使得list不仅可以够用作栈,也得以用作队列

discovery.zen.ping.unicast.hosts:
[“hostip”, “hostip”] 
#通晓集群的ip有那么些,未有集群就晤面世就一台专门的学业

选取head插件显示索引和分片意况

%{type}是调用前边的nginxlog,
date_type是将数据存入redis的list中

mkdir -pv /path/to/{data,logs}

[root@linux-node1 src]# /usr/share/elasticsearch/bin/plugin install
mobz/elasticsearch-head
报错:ERROR: failed to download out of all possible locations…, use
–verbose to get detailed information

刷新一下nginx的页面,使用redis-cli登入redis,并运用命令LLEN
logstash-nginxlog 就可查看到该list有微微个成分了,使用

chown elasticsearch.elasticsearch /path -R

原因:DNS配置有误,重新配置就可以

lindex logstash-nginxlog
0命令能够查看第三个元素,纵然那么些因素没被抽取将会直接留存于此list中

开发银行服务器  service elasticsearch start  并查看监控端口运营

在插件中增添七个index-demo/test的目录,提交央浼

再起步一台logstash服务器,yum -y install
logstash-1.5.4-1.noarch.rpm, cd /etc/logstash/conf.d/,

[root@test4 ~]# ss
-tln

{
“_index”: “index-demo”,
“_type”: “test”,
“_id”: “AVgAU8a2aw-Ww-rZC4yF”,
“_version”: 1,
“_shards”: {
“total”: 2,
“successful”: 1,
“failed”: 0
},
“created”: true
}

vim server.conf

State       Recv-Q Send-Q                         Local Address:Port    
                      Peer Address:Port

美高梅手机版4858 29

input {

LISTEN      0      128                                       :::54411  
                                                :::*

出殡一个GET(当然能够应用别的品类央求)需要,查询上述索引id
美高梅手机版4858 30
在基本查询中查阅所建索引
美高梅手机版4858 31
4.2管理node2.chinasoft.com的elasticsearch

redis {

LISTEN      0      128                                       :::111    
                                                  :::*

将node1的布局文件拷贝到node第22中学,并修改配置文件并授权
布置文件中cluster.name的名字自然要一直以来,当集群内节点运营的时候,暗中认可使用组播(多播),寻觅集群中的节点

port => “6379”

LISTEN      0      128                                        *:111    
                                                 *:*

scp /etc/elasticsearch/elasticsearch.yml
192.168.3.16:/etc/elasticsearch/

host => “192.168.204.135”

LISTEN      0      50                                            :::9200
                                                    :::*

node2: 
sed -i ‘s#node.name: node1.chinasoft.com#node.name:
node2.chinasoft.com#g’ /etc/elasticsearch/elasticsearch.yml
删去那行:
node.master: true

data_type => “list”

LISTEN      0      50                                        :::9300    
                                                :::*

验证:
[root@node2 network-scripts]# egrep -v ‘#|^$’
/etc/elasticsearch/elasticsearch.yml 
cluster.name: chinasoft_elk_cluster
node.name: node2.chinasoft.com
path.logs: /var/log/elasticsearch/
bootstrap.mlockall: true
network.host: 0.0.0.0
http.port: 9200

key => “logstash-nginxlog”

LISTEN      0      128                                       :::22      
                                                    :::*

mkdir -p /data/es-data
chown elasticsearch.elasticsearch /data/es-data/
启动elasticsearch

}

LISTEN      0      128                                        *:22    
                                                  *:*

service elasticsearch start
chkconfig elasticsearch on

}

LISTEN      0      128                                        *:51574  
                                              *:*

在node2配置中增多如下内容,使用单播格局(尝试了选拔组播,不过不奏效)
grep -n “^discovery” /etc/elasticsearch/elasticsearch.yml
discovery.zen.ping.unicast.hosts: [“node1.chinasoft.com”,
“node2.chinasoft.com”]
service elasticsearch restart

output {

LISTEN      0      128                              
         127.0.0.1:631                                              
 *:*

在浏览器中查看分片新闻,贰个目录暗中认可被分成了5个分片,每份数据被分为了七个分片(可以调养分片数量),下图中外围带蓝色框的为主分片,不带框的为别本分片,主分片错过,副本分片会复制一份成为主分片,起到了高可用的机能,主副分片也得以采用负载均衡加快查询速度,不过借使主副本分片都不知去向,则索引就是通透到底错失。
美高梅手机版4858 32

stdout {

LISTEN      0      128                                          ::1:631
                                                     :::*

4.3施用kopf插件监察和控制elasticsearch
/usr/share/elasticsearch/bin/plugin install
lmenezes/elasticsearch-kopf
访问:

codec => rubydebug

LISTEN      0      100                                          ::1:25  
                                                    :::*

美高梅手机版4858 33
点击菜单栏的nodes
能够见见节点的负荷,cpu适应情状,java对内部存款和储蓄器的应用(heap
usage),磁盘使用,运营时间
美高梅手机版4858 34

}

LISTEN      0      100                                    127.0.0.1:25  
                                                 *:*

除了这一个之外,kopf插件还提供了REST API
等,类似kopf插件的还应该有bigdesk,然而bigdesk前段时间还不补助2.1!安装bigdesk的艺术如下
/usr/share/elasticsearch/bin/plugin install lukas-vlcek/bigdesk
4.4node间组播通讯和分片

}

美高梅手机版4858 35

美高梅手机版4858 36

那台logstash服务器的指标是到redis上去取多少,并把多少输出到专门的学问输出,那时刷新一下nginx的页面就能够知到数据了

两台的陈设都一律正是下面的IP和note名称要安顿分歧等就行

美高梅手机版4858 37

拉开一台elasticsearch服务器,yum -y
install java-1.7.0-openjdk-devel, yum -y
elasticsearch-1.7.2.noarch.rpm

美高梅手机版4858 38

当第一个节点运营,它会组播开采别的节点,开掘集群名字同时,就能够活动步向集群。随意七个节点都以足以连绵起伏的,并不是主节点才方可连绵起伏,连接的节点起到的遵守只是聚集国国际信资公司息展现
最初能够自定义设置分片的个数,分片一旦设置好,就不可能更改。主分片和别本分片都放弃,数据即遗失,不能够苏醒,能够将无用索引删除。有个别老索引或然有的时候用的目录须要定时删除,不然会导致es能源剩余有限,占用磁盘大,搜索慢等。假如临时不想删除有个别索引,能够在插件中关闭索引,就不会占有内部存款和储蓄器了。
五、配置logstash
5.1绳趋尺步学习logstash
运维一个logstash,-e:在命令行施行;input输入,stdin标准输入,是三个插件;output输出,stdout:标准输出
# /opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{} }’
Settings: Debault filter worker: 1
Settings: Default pipeline workers: 2
Pipeline main started
chuck ==>输入
2016-10-28T03:10:52.276Z node1.chinasoft.com chuck ==>输出
www.chinasoft.com ==>输入
2016-10-28T03:11:03.169Z node1.chinasoft.com www.chinasoft.com
==>输出
采纳rubudebug展现详细输出,codec为一种编解码器
# /opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{
codec => rubydebug} }’
Settings: Default pipeline workers: 2
Pipeline main started
chunck ==>输入
{
       “message” => “chunck”,
      “@version” => “1”,
    “@timestamp” => “2016-10-28T03:15:02.824Z”,
          “host” => “node1.chinasoft.com”
} ==>使用rubydebug输出
上述每一条出口的从头到尾的经过称为一个事件,八个一律的出口的内容统一到共同称为一个风云(譬喻:日志中连连一样的日记输出称为三个平地风波)
动用logstash将消息写入到elasticsearch
# /opt/logstash/bin/logstash -e ‘input { stdin{} } output {
elasticsearch { hosts => [“192.168.3.17:9200”] } }’
Settings: Default pipeline workers: 2
Pipeline main started
jack
chunck
www.chinasoft.com
美高梅手机版4858 39
美高梅手机版4858 40
在elasticsearch中写一份,同一时候在地点输出一份,也正是在地面保留一份文件文件,也就无须在elasticsearch中再按期备份到远端一份了。此处使用的保存文本文件三大优势:1)文本最轻易易行
2)文本能够叁次加工 3)文本的降低比最高
# /opt/logstash/bin/logstash -e ‘input { stdin{} } output
{elasticsearch {hosts => [“192.168.3.17:9200”] } stdout{ codec
=> rubydebug } }’
Settings: Default pipeline workers: 2
Pipeline main started
www.baidu.com
{
       “message” => “www.baidu.com”,
      “@version” => “1”,
    “@timestamp” => “2016-10-28T03:26:18.736Z”,
          “host” => “node1.chinasoft.com”
}
www.elastic.co
{
       “message” => “www.elastic.co”,
      “@version” => “1”,
    “@timestamp” => “2016-10-28T03:26:32.609Z”,
          “host” => “node1.chinasoft.com”
}
运用logstash运维贰个安插文件,会在elasticsearch中写一份
# vim normal.conf
input { stdin { } }
output {
elasticsearch { hosts => [“192.168.3.17:9200”] }
stdout { codec => rubydebug }
}
# /opt/logstash/bin/logstash -f normal.conf 
Settings: Default pipeline workers: 2
Pipeline main started
123
{
       “message” => “123”,
      “@version” => “1”,
    “@timestamp” => “2016-10-28T03:33:35.899Z”,
          “host” => “node1.chinasoft.com”
}
chinasoft
{
       “message” => “chinasoft”,
      “@version” => “1”,
    “@timestamp” => “2016-10-28T03:33:44.641Z”,
          “host” => “node1.chinasoft.com”
}
5.2读书编写conf格式
输入插件配置,此处以file为例,能够安装多少个
input {
file {
path => “/var/log/messages”
type => “syslog”
}
file {
path => “/var/log/nginx/access.log”
type => “nginx”
}
}
介绍两种征集文件的主意,能够行使数组格局或许用*合作,也得以写三个path
path => [“/var/log/messages”,”/var/log/*.log”]
path => [“/data/mysql/mysql.log”]
设置boolean值
ssl_enable => true
文件大小单位
my_bytes => “1113” # 1113 bytes
my_bytes => “10MiB” # 10485760 bytes
my_bytes => “100kib” # 102400 bytes
my_bytes => “180 mb” # 180000000 bytes
jason收集
codec => “json”
hash收集
match => {
“field1” => “value1”
“field2” => “value2”

}
端口
port => 21
密码
my_password => “password”
5.3 学习编写input的file插件
5.3.1 input插件之input

编纂配置文件:vim
/etc/elasticsearch/elasticsearch.yml

美高梅手机版4858 41

美高梅手机版4858 42
sincedb_path:记录logstash读取地方的门路
start_postion
:富含beginning和end,钦命搜罗的职责,暗中同意是end,从尾部发轫
add_田野(field) 加三个域
discover_internal 开采距离,每隔多长时间搜聚贰次,默许15秒
5.4 学习编写output的file插件

编辑:cluster.name: loges node.name:
“node1”

[root@test5 ~]# ss
-tln

美高梅手机版4858 43
5.5 通过input和output插件编写conf文件

service elasticsearch start

State       Recv-Q Send-Q                         Local Address:Port    
                      Peer Address:Port

5.5.1 收罗系统日志的conf

# vim nginx.conf
input {
file {
path => “/var/log/nginx/access.log”
type => “nginx”
start_position => “beginning”
}
}
output {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “nginx-%{+YYYY.MM.dd}”
}
}

 

LISTEN      0      128                                        *:45822  
                                  *:*

# /opt/logstash/bin/logstash -f nginx.conf

美高梅手机版4858 44

美高梅手机版4858 45

5.5.2 收集elasticsearch的error日志
此地把上个system日志和那么些error(java程序日志)日志,放在一块儿。使用if推断,二种日志分别写到不相同索引中.此处的type(固定的正是type,不可改变)不得以和日志格式的别的三个域(能够精晓为字段)的名目再一次,也正是说日志的域不得以有type这么些称谓。
vim all.conf
input {
file {
path => “/var/log/nginx/access.log”
type => “nginx”
start_position => “beginning”
}
file {
path => “/var/log/elasticsearch/chinasoft_elk_cluster.log”
type => “es-error”
start_position => “beginning”
}
}
output {
if [type] == “nginx” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “nginx-%{+YYYY.MM.dd}”
}
}
if [type] == “es-error” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “es-error-%{+YYYY.MM.dd}”
}
}
}
5.6 把多行整个报错搜聚到二个风云中
5.6.1比如表明
以at.org起初的原委都属于同七个轩然大波,不过来得在分化行,那样的日志格式看起来很不低价,所以要求把她们联合到二个风云中

美高梅手机版4858 46
5.6.2引入codec的multiline插件
法定文档提供
input {
stdin {
codec => multiline {
` pattern => “pattern, a regexp”
negate => “true” or “false”
what => “previous” or “next”`
}
}
}
regrxp:使用正则,什么意况下把多行统一同来
negate:正向相配和反向相称
what:合併到近来行依然下一行
在正规输入和规范输出中测量检验以表明多行搜集到三个日志成功
vim muliline.conf
input {
stdin {
codec => multiline {
pattern => “^\[“
negate => true
what => “previous”
}
}
}
output {
stdout {
codec => “rubydebug”
}
}
# /opt/logstash/bin/logstash -f muliline.conf 
Settings: Default pipeline workers: 2
Pipeline main started
[1    
Received an event that has a different character encoding than you
configured. {:text=>”\\xE3[1\\n”,
:expected_charset=>”UTF-8″, :level=>:warn}
[2    
{
    “@timestamp” => “2016-10-28T06:19:59.275Z”,
       “message” => “\\xE3[1\\n”,
      “@version” => “1”,
          “host” => “node1.chinasoft.com”
}
{
chinasoft            
chinasoft.com
123456
[3
{
    “@timestamp” => “2016-10-28T06:21:13.812Z”,
       “message” => “[2\n{\nchinasoft\nchinasoft.com\n123456”,
      “@version” => “1”,
          “tags” => [
        [0] “multiline”
    ],
          “host” => “node1.chinasoft.com”
}
后续将上述试验结果放到all.conf的es-error索引中
vim all.conf
input {
file {
path => “/var/log/nginx/access.log”
type => “nginx”
start_position => “beginning”
}
file {
path => “/var/log/elasticsearch/chuck-clueser.log”
type => “es-error”
start_position => “beginning”
codec => multiline {
pattern => “^\[“
negate => true
what => “previous”
}
}
}
output {
if [type] == “nginx” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “nginx-%{+YYYY.MM.dd}”
}
}
if [type] == “es-error” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “es-error-%{+YYYY.MM.dd}”
}
}
}
六、熟悉kibana
6.1 编辑kinaba配置文件使之生效
# grep ‘^[a-Z]’ /usr/local/kibana/config/kibana.yml
server.port: 5601 # kibana端口
server.host: “0.0.0.0” 对外服务的主机
elasticsearch.url: “” # 和elasticsearch联系
kibana.index: ” .kibana # 在elasticsearch中添加.kibana索引

张开七个screen,并运维kibana
yum install -y screen
# screen
# /usr/local/kibana/bin/kibana
使用crtl +a+d退出screen
应用浏览器张开192.168.3.17:5601
6.2 验证error的muliline插件生效
在kibana中增加一个es-error索引
美高梅手机版4858 47

能够见见暗中同意的字段
选择discover查看
验证error的muliline插件生效(即过滤条件,将多行错误转为一行)
七、logstash收集nginx、syslog和tcp日志
7.1募集nginx的访谈日志
在此间运用codec的json插件将日志的域实行分层,使用key-value的艺术,使日志格式更清楚,易于搜索,还能收缩cpu的载重
转移nginx的布局文件的日志格式,使用json
vim /etc/nginx/nginx.conf
log_format json ‘{ “@timestamp”: “$time_local”, ‘
‘”@fields”: { ‘
‘”remote_addr”: “$remote_addr”, ‘
‘”remote_user”: “$remote_user”, ‘
‘”body_bytes_sent”: “$body_bytes_sent”, ‘
‘”request_time”: “$request_time”, ‘
‘”status”: “$status”, ‘
‘”request”: “$request”, ‘
‘”request_method”: “$request_method”, ‘
‘”http_referrer”: “$http_referer”, ‘
‘”body_bytes_sent”:”$body_bytes_sent”, ‘
‘”http_x_forwarded_for”: “$http_x_forwarded_for”, ‘
‘”http_user_agent”: “$http_user_agent” } }’;
# access_log /var/log/nginx/access_json.log main;
access_log /var/log/nginx/access.log json;
重复开动nginx
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# ss -tunlp|grep nginx
tcp    LISTEN     0      128                    *:80                  
 *:*      users:((“nginx”,13590,6),(“nginx”,13591,6))
日志格式显示如下

美高梅手机版4858 48
采取logstash将nginx访谈日志采撷起来,继续写到all.conf中
将nginx-log加入kibana中并突显

美高梅手机版4858 49
7.2 搜罗种类syslog日志
前文中早已运用文件file的款式收集了系统日志/var/log/messages,不过实际生产景况是要求使用syslog插件直接访问
修改syslog的配置文件,把日志新闻发送到514端口上
# vim /etc/rsyslog.conf

90 *.* @@192.168.3.17

# service rsyslog restart
将system-syslog放到all.conf中,启动all.conf

input {
syslog {
type => “system-syslog”
host => “192.168.3.17”
port => “514”
}
file {
path => “/var/log/nginx/access.log”
type => “nginx”
start_position => “beginning”
}
file {
path => “/var/log/elasticsearch/chuck-clueser.log”
type => “es-error”
start_position => “beginning”
codec => multiline {
pattern => “^\[“
negate => true
what => “previous”
}
}
}
output {
if [type] == “nginx” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “nginx-%{+YYYY.MM.dd}”
}
}
if [type] == “es-error” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “es-error-%{+YYYY.MM.dd}”
}
}
if [type] == “system-syslog” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “system-syslog-%{+YYYY.MM.dd}”
}
}
}
在elasticsearch插件中就可知到增添的system-syslog索引

7.3 收集tcp日志
美高梅手机版4858 50
编写tcp.conf

# vim tcp.conf
input {
tcp {
host => “192.168.3.17”
port => “6666”
}
}
output {
stdout {
codec => “rubydebug”
}
}
接纳nc对6666端口写入数据
# nc 192.168.3.17 6666 </var/log/yum.log
将音讯输入到tcp的伪设备中
将音信输入到tcp的伪设备中
# echo “chinasoft” >/dev/tcp/192.168.3.17/6666
八、logstash解耦之音信队列
8.1 图解使用音信队列架构
数据源Datasource把多少写到input插件中,output插件使用消息队列把信息写入到新闻队列Message
Queue中,Logstash indexing
Instance运维logstash使用input插件读取音信队列中的音讯,Fliter插件过滤后在选取output写入到elasticsearch中。
只要生产条件中不适用正则grok相称,能够写Python脚本从信息队列中读取音信,输出到elasticsearch中

美高梅手机版4858 51

美高梅手机版4858 52

8.2 上海教室架构的亮点
解耦,松耦合
铲除了是因为网络原因无法一直连elasticsearch的动静
有助于框架结构演变,扩充新内容
新闻队列能够选取rabbitmq,zeromq等,也能够使用redis,kafka(音讯不删除,可是正如重量级)等
九、引进redis到架构中
9.1 使用redis收集logstash的信息
修改redis的安排文件并运转redis
vim /etc/redis.conf
daemonize yes
bind 192.168.3.17
service redis restart
# ss -tunlp|grep 6379
tcp    LISTEN     0      128         192.168.3.17:6379                
 *:*      users:((“redis-server”,17337,4))
编写redis.conf
# vim redis-out.conf
input{
stdin{
}
}
output{
redis{
host => “192.168.3.17”
port => “6379”
db => “6”
data_type => “list” # 数据类型为list
key => “demo”
}
}
起步配置文件输入新闻
# /opt/logstash/bin/logstash -f redis-out.conf
Settings: Default pipeline workers: 2
Pipeline main started
chinasoft
chinasoft.com
运用redis-cli连接到redis并查阅输入的消息
# redis-cli -h 192.168.3.17
redis 192.168.3.17:6379> info
redis_version:2.4.10
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.6
process_id:17337
uptime_in_seconds:563
uptime_in_days:0
lru_clock:988645
used_cpu_sys:0.13
used_cpu_user:0.11
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:2
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:735488
used_memory_human:718.25K
used_memory_rss:1454080
used_memory_peak:735416
used_memory_peak_human:718.18K
mem_fragmentation_ratio:1.98
mem_allocator:jemalloc-2.2.5
loading:0
aof_enabled:0
changes_since_last_save:2
bgsave_in_progress:0
last_save_time:1477892296
bgrewriteaof_in_progress:0
total_connections_received:2
total_commands_processed:3
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:master
db6:keys=1,expires=0
redis 192.168.3.17:6379> select 6 #选择db6
OK
redis 192.168.3.17:6379[6]> keys * #选择demo这个key
1) “demo”
redis 192.168.3.17:6379[6]> LINDEX demo -2 #翻开新闻
“{\”message\”:\”chinasoft\”,\”@version\”:\”1\”,\”@timestamp\”:\”2016-10-31T05:44:02.823Z\”,\”host\”:\”node1.chinasoft.com\”}”
redis 192.168.3.17:6379[6]> LINDEX demo -1 #翻看音信
“{\”message\”:\”chinasoft.com\”,\”@version\”:\”1\”,\”@timestamp\”:\”2016-10-31T05:44:15.855Z\”,\”host\”:\”node1.chinasoft.com\”}”
为了下一步写input插件到把信息发送到elasticsearch中,多在redis中写入写多少
# /opt/logstash/bin/logstash -f redis-out.conf
Settings: Default pipeline workers: 2
Pipeline main started
chinasoft
chinasoft.com
a
b
c
d
….
翻开redis中名为demo的key长度
redis 192.168.3.17:6379[6]> llen demo
(integer) 37
9.3 将all.conf的内容改为经由redis
编写制定shipper.conf作为redis搜罗logstash配置文件
# cp all.conf shipper.conf

/usr/share/elasticsearch/bin/plugin -i
bigdesk -u file:///root/bigdesk-master.zip 安装插件

LISTEN      0      128                                       :::39620  
                                 :::*

# vim shipper.conf

input {
syslog {
type => “system-syslog”
host => “192.168.3.17”
port => “514”
}
file {
path => “/var/log/nginx/access.log”
type => “nginx”
start_position => “beginning”
}
file {
path => “/var/log/elasticsearch/chuck-clueser.log”
type => “es-error”
start_position => “beginning”
codec => multiline {
pattern => “^\[“
negate => true
what => “previous”
}
}
}
output {
if [type] == “nginx” {
redis{
host => “192.168.3.17”
port => “6379”
db => “6”
data_type => “list”
key => “nginx”
}
}
if [type] == “es-error” {
redis {
host => “192.168.3.17”
port => “6379”
db => “6”
data_type => “list”
key => “es-error”
}
}
if [type] == “system-syslog” {
redis{
host => “192.168.3.17”
port => “6379”
db => “6”
data_type => “list”
key => “system-syslog”
}
}

 

LISTEN      0      128                                       :::111    
                                 :::*

}

# /opt/logstash/bin/logstash -f shipper.conf 
Settings: Default pipeline workers: 2
Pipeline main started

在redis中查看keys
192.168.56.11:6379[6]> select 6
OK
192.168.56.11:6379[6]> keys *
1) “demo”
2) “nginx”
在别的机器上用ab进行对3.17的nginx进行压力测量试验,能够阅览redis的变通
# ab -c 10 -n 100000
redis 192.168.3.17:6379[6]> llen nginx
(integer) 10002
redis 192.168.3.17:6379[6]> llen nginx
(integer) 11989
redis 192.168.3.17:6379[6]> llen nginx
(integer) 12878
redis 192.168.3.17:6379[6]> llen nginx
(integer) 13757
编写indexer.conf作为redis发送elasticsearch配置文件(配置文件报错:Redis
connection problem {:exception=>#<Redis::CommandError: ERR
unknown command ‘script’>, :level=>:warn}
)测验不成事
# cat indexer.conf
input {
redis {
type => “system-syslog”
host => “192.168.3.17”
port => “6379”
db => “6”
data_type => “list”
key => “system-syslog”
}
redis {
type => “nginx”
host => “192.168.3.17”
port => “6379”
db => “6”
data_type => “list”
key => “nginx”
}
redis {
type => “es-error”
host => “192.168.3.17”
port => “6379”
db => “6”
data_type => “list”
key => “nginx”
}
}
output {
if [type] == “system-syslog” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “system-syslog-%{+YYYY.MM.dd}”
}
}
if [type] == “nginx” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “nginx-%{+YYYY.MM.dd}”
}
}
if [type] == “es-error” {
elasticsearch {
hosts => [“192.168.3.17:9200”]
index => “es-error-%{+YYYY.MM.dd}”
}
}
}
启动indexer.conf
# /opt/logstash/bin/logstash -f indexer.conf
Settings: Default filter workers: 1
鉴于日志量小,异常快就能够全部被发送到elasticsearch,key也就没了,所以多写写多少到日志中
# for n in `seq 10000` ;do echo $n
>>/var/log/nginx/access.log;done
# for n in `seq 10000` ;do echo $n >>/var/log/messages;done
十、生产怎么样上线ELK。
10.1日记分类
系统日志  rsyslog   logstash syslog插件
访谈日志  nginx     logstash  codec json
漏洞非常多日志  file      logstash file+ mulitline
运营日志  file      logstash codec json
配备日志  syslog    logstash syslog插件
debug日志 file      logstash json or mulitline
10.2 日志标准化
 1)路线固定标准化
 2)格式尽量采取json
10.3日志收罗步骤
系统日志开头->错误日志->运营日志->访问日志
前法学习了input和output插件,在此地球科学习fliter插件

kibana中寻觅状态码为200依然302的访谈记录:
status 302 or status 200
在客户端安装

正文永世更新链接地址:http://www.linuxidc.com/Linux/2016-11/137641.htm

美高梅手机版4858 53

浏览器中
访谈此插件

LISTEN      0      128                                        *:111    
                                  *:*

设置kibana 4.1.4,
kibana是八个前端呈现数据工具,能够安装在elasticsearch集群中的某三个节点,也得以设置在一台单独的节点

LISTEN      0      50                                        :::9200    
                                :::*

LISTEN      0      50                                        :::9300    
                                :::*

tar xf kibana-4.1.4-linux-x64.tar.gz -C
/usr/local/ cd /usr/local

LISTEN      0      128                                       :::22      
                                :::*

ln -s kibana-4.1.4-linux-x64 kibana cd
kibana/config

LISTEN      0      128                                        *:22    
                                   *:*

vim kibana.yml

LISTEN      0      128                                127.0.0.1:631    
                                  *:*

修改:其实默许无需修改什么,因为kibana和方面包车型地铁elasticsearch服务器在同样台主机上

LISTEN      0      128                                      ::1:631    
                                 :::*

开发银行程序在/usr/local/kibana/bin目录下,在/usr/local/kibana目录下行使bin/kibana
-h 查看命令扶助

LISTEN      0      100                                      ::1:25      
                                :::*

美高梅手机版4858 ,bin/kibana 运营在前台, bin/kibana
&运转在后台 ss -tnl 查看5601端口是或不是张开

LISTEN      0      100                                127.0.0.1:25      
                                 *:*

浏览器中

安装插件 head和kopf 之后拜谒 ip:9200/_plugin/head 
和ip:9200/_plugin/kopf 
(插件能够图形查看elasticsearch的场馆和删除创制索引)

于今将日志输出到ES集群中去,并有kibana体现

/usr/share/elasticsearch/bin/plugin
install lmenezes/elasticsearch-kopf

修改后面一台logstash服务器的配备文件,vim
server.conf

/usr/share/elasticsearch/bin/plugin
install mobz/elasticsearch-head

input {

[root@test5]#
/usr/share/elasticsearch/bin/plugin install
lmenezes/elasticsearch-kopf

redis {

-> Installing lmenezes/elasticsearch-kopf…

port => “6379”

Trying

host => “192.168.204.135”

Downloading
………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..DONE

data_type => “list”

Verifying

checksums if available …

key => “logstash-nginxlog”

NOTE: Unable to verify checksum for downloaded plugin (unable to find
.sha1 or .md5 file to verify)

}

Installed kopf into /usr/share/elasticsearch/plugins/kopf

}

[root@test5 ]#
/usr/share/elasticsearch/bin/plugin install
mobz/elasticsearch-head

output {

-> Installing mobz/elasticsearch-head…

elasticsearch {

Trying …

cluster => “loges”

Downloading
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….DONE

index =>
“logstash-%{+YYYY.MM.dd}”

Verifying
checksums if available …

}

NOTE: Unable to verify checksum for downloaded plugin (unable to find
.sha1 or .md5 file to verify)

}

Installed head into /usr/share/elasticsearch/plugins/head

logstash -f ./server.conf
–configtest

美高梅手机版4858 54

[2016-07-21 08:27:28.434] WARN —
Concurrent: [DEPRECATED] Java 7 is deprecated, please use Java
8.

美高梅手机版4858 55

Java 7 support is only best effort, it
may not work. It will be removed in next release (1.0).

二、安装nginx和logstash软件

Configuration OK

yum -y install zlib zlib-devel openssl openssl–devel pcre pcre-devel

反省安插文件时告知本身,就算java
7尽力援助但见小编本身使用java 8 由此今后要用java 8咯

nginx-1.8.1-1.el6.ngx.x86_64.rpm

实验成功这里报错了,大概是本子的难题,架构是安插logstash在web服务器上采访日志,并将日志传给redis,另外配置一台

logstash-2.3.3-1.noarch.rpm

logstash到redis上去取日志,然后将取到的日记传给elasticsearch服务器

jdk-8u51-linux-x64.rpm

 

在test1上设置好nginx服务
正是收罗它的日志呢

日志在/var/log/nginx/access.log

然后在test1上安装logstash-2.3.3-1.noarch.rpm

yum remove java-1.7.0-openjdk

rpm -ivh jdk-8u91-linux-x64.rpm

rpm -ivh logstash-2.3.3-1.noarch.rpm  

/etc/init.d/logstash start  #启航服务

/opt/logstash/bin/logstash -e
“input {stdin{}} output{stdout{ codec=>”rubydebug”}}” 
#检查评定条件  实行这么些命令检查评定条件常规否,运维完毕后 间接输入东西就能合世

Settings: Default pipeline workers: 1

Pipeline main started

hello world

{

“message” => “hello world”,

“@version” => “1”,

“@timestamp” => “2017-05-24T08:04:46.993Z”,

“host” => “0.0.0.0”

}

之后输入/opt/logstash/bin/logstash -e
‘input {stdin{}} output{ elasticsearch { hosts =>
[“192.168.253.200:9200”] index => “test”}}’ 

 正是输入东西到253.200的elasticsearch上
会在/path/to/data/myelk/nodes/0/indices 生成你名称test索引文件目录
能够多输入多少个到253.200的目录看看有未有文件有就表明健康。

[root@test4 ~]# ls
/path/to/data/myelk/nodes/0/indices/

test

然后在test1的/etc/logstash/conf.d
创设以.conf结尾的安排文件,作者访问nginx就叫nginx.conf了剧情如下

[root@test1 nginx]#
cd /etc/logstash/conf.d/

[root@test1 conf.d]# ls

nginx.conf

[root@test1 conf.d]# cat nginx.conf

input {

file {

type => “accesslog”

path => “/var/log/nginx/access.log”

start_position => “beginning”

}

}

output {

if [type] == “accesslog” {

elasticsearch  {

hosts => [“192.168.253.200”]

index => “nginx-access-%{+YYYY.MM.dd}”

}

}

}

/etc/init.d/logstash configtest

ps -ef |grep java

/opt/logstash/bin/logstash -f
nginx.conf

之后在elasticearch查看有没有索引生成。多访谈下nginx服务

只要未有就修改这一个文件

vi /etc/init.d/logstash

LS_USER=root   
###把这里换来root只怕把拜望的日志加个权限能够让logstash能够读取它
重启服务就能够生成索引了

LS_GROUP=root

LS_HOME=/var/lib/logstash

LS_HEAP_SIZE=”1g”

LS_LOG_DIR=/var/log/logstash

LS_LOG_FILE=”${LS_LOG_DIR}/$name.log”

LS_CONF_DIR=/etc/logstash/conf.d

LS_OPEN_FILES=16384

LS_NICE=19

KILL_ON_STOP_TIMEOUT=${KILL_ON_STOP_TIMEOUT-0} #default value is
zero to this variable but could be updated by user request

LS_OPTS=””

test4查看:

[root@test4 ~]# ls /path/to/data/myelk/nodes/0/indices/

nginx-access-2017.05.23  test

[root@test1 logstash]# cat logstash.log

{:timestamp=>”2017-05-24T16:05:19.659000+0800″,
:message=>”Pipeline main started”}

三、安装kibana软件

上边包车型地铁都安装到位后在test2下面安装kibana

rpm -ivh kibana-4.5.1-1.x86_64.rpm

编排配置文件在这里/opt/kibana/config/kibana.yml 就修改下边几项就行

server.port: 5601  端口

server.host: “0.0.0.0”  监听

elasticsearch.url: “” elasticsearch地址

美高梅手机版4858 56

/etc/init.d/kibana start 运转服务

访问kibana 

美高梅手机版4858 57

增加展示的目录,就是在上边定义的  nginx-access-2015.07.03

美高梅手机版4858 58

美高梅手机版4858 59

美高梅手机版4858 60

美高梅手机版4858 61

布署kibana上边包车型客车征集Nginx日志的logstash

在kibana那台服务器上边安装logstash(根据事先的步骤安装)

然后再logstash的/etc/logstash/conf.d/下面

写一个布署文件:

[root@test2 conf.d]#
vim nginx.conf

input {

file {

type => “accesslog”

path => “/var/log/nginx/access.log”

start_position => “beginning”

}

}

output {

if [type] == “accesslog” {

elasticsearch  {

hosts => [“192.168.253.200”]

index => “nginx-access-%{+MM.dd.YYYY}”

}

}

}

/opt/logstash/bin/logstash -f nginx.conf

查看Elasticsearch中多出了八个以月-日-年的Nginx访谈日志索引

[root@test4 ~]# ls /path/to/data/myelk/nodes/0/indices/

nginx-access-05.23.2017
 nginx-access-2017.05.23  test

然后在kibana,浏览器下边遵照事先的创立,生成二个新的日记文件

美高梅手机版4858 62

四、其余的部分公司署。

kibana是直接访问的可比不安全,大家需求用nginx访问代理,并安装权限用户名和密码访谈

先在kibana服务器上安装nginx 不介绍了

在nginx里面配备

#############################################################################

server

    {

            listen            80;

            server_name    localhost;

    auth_basic “Restricted Access”;

            auth_basic_user_file
/usr/local/nginx/conf/htpasswd.users;  #密码和用户

 

        location / {

            proxy_pass    ; 
#代办kibana的5601事后就足以一向80探访了

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header REMOTE-HOST $remote_addr;

            proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;

           

            }

}

#############################################################################

始建密码和用户文件:htpasswd.users 

亟需设置httpd-tool包先安装它

 htpasswd -bc /usr/local/nginx/conf/htpasswd.users admin paswdadmin 
#前面是用户前面是密码

美高梅手机版4858 63

之后通过拜会供给密码和用户同时是80端口了

美高梅手机版4858 64

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有