目录

 一、安装配置

二、图形化操作工具

三、采集数据

四、 文件输入插件

五、syslog输入插件采集每个系统节点的日志

七、grok过滤插件server4:


elasticsearch和mysql的区别

 一、安装配置

实验环境:
准备三台虚拟机,这三台虚拟机都要下载elasticsearch,7.6版本的就可以
本次实验从真机中传过来的
scp /home/westos/elasticsearch-7.6.1-x86_64.rpm server1:
scp /home/westos/elasticsearch-7.6.1-x86_64.rpm server2:
scp /home/westos/elasticsearch-76.1-x86_64.rpm server3:

server1中:

rpm -ivh elasticsearch-7.6.1-x86_64.rpm 
systemctl daemon-reload 
cd /etc/elasticsearch/
ls
vim elasticsearch.yml 
  17:cluster.name: my-es
  23 node.name: server1
  43 bootstrap.memory_lock: true   #不用swap分区的内存【内存不够的要注释掉】,这个命令存在,就要关闭swap分区【swapoff -a】
  55 network.host: 0.0.0.0
  59 http.port: 9200
  68 discovery.seed_hosts: ["server1", "server2","server3"]
  72 cluster.initial_master_nodes: ["server1", "server2","server3"]
grep -v ^# elasticsearch.yml 
cd /var/log/elasticsearch/
ls
vim /etc/security/limits.conf
  最后添加:elasticsearch soft memlock unlimited
           elasticsearch hard memlock unlimited
           elasticsearch - nproc 4096
           elasticsearch - nofile 65535

vim /usr/lib/systemd/system/elasticsearch.service
   36 LimitMEMLOCK=infinity
swapoff -a  #关掉swap分区
vim /etc/fstab 
  #注释掉最后一行
systemctl daemon-reload 
systemctl restart elasticsearch.service 
netstat -antpl
curl localhost:9200

 

 

把刚才编写的配置文件给server2传输过去
scp -p elasticsearch.yml server2:/etc/elasticsearch/
scp /etc/security/limits.conf server2:/etc/security/limits.conf

 server2中:

rpm -ivh elasticsearch-7.6.1-x86_64.rpm
cd /etc/elasticsearch/
ls
vim elasticsearch.yml  #配置文件根server1中修改一样,本次实验配置文件是由1中传过来的,所以只需要修改主机名,其他的在server1中已经修改过了
    23 node.name: server2
**vim /etc/security/limits.conf  #这个文件不用修改,server1中已经添加过了【server3同理】
vim /usr/lib/systemd/system/elasticsearch.service  #【server3同理】
  36 LimitMEMLOCK=infinity
swapoff -a
vim /etc/fstab #注释掉最后一行
systemctl daemon-reload 
systemctl restart elasticsearch.service 
curl localhost:9200

 

 server3: 跟server2同理
vim /etc/elasticsearch/elasticsearch.yml  #这个文件中的名词改为server3即可
vim /usr/lib/systemd/system/elasticsearch.service
   添加:LimitMEMLOCK=infinity
##关掉swap分区,刷新后启动服务
curl localhost:9200  #查看配置安装是否成功


二、图形化操作工具

在真机中

cd ~ 【普通用户】
podman pull docker.io/lmenezes/cerebro
podman run -d --name cerebro -p 9000:9000 docker.io/lmenezes/cerebro
podman ps -a
podman start cerebro 
podman ps 

 检测:172.25.70.250:9000
--登陆:http://172.25.70.1:9200 ##es的三个节点任何一个都可以链接
 【选举出来master是server1】

 head--可以做索引的浏览
真机中:# iptables -t nat -I POSTROUTING -s 172.25.70.0/24 -j MASQUERADE #让虚拟机可以上网

 server1中:

