ELK日志分析系统配置实验

实验前准备
Node1节点(至少2核4G内存):192.168.188.15,Elasticsearch、Kibana
Node2节点(至少2核4G内存):192.168.188.16,Elasticsearch
Apache节点:192.168.188.14,Logstash、Apache
客户端:192.168.188.1(本机win11)
关闭防火墙
systemctl stop firewalld
setenforce 0

  1. Elasticsearch集群部署(Node1、Node2)
    1. 环境准备
      更改主机名,更加直观
      Node1:hostnamectl set-hostname node1
      bash刷新一下

      Node2:hostnamectl set-hostname node2
      bash刷新一下

      配置dns,访问更加迅速
      192.168.188.15 node1
      192.168.188.16 node2

      安装JAVA环境
      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

      source /etc/profile.d/java.sh
      看一下有没有成功 java -version
    2. 部署Elasticsearch软件
      安装elasticsearch-rpm包
      rpm -ivh elasticsearch-5.5.0.rpm
      加载系统服务
      systemctl daemon-reload
      systemctl enable elasticsearch.service
      修改elasticsearch主配置文件
      cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
      vim /etc/elasticsearch/elasticsearch.yml
      指定集群名字

      指定节点名字,Node1和Node2的名字不一样,请注意


      指定数据存放路径

      指定日志存放路径

      启动时不锁定内存

      监听地址,设为所有地址

      监听端口,默认9200

      指定单薄查找的集群节点,如果/etc/hosts中没有添加dns,这里也可以写IP地址

      把最小主节点数设置为2
    3. 创建数据存放路径
      mkdir -p /data/elk_data
      chown elasticsearch:elasticsearch /data/elk_data/
    4. 启动elasticsearch
      systemctl start elasticsearch.service
      netstat -anpt | grep :9200
      如果没有就等几秒再试,还没有就去看日志
    5. 查看节点信息
      在客户端浏览器访问http://192.168.188.15:9200和http://192.168.188.16:9200
      ELK日志分析系统配置实验_第1张图片
      也可以通过访问http://192.168.188.15:9200/_cluster/health?pretty
      或者http://192.168.188.16:9200/_cluster/health?pretty的方式查看集群的健康状况
      ELK日志分析系统配置实验_第2张图片
      还可以通过访问http://192.168.188.15:9200/_cluster/state?pretty查看集群状态信息
      ELK日志分析系统配置实验_第3张图片
      这样看起来太费劲了,我们可以使用Elasticsearch-head插件更加方便地管理集群
  2. 安装Elasticsearch-head插件
    1. 安装依赖环境node和phantomjs
      yum -y install gcc gcc-c++ make
      安装node
      tar -zxvf /opt/node-v8.2.1.tar.gz
      cd node-v8.2.1/
      ./configure
      如果虚拟机有4核,那就-j 4,2核就-j 2,只有1核就make && make install慢慢等
      make -j 4 && make install
    2. 安装phantomjs前端框架
      tar -jxvf /opt/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
      cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
      cp phantomjs /usr/local/bin
    3. 安装Elasticsearch-head数据可视化工具
      tar -zxvf /opt/elasticsearch-head.tar.gz -C /usr/local/src/
      cd /usr/local/src/elasticsearch-head/
      npm install
      ELK日志分析系统配置实验_第4张图片
    4. 修改Elasticsearch主配置文件
      vim /etc/elasticsearch/elasticsearch.yml
      在最后添加两行
      http.cors.enabled: true
      http.cors.allow-origin: "*"
      ELK日志分析系统配置实验_第5张图片
      重启服务
      systemctl restart elasticsearch
    5. 启动elasticsearch-head服务
      cd /usr/local/src/elasticsearch-head/
      npm run start &
      ELK日志分析系统配置实验_第6张图片
    6. 通过9100的端口进行访问测试
      打开长这样
      ELK日志分析系统配置实验_第7张图片
      在elasticsearch进行连接查询
      ELK日志分析系统配置实验_第8张图片
    7. 索引测试
      通过命令插入一个索引,索引名为index-demo,类型为test
      curl -X PUT 'localhost:9200/index-demo1/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
      ELK日志分析系统配置实验_第9张图片
      在浏览器中可以访问到这个索引信息,可以看见索引默认被分片5个,并且有一个副本
      ELK日志分析系统配置实验_第10张图片
      点数据浏览可以看到该索引的相关信息
      ELK日志分析系统配置实验_第11张图片
  3. Logstash部署
    1. 更改主机名,方便实验
      hostnamectl set-hostname logstash
      bash
      ELK日志分析系统配置实验_第12张图片
    2. 安装apache服务(httpd)
      yum -y install httpd
      systemctl start httpd
    3. 安装Java环境
      1.1有做过,不会往前翻
      java -version
      不是jdk就行
    4. 安装logstash
      rpm -ivh logstash-5.5.1.rpm
      直接启动
      systemctl start logstash
      添加软链接方便使用
      ln -s /usr/share/logstash/bin/logstash /usr/local/bin
    5. 测试
      Logstash 命令常用选项:
      -f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
      -e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
      -t:测试配置文件是否正确,然后退出。
      定义输入和输出流,采用标准输入输出
      logstash -e 'input { stdin{} } output { stdout{} }'
      等一会,等看到successfully就可以输入了,输入内容测试一下logstash能不能用
      ELK日志分析系统配置实验_第13张图片
      测试结束按ctrl+c退出
      使用rubydebug输出详细格式
      codec是一种编解码器
      logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
      ELK日志分析系统配置实验_第14张图片
      再测试一下使用Logstash将信息写入Elasticsearch中
      logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.188.15:9200"] } }'
      ELK日志分析系统配置实验_第15张图片
      这里我们输入了并没有输出,因为输出已经发送到elasticsearch服务器上了
      直接在客户端上访问http://192.168.188.15:9100/
      发现多了一个索引
      ELK日志分析系统配置实验_第16张图片
      点到数据浏览查看更多信息
      ELK日志分析系统配置实验_第17张图片
    6. 定义logstash配置文件
      Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选)。
      Input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
      filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
      output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。
      格式为:input {...}、filter {...}、output {...}
      在每个部分中可以指定多个访问方式,例如如果要指定两个日志来源文件,格式为:
      input {
      file { path =>"/var/log/messages" type =>"syslog"}
      file { path =>"/var/log/httpd/access.log" type =>"apache"}
      }
      现在我们来实际操作一下
      假设我们要收集系统日志即/var/log/messages,并输出到elasticsearch中
      先让logstash可读系统日志
      chmod +r /var/log/messages
      修改logstash的配置文件
      vim /etc/logstash/conf.d/system.conf
      input {
          file {
                path => "/var/log/messages"   # 收集的日志位置
                type => "system"             # 类型
                start_position => "beginning"   # 开始位置为“开始”,也就是从头收集
          }
      }
      output {
          elasticsearch {
                hosts => ["192.168.188.15:9200"]  # 指定elasticsearch的地址和端口
                index => "system-%{+YYYY.MM.dd}"  # 索引格式system-后面加日期年月日
          }
      }

      ELK日志分析系统配置实验_第18张图片
      重启服务
      systemctl restart logstash
      浏览器访问测试
      ELK日志分析系统配置实验_第19张图片
      ELK日志分析系统配置实验_第20张图片
      没毛病
  4. Kibana部署
    1. 安装kibana
      rpm -ivh kibana-5.5.1-x86_64.rpm
    2. 设置kibana的主配置文件
      vim /etc/kibana/kibana.yml
      取消注释,默认端口5601

      取消注释,设置监听地址,0.0.0.0为所有地址

      取消注释,设置和elasticsearch建立连接的地址和端口

      取消注释,设置kibana的索引就是以.kibana为后缀

      启动服务
      systemctl start kibana
      查看端口有没有打开
      netstat -anpt | grep :5601
    3. 验证
      浏览器访问http://192.168.188.14:5601
      长这样
      ELK日志分析系统配置实验_第21张图片
      第一次登录需要添加一个 Elasticsearch 索引
      ELK日志分析系统配置实验_第22张图片
      点击create创建
      点击左侧的Discover可以看到图表信息
      ELK日志分析系统配置实验_第23张图片
      点一下Available Fields中的host右边的add按钮,就会看到按照host筛选后的结果
      ELK日志分析系统配置实验_第24张图片
      数据展示就会变成这样,同时host选项从Available Fields移到了Selected Fields中
      ELK日志分析系统配置实验_第25张图片
    4. 再配置一下,将logstash服务器上的日志,包括访问日志(access)和错误日志(error),都添加到Elasticsearch中,并通过Kibana展示
      vim /etc/logstash/conf.d/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.188.15:9200"]
                    index => "apache_access-%{+YYYY.MM.dd}"
                }
          }
          if [type] == "error" {
                elasticsearch {
                    hosts => ["192.168.188.15:9200"]
                    index => "apache_error-%{+YYYY.MM.dd}"
                }
          }
      }

      ELK日志分析系统配置实验_第26张图片
      用命令指定logstash的配置文件
      /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/apache_log.conf
    5. 先访问一下http://192.168.188.15:9100,注意地址和端口
      发现apache_error文件正常出现,但是没有apache_access文件
      ELK日志分析系统配置实验_第27张图片
      那是因为apache_access是空的,我们没有登录过
      所以我们在浏览器对apache的服务进行访问
      http://192.168.188.14:80
      ELK日志分析系统配置实验_第28张图片
      就这个页面,多刷新几次
      再回去看就有了
      ELK日志分析系统配置实验_第29张图片
      接着访问http://192.168.188.14:5601,注意地址和端口
      然后点击create index pattern按钮添加索引
      ELK日志分析系统配置实验_第30张图片
      ELK日志分析系统配置实验_第31张图片
      在索引名中添加apache_access-*和apache_error-*索引
      ELK日志分析系统配置实验_第32张图片
      ELK日志分析系统配置实验_第33张图片
      选择Discover然后选择要查看地索引
      ELK日志分析系统配置实验_第34张图片
      然后就可以用图形化的方式方便地查看日志啦

你可能感兴趣的:(Linux,运维,elk)