一步步教你部署 ELK 日志分析系统(图文详解!)


一、拓扑图

mark

二、需求描述

  1. 配置 ELK 日志分析群集
  2. 使用 Logstash 收集日志
  3. 使用 Kibana 查看分析日志

三、环境介绍

主机主机名IP 地址主要软件
Node1CentOS 7-1192.168.126.11Elasticsearch、Kibana
Node2CentOS 7-2192.168.126.12Elasticsearch
ApacheCentOS 7-3192.168.126.13Logstash

四、配置步骤

① 配置 Elasticsearch 环境

  1. 登录 CentOS 7-1(192.168.126.11),更改主机名,配置域名解析并查看 Java 环境

    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    #万恶之源,先关防火墙及安全机制
    
    hostnamectl set-hostname node1
    su -
    
    vim /etc/hosts
    192.168.126.11   node1
    192.168.126.12   node2
    #尾部添加
    
    java -version
    #查看JAVA环境,一般默认是1.8.0_131
    
    --JDK--
    cd /opt
    #将软件包传至该目录下
    rpm -ivh jdk-8u201-linux-x64.rpm
    
    vim /etc/profile.d/java.sh
    export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    export PATH=$JAVA_HOME/bin:$PATH
    #注释:
    1.输出定义java的工作目录
    2.输出指定java所需的类文件
    3.输出重新定义环境变量,$PATH一定要放在$JAVA_HOME的后面,让系统先读取到工作目录中的版本信息
    
    
    source /etc/profile.d/java.sh
    java -version
    #检查
    
  2. 登录 CentOS 7-2(192.168.126.12),同上操作

    hostnamectl set-hostname node2
    

② 部署 Elasticsearch 软件

(node1)192.168.126.11:

  1. 安装 rpm 包

    cd /opt
    #将软件包传至该目录下
    rpm -ivh elasticsearch-5.5.0.rpm 
    
  2. 加载系统服务

    systemctl daemon-reload
    systemctl enable elasticsearch.service
    
  3. 更改 ES 主要配置文件

    cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
    #备份
    
    vim /etc/elasticsearch/elasticsearch.yml
    //17行	cluster.name: my-elk-cluster							#集群名字
    //23行	node.name: node1										#节点名字
    //33行	path.data: /data/elk_data								#数据存放路径
    //37行	path.logs: /var/log/elasticsearch/						#日志存放路径
    //43行	bootstrap.memory_lock: false							#不在启动的时候锁定内存(前端缓存,与IOPS-性能测试方式,每秒读写次数相关)
    //55行	network.host: 0.0.0.0									#提供服务绑定的IP地址,0.0.0.0代表所有地址
    //59行	http.port: 9200											#侦听端口为9200
    //68行	discovery.zen.ping.unicast.hosts: ["node1", "node2"]	#集群发现通过单播实现
    
    
    grep -v "^#" /etc/elasticsearch/elasticsearch.yml
    #检查配置
    
    scp elasticsearch.yml root@192.168.126.12:/etc/elasticsearch/elasticsearch.yml
    #将配置好的文件用SCP传至node2,后续只用去改个节点名字即可
    
    mark
  4. 创建数据存放路径并授权

    mkdir -p /data/elk_data
    chown elasticsearch:elasticsearch /data/elk_data/
    
  5. 查看启动 ES 是否成功开启

    systemctl start elasticsearch.service
    netstat -antp | grep 9200
    #这里可能出现一次性检测不出来端口号的情况,多restart重启几次服务即可
    
    mark
  6. 查看节点信息,用宿主机浏览器打开 http://192.168.126.11:9200

    mark

node2(192.168.126.12):同上

...
...
vim /etc/elasticsearch/elasticsearch.yml
#23行	node.name: node2										#节点名字
...
...
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
#检查配置
...
...
查看节点信息,用宿主机的浏览器打开  http://192.168.126.12:9200
mark mark mark

③ 检查集群的健康和状态

#检查群集健康情况
用宿主机浏览网页,打开 http://192.168.126.11:9200/_cluster/health?pretty
mark
#检查群集状态信息
打开 http://192.168.126.11:9200/_cluster/state?pretty
mark

④ 安装 elasticsearch-head 插件

上述查看集群的方式是不是有点不方便?

我们可以通过安装 elasticsearch-head 插件来解决这个问题

node1(192.168.126.11):

  1. 编译安装 node 组件依赖包

    cd /opt
    #将软件包传至本目录下
    yum install -y gcc gcc-c++ make
    
    tar zxvf node-v8.2.1.tar.gz
    cd node-v8.2.1/
    ./configure 
    make -j 4 && make install
    #过程耗时较长!!建议同时编译安装node2,然后再去配置Apache
    
  2. 安装 phantomjs(前端框架)

    cd /usr/local/src/
    #将软件包传至本目录下
    tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
    cd phantomjs-2.1.1-linux-x86_64/bin
    cp phantomjs /usr/local/bin
    
  3. 安装 elasticsearch-head(数据可视化工具)

    cd /usr/local/src/
    #将软件包传至本目录下
    tar zxvf elasticsearch-head.tar.gz
    
    cd elasticsearch-head/
    npm install
    
  4. 修改主配置文件

    cd ~
    vim /etc/elasticsearch/elasticsearch.yml
    #在尾部添加配置
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    #注释
    1.开启跨域访问支持,默认为false
    2.跨域访问允许的域名地址
    
    
    systemctl restart elasticsearch
    
  5. 启动 elasticsearch-head

    cd /usr/local/src/elasticsearch-head/
    npm run start &
    #切换到后台运行
    
    netstat -lnupt |grep 9100
    netstat -lnupt |grep 9200
    
    mark