yum  install  -y unzip bzip2  #下载依赖包
rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm #安装nodejs的包
npm -v
node -v
npm install -g cnpm --registry=https://registry.npm.taobao.org  #用互联网装cnpm,要求虚拟机可以联网
cd
ls
unzip elasticsearch-head-master.zip  #head可以在官网直接下载压缩版的,
cd elasticsearch-head-master/ #一定要进到这个解压目录在cnpm install
ls
cnpm install   #会自动使用国内的源来安装 【执行第一次报错,执行第二次就好了】
ls
cnpm run start &
bg
cd /etc/elasticsearch/
vim elasticsearch.yml 
第59行后添加:
  http.cors.enabled: true
  http.cors.allow-origin: "*":
systemctl daemon-reload 
systemctl restart elasticsearch.service

 测试:172.25.70.1:9100/---[链接的时候要将localhost改为server1的ip,三个节点任何一个都可]
 可以用图形化的方式添加索引信息


三、采集数据

保证有三个节点可以成为master,server1不存数据,server2、3用来存储数据
server1:

cd /etc/elasticsearch/
vim elasticsearch.yml   #master端不存储数据
 23行后添加:
    node.master: true
    node.data: false
    node.ingest: true  
    node.ml: false
systemctl restart elasticsearch.service  #此时启动会报错,因为这个节点上有数据
journalctl -xe #看报错信息
cd /usr/share/elasticsearch/bin/
systemctl stop elasticsearch.service 
./elasticsearch-node repurpose 
 #把数据迁移走,这样master端就没有数据了【点击y】停掉服务之后才可以清理数据
cd
systemctl start elasticsearch.service  #开启服务

 server2、3中:

cd /etc/elasticsearch/
vim elasticsearch.ym
  node.master: true
  node.data: true   #存数据
  node.ingest: false  #预处理关闭
  node.ml: false  #继续学习关闭
systemctl restart elasticsearch.service

 

  测试:172.25.70.1:9100/-->可以看到server1是master了


采集数据:
需要重新开虚拟机4

安装logstash-7.6.1.rpm,【类似于管道,里面三个接管:输入、过滤、输出】
安装时候需要jdk
两个包都是传输过来的
server4:

rpm -ivh jdk-8u181-linux-x64.rpm   #一点要先安装jdk
rpm -ivh logstash-7.6.1.rpm   #安装完jdk在安装logstash,就不会报错了
cd /usr/share/logstash/
ls
cd bin/
pwd
ln -s /usr/share/logstash/bin/logstash /usr/bin/
which logstash 
cd
logstash -e 'input { stdin { } } output { stdout {} }' #输入对应stdin;输出对应stdout
  **看到successful就可以写数据了
  **eg:linux、hello
cd /etc/logstash/conf.d/
ls
vim test.conf  #把命令行的方式写道配置文件里
  input {
          stdin {}    #输入
  }

  output {
          stdout {}   #输出

          elasticsearch {
                  hosts => ["172.25.70.1:9200"]    #可以接多个(连到2上)
                  index => "logstash-%{+yyyy.MM.dd}"  #默认索引名
          }
  }
logstash -f /etc/logstash/conf.d/test.conf   #-f指定【不启动服务,作测试】
  **看到successful就可以写数据了
  eg:linux

 在网页上刷新可以看到刚才写的数据:redhat


四、 文件输入插件

cd /etc/logstash/conf.d/
vim test.conf 
  input {
          #stdin {}
          file {
                  path => "/var/log/messages"
                  start_position => "beginning"
          }
  }

  output {
          stdout {}
  
          elasticsearch {
                  hosts => ["172.25.70.1:9200"]
                  index => "messages-%{+yyyy.MM.dd}"
          }
  }

ll /var/log/messages
id logstash
chmod 644 /var/log/messages
ll /var/log/messages
logstash -f /etc/logstash/conf.d/test.conf 

 在网页上刷新可以看到刚导入的messages数据\

 !!注意:
在网页上删除刚导入的messages数据,要是想删除后重新导入一次会失败,因为logstash在读取文件时会有一个进度保存,为避免数据冗余在/usr/share/logstash/data/plugins/inputs/file/目录下删除sincedb文件,是文件的inode编号
具体做法:
在网页删除刚才读取的数据


server4中:

cd /usr/share/logstash/data/plugins/inputs/file/
l.
rm -rf .sincedb_452905a167cf4509fd08acb964fdb20c
cd 
logstash -f /etc/logstash/conf.d/test.conf 

 在网页上刷新就又会出现刚才的数据了


五、syslog输入插件
采集每个系统节点的日志

cd /etc/logstash/conf.d/
vim test.conf  
  input {
          #stdin {}
          #file {
          #       path => "/var/log/messages"
          #       start_position => "beginning"
          #}
          syslog {
                  port => 514    #本机开启一个514端口,作为日志接受
          }
  }

  output {
          stdout {}
  
          elasticsearch {
                  hosts => ["172.25.70.1:9200"]
                  index => "messages-%{+yyyy.MM.dd}"
          }
  }
logstash -f /etc/logstash/conf.d/test.conf

 在连接一台server4,看下514端口有没有启动
netstat -antlp  #查看514端口已经启动成功

在远端主机server1上:

vim /etc/rsyslog.conf 
  最后一行添加:*.* @@172.25.70.4:514  
#把本级的*.*推送到172.25.70.4的514端口(就是logstash,把自己伪装成日志采集服务器了)

systemctl restart rsyslog.service

 在server4中可以看到server1中日志已经发送到到server4上了


server2同理


server1中:

logger "hello world"


server4中接收到了1发送的日志


网页上可以直接在message中搜索hello world查看


目录

 一、安装配置

二、图形化操作工具

三、采集数据

四、 文件输入插件

五、syslog输入插件采集每个系统节点的日志

七、grok过滤插件server4:



server1:/var/log/elasticsearch/的my-es.log文件后边会有报错
scp my-es.log server4:/var/log/

 server4:

cd /etc/logstash/conf.d/
vim test.conf 
input {
        #stdin {}
        file {
                path => "/var/log/my-es.log"
                start_position => "beginning"
        }
        #syslog {
        #       port => 514
        #}
}

output {
        stdout {}

        elasticsearch {
                hosts => ["172.25.70.1:9200"]
                index => "myes-%{+yyyy.MM.dd}"
        }
}
logstash -f /etc/logstash/conf.d/test.conf

 在网页上刷新就会出现刚才采集的myes数据了 【但是日志记录的message识别是一行就是一条日志,应该是把一个整体作为日志的事件来记录】

cd /etc/logstash/conf.d/
vim test.conf 
input {
    #stdin {}
    file {
        path => "/var/log/my-es.log"
        start_position => "beginning"
        codec => multiline {
            pattern => "^\["   #匹配的关键字
            negate => true    #是否匹配到
            what => previous  #要参与什么动作,此处为向上合并【next为向下合并】
        }
    }
    #syslog {
    #    port => 514
    #}
}

output {
    stdout {}

    elasticsearch {
        hosts => ["172.25.70.1:9200"]
        index => "myes-%{+yyyy.MM.dd}"
    }
}

 

 在网页上删掉之前读取的myes文件,让其重新读取记录

server4:

cd /usr/share/logstash/data/plugins/inputs/file/
l.
rm -rf .sincedb_13f094911fdac7ab3fa6f4c93fee6639
cd
logstash -f /etc/logstash/conf.d/test.conf

 

在网页上刷新就会出现刚才采集的myes数据了,z这次是记录了完整的采集日志


七、grok过滤插件
server4:

yum install -y httpd
echo server4 > /var/www/html/index.html
systemctl start httpd
curl localhost

真机中:
ab -c1 -n100 http://172.25.70.4/index.html

server4:

/var/log/httpd/access_log  #存放着刚才的访问日志
cd /etc/logstash/conf.d/
vim test.conf 
input {
        file {
                path => "/var/log/httpd/access_log"
                start_position => "beginning"
        }
}


filter {
      grok {
        match => { "message" => "%{HTTPD_COMBINEDLOG}" }
      }
}

output {
        stdout {}

        elasticsearch {
                hosts => ["172.25.70.1:9200"]
                index => "apachelog-%{+yyyy.MM.dd}"
        }
}


 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