node2(192.168.126.12):同上

...
...
cd /usr/local/src/elasticsearch-head/
npm run start &
...
...
netstat -lnupt | grep 9100
netstat -lnupt | grep 9200
mark
1.在宿主机上打开浏览器,访问 http://192.168.126.11:9100/
2.然后在 Elasticsearch 后面的栏目中摄入 http://192.168.126.11:9200,点击连接,查看群集颜色是否是健康的绿色
3.访问 http://192.168.126.12:9100/,同上操作
mark mark

登录 node1(192.168.126.11):

curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"xcf","mesg":"hello world"}'
#索引为index-demo,类型为test,可以看到成功创建
mark
1.打开浏览器输入http://192.168.126.11:9100/ 查看索引信息
2.可以看见索引默认被分片5个,并且有一个副本
3.点击数据浏览,会发现在node1上创建的索引为index-demo,类型为test这些相关的信息
mark mark

⑤ 安装 logstash 并做一些日志搜集输出到 ES 中

  1. 更改主机名并安装 Apache httpd 服务

    hostnamectl set-hostname apache
    su -
    
    yum install -y httpd
    systemctl start httpd
    
  2. 安装 JAVA 环境:同 node1/2

    java -version
    
    mark
  3. 安装 logstash

    cd /opt
    #将软件包传至本目录下
    rpm -ivh logstash-5.5.1.rpm
    
    systemctl start logstash.service
    systemctl enable logstash.service
    
    ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
    #建立软连接,方便系统识别
    
  4. 做对接测试 logstash(Apache)与 elasticsearch(node)功能是否正常

    Logstash [选项] [对象]
    -f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
    -e:后面跟着字符串 该字符串可以被当做logstash的配置(如果是" ",则默认使用stdin作为输入、stdout作为输出)
    -t:测试配置文件是否正确,然后退出
    
  5. 输入采用标准输入,输出采用标准输出

    logstash -e 'input { stdin{} } output { stdout{} }'
    ...
    ...
    www.baidu.com		#输入内容
    ...
    www.4399.com		#输入内容
    
    mark
  6. 使用 rubydebug 显示详细输出,codec 为一种编解码器

    logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.126.11:9200"] } }'
    ...
    ...
    www.baidu.com		#输入内容
    www.google.com.cn	#输入内容
    
    mark
  7. 使用宿主机浏览 http://192.168.126.11:9100/ ,查看索引信息

    mark mark mark

⑥ 登录 Apache 主机做对接配置(Kibana)

  1. logstasgh 配置文件

    #Logstash配置文件主要由三部分组成:input、output、filter(根据需要)
    
    chmod o+r /var/log/messages
    ll /var/log/messages
    
    mark
  2. 配置文件中定义的是收集系统日志(system)

    vim /etc/logstash/conf.d/system.conf
    input {
    		file{
            path => "/var/log/messages"
            type => "system"
            start_position => "beginning"
    			}
    		}
    
    output {
            elasticsearch {
              hosts => ["192.168.126.11:9200"]
              index => "system-%{+YYYY.MM.dd}"
    					  }
           }
    
    systemctl restart logstash.service
    
  3. 宿主机浏览 http://192.168.126.11:9100/ 查看索引信息

    mark
  4. 在 node1 主机安装 Kibana

    cd /usr/local/src/
    #将软件包传至本目录下
    rpm -ivh kibana-5.5.1-x86_64.rpm
    
    cd /etc/kibana/
    cp kibana.yml kibana.yml.bak
    
    vim kibana.yml
    //2行	server.port: 5601                					#kibana打开的端口
    //7行	server.host: "0.0.0.0"           					#kibana侦听的地址
    //21行	elasticsearch.url: "http://192.168.126.11:9200"		#和elasticsearch建立联系
    //30行	kibana.index: ".kibana"								#在elasticsearch中添加.kibana索引
    
    
    systemctl start kibana.service
    systemctl enable kibana.service
    
  5. 宿主机浏览 192.168.126.11:5601

    1.首次登录创建一个索引 名字:system-*  ##这是对接系统日志文件
    Index name or pattern   
    #下面输入ystem-*
    
    2.然后点最下面的出面的create 按钮创建
    
    3.然后点最左上角的Discover按钮,会发现system-*信息
    
    4.然后点下面的host旁边的add,会发现右面的图只有Time和host选项了,个比较友好
    
    mark mark mark
  6. 对接 Apache 主机的 Apache 日志文件

    Apache(192.168.126.13):
    
    cd /etc/logstash/conf.d/
    touch apache_log.conf
    
    vim apache_log.conf
    input {
           file{
            path => "/etc/httpd/logs/access_log"
            type => "access"
            start_position => "beginning"
            }
           file{
            path => "/etc/httpd/logs/error_log"
            type => "error"
            start_position => "beginning"
            }
            
          }
    output {
            if [type] == "access" {
            elasticsearch {
              hosts => ["192.168.126.11:9200"]
              index => "apache_access-%{+YYYY.MM.dd}"
              }
            }
            if [type] == "error" {
            elasticsearch {
              hosts => ["192.168.126.11:9200"]
              index => "apache_error-%{+YYYY.MM.dd}"
              }
            }
            }
    
    
    /usr/share/logstash/bin/logstash -f apache_log.conf
    
    
    -----
    1.宿主机浏览器,输入http://192.168.126.13,访问apache
    
    2.输入http://192.168.126.11:9100/,查看索引信息
    
    3.输入http://192.168.126.11:5601
    点击左下角有个management选项
    index  patterns
    create index pattern
    分别创建"apache_error-*""apache_access-*"的索引
    
mark mark mark mark mark
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页