64、ELK记录nginx、httpd、mysqld日志

avatar
作者
猴君
阅读量:0

logstash收集服务日志文件

一、logstash收集appache日志文件,转发到elasticsearch

1、建立在elk1、2、3搭建好elk架构基础之上  192.168.168.61   es1  2/4g  192.168.168.62   es2  2/4g  192.168.168.63   logstash  kibana  nginx/http  4/8g  三台开启服务  systemctl stop firewalld setenforce 0  elk为主收集日志服务器  yum源安装httpd服务,logstash实现日志收集,elasticsearch实现存储,kibana实现可视化。  yum -y install httpd  cd /etc/logstash/conf.d  vim http.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.168.61:9200","192.168.168.62:9200"]         index => "appache_access-%{+YYYY.MM.dd}"         }         }         if [type] == "error" {         elasticsearch {         hosts => ["192.168.168.61:9200","192.168.168.62:9200"]         index => "appache_error-%{+YYYY.MM.dd}"         }         } }    logstash -f http.conf --path.data /opt/test3 & 

API接口:软件内部代码之间通信的接口 代码的连接点。

端口是对外提供访问程序的内容接口。

在这里插入图片描述

进入谷歌浏览器

访问192.168.168.63访问httpd

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

刷新几次后,到kibana查看日志

在这里插入图片描述

----------------------------------------------------------------------------------以上是收集appache日志文件---------------------------------------------------------------

二、logstash收集nginx日志文件,转发到elasticsearch

--------编译安装的nginx主机部署filebeat收集日志文件发送给logstash,logstash转让es1和es2接收,再让kibana可视化阅读----------------

2.1、filebeat轻量级日志收集服务

1、可以在本机收集日志

2、也可以远程收集日志

3、轻量级的日志收集系统,可以在非java环境运行

logstash是在jvm环境下,资源消耗很大,启动一个logstash要消耗500M左右的内存。

filebeat只消耗10M左右的内存。

在这里插入图片描述

[root@nginx1 opt]# mv filebeat-6.7.2-linux-x86_64 /usr/local/filebeat  配置文件vim  /usr/local/filebbeat/filebeat.yml  ##配置文件因为编译安装移动软件 
[root@nginx1 opt]# systemctl stop firewalld [root@nginx1 opt]# setenforce 0 [root@nginx1 opt]# tar -xf filebeat-6.7.2-linux-x86_64.tar.gz   [root@nginx1 opt]# mv filebeat-6.7.2-linux-x86_64 /usr/local/filebeat  [root@nginx1 opt]# cd /usr/local/filebeat/ [root@nginx1 filebeat]# ls fields.yml              filebeat.yml  module      README.md filebeat                kibana        modules.d filebeat.reference.yml  LICENSE.txt   NOTICE.txt [root@nginx1 filebeat]# vim filebeat.yml    21 - type: log  22   enabled: true  23   paths:  24     - /usr/local/nginx/logs/access.log  25     - /usr/local/nginx/logs/error.log ##开启日志收集,以及确定日志文本路径,指定标签和发送到目标主机的logstash  26   tags: ["nginx"]  27   fields:  28     service_name: 192.168.168.31_nginx  ##定义日志的名称  29     log_type: nginx  30     from: 192.168.168.31 

在这里插入图片描述

151 #output.elasticsearch:  ##注释 152   # Array of hosts to connect to. 153 #   hosts: ["localhost:9200"]   ##注释 

在这里插入图片描述

164 output.logstash: 165   # The Logstash hosts 166   hosts: ["192.168.168.63:5045"]  ##日志发送到此日志收集服务器logstash 

在这里插入图片描述

5044 logstash默认的端口

端口范围是计算机网络通信中的一个重要概念,用于标识网络通信中的不同应用程序或服务。端口号通过一个16位的数字来表示,因此其范围是从0到65535。这些端口号可以根据其用途和分配方式进一步细分为不同的类别,具体如下:  ### 端口号分类  1. 系统或保留端口(Well-Known Ports)     :     - 范围:从0到1023。    - 用途:这些端口号通常分配给系统级或者熟知的服务和应用。例如,HTTP服务通常运行在端口80上,而HTTPS则是443。普通用户通常不拥有权限来绑定这些端口。  2. 注册端口(Registered Ports)     :     - 范围:从1024到49151。    - 用途:这些端口号没有固定的用途,但对于一些无法使用系统端口的服务来说,这些端口号是预留的。有些软件企业会为自己的服务预留一些端口号。  3. 动态和/或私有端口(Dynamic or Private Ports)     :     - 范围:从49152到65535。    - 用途:这些端口不被ICANN或IANA管理,可供任意使用,常用于客户端软件临时通讯,比如临时的端点。  ### 端口号的特殊用途  - **端口0**:通常不用于常规网络通信,但在某些特殊情况下用作服务请求的占位标识。 - **端口号80和443**:分别是HTTP和HTTPS通信的标准端口。 - **端口号25**:通常用于SMTP,即简单邮件传输协议,用于电子邮件发送。 - **端口号53**:通常用于DNS服务,即域名解析服务。  ### 端口号的使用注意事项  - 尽管每个端口号通常与某些特定的服务相关联,但任何端口都可以被任何服务或应用程序使用,前提是操作系统和网络策略允许。 - 管理员可以根据安全要求或配置更改端口号的分配,但应确保相关服务或应用程序能够正确识别和使用新的端口号。  ### 总结  端口范围是从0到65535,根据端口号的分配和使用方式,可以将其分为系统或保留端口、注册端口和动态或私有端口。这些端口号在计算机网络通信中起着至关重要的作用,用于标识不同的服务和应用程序。了解端口号的分类和用途有助于更好地管理和维护网络通信环境。 

2.2、logstash设置文件识别标签,接收文件

logstash收集nginx的日志,接收filebeat发送过来的日志文件,识别指定的标签,进行接收。

1、建立在elk1、2、3搭建好elk架构基础之上

192.168.168.61 es1 2/4g

192.168.168.62 es2 2/4g

192.168.168.63 logstash kibana nginx/http 4/8g

[root@elk3 ~]# cd /etc/logstash/conf.d/  [root@elk3 conf.d]# vim nginx_31.conf     input {         beats { port => "5045"} } output {         if "nginx" in [tags] {                 elasticsearch {                 hosts => ["192.168.168.61:9200","192.168.168.62:9200"]                 index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"         } } }   [root@nginx1 filebeat]# pwd /usr/local/filebeat  nohup ./filebeat -e -c filebeat.yml > filebeat.out &  ##先启动nginx的filebeat轻量级收集日志服务  ##解释: nohup ./filebeat -e -c filebeat.yml > filebeat.out &  -e:输出到标准输出  -c:指定配置文件  nohup:在系统的后台运行,不会因为终端的额关闭而停止,关闭xhell也不会关闭 可以把运行的日志保存到指定文件    [root@elk3 conf.d]# logstash -f nginx_31.conf --path.data /opt/test3 & 

浏览器打开访问192.168.168.31(也就是nginx,filebeat服务器)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ps -aux | grep logstash ##查看logstash开启的后台进程

在这里插入图片描述

三、filebeat实现收集转发httpd、nginx、msqld的日志到logstash,logstash发送到es存储,kibana实现可视化读

1、建立在elk1、2、3搭建好elk架构基础之上

192.168.168.61 es1 2/4g

192.168.168.62 es2 2/4g

192.168.168.63 logstash kibana nginx/http 4/8g

192.168.168.11 编译安装mysql 编译安装nginx yum源安装httpd 编译拿安装filebeat

远程收集发送到logstash主机

192.168.168.11_mysqld-* ##mysql的日志需要在/etc/my.cnf下配置打开

192.168.168.11_nginx-*

192.168.168.11_httpd-*

-------------------以下操作均对nginx+mysql+http进行操作--------------------

vim /etc/my.cnf

max_allowed_packet=16M
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log ##数据库日志存储位置
server-id = 1

systemctl restart mysqld ##改完配置文件重启服务

yum -y install httpd ##yum源安装httpd

nginx端口和httpd服务端口一致

vim /usr/local/nginx/conf/nginx.conf ##编译安装nginx的配置文件目录

vim /etc/nginx/nginx.conf ##yum源安装的nginx的配置文件目录

server {
listen 81;##避免端口冲突,设置监听端口为81;

systemctl restart nginx.service ##改完配置文件重启服务

systemctl restart httpd ##重启服务

测试服务开启状态

curl 192.168.168.11 ##查看appache服务开启状态

或者浏览器访问

在这里插入图片描述

curl 192.168.168.11:81 ##查看nginx服务开启状态

在这里插入图片描述

编译安装filebeat,并配置文件

[root@mysql1 opt]# systemctl stop firewalld [root@mysql1 opt]# setenforce 0 [root@mysql1 opt]# tar -xf filebeat-6.7.2-linux-x86_64.tar.gz   [root@mysql1 opt]# mv filebeat-6.7.2-linux-x86_64 /usr/local/filebeat  [root@mysql1 opt]# cd /usr/local/filebeat/ [root@mysql1 filebeat]# ls fields.yml              filebeat.yml  module      README.md filebeat                kibana        modules.d filebeat.reference.yml  LICENSE.txt   NOTICE.txt [root@mysql1 filebeat]# vim /usr/local/filebeat/filebeat.yml      21 - type: log  22   enabled: true  23   paths:  24     - /var/log/httpd/access_log  25     - /var/log/httpd/error_log  26   tags: ["httpd"]  27   fields:  28     service_name: 192.168.168.11_http  29     log_type: httpd  30     from: 192.168.168.11  31   32 - type: log  33   enabled: true  34   paths:  35     - /usr/local/nginx/logs/access.log  36     - /usr/local/nginx/logs/error.log  37   tags: ["nginx"]  38   fields:  39     service_name: 192.168.168.11_nginx  40     log_type: nginx  41     from: 192.168.168.11  42   43 - type: log  44   enabled: true  45   paths:  46     - /usr/local/mysql/data/mysql_general.log  47   tags: ["mysqld"]  48   fields:  49     service_name: 192.168.168.11_mysqld  50     log_type: mysqld  51     from: 192.168.168.11      171 #output.elasticsearch: 172   # Array of hosts to connect to. 173 #  hosts: ["localhost:9200"]  184 output.logstash: 185   # The Logstash hosts 186   hosts: ["192.168.168.63:5048"] 

在这里插入图片描述

--------------------以上配置好filebeat的日志收集转发到logstash-----------------------

-----------------------------下面配置logstash的日志接收文件--------------------------

[root@elk3 ~]# cd /etc/logstash/conf.d/ [root@elk3 conf.d]# ls http.conf  nginx_31.conf  nmh_11.conf  system.conf [root@elk3 conf.d]# vim nginx_31.conf   input {         beats { port => "5048"} } output {         if "nginx" in [tags] {                 elasticsearch {                         hosts => ["192.168.168.61:9200","192.168.168.62:9200"]                         index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"         } }         if "mysqld" in [tags] {                 elasticsearch {                         hosts => ["192.168.168.61:9200","192.168.168.62:9200"]                         index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"         } }         if "httpd" in [tags] {                 elasticsearch {                         hosts => ["192.168.168.61:9200","192.168.168.62:9200"]                         index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"         } } } 

-------------------------以上配置文件已完成,下面开始启动,需要先启动filebeat服务,转发到logstash,再启动logstash--------------------------------

在filebeat主机上后台启动filebeat文件  [root@mysql1 ~]# cd /usr/local/filebeat/ [root@mysql1 filebeat]# ls data        filebeat.out            kibana       modules.d fields.yml  filebeat.reference.yml  LICENSE.txt  NOTICE.txt filebeat    filebeat.yml            module       README.md [root@mysql1 filebeat]# nohup ./filebeat -e -c filebeat.yml > filebeat.out &  在logstash主机上启动,实现接收filebeat的日志文件  [root@elk3 conf.d]# pwd /etc/logstash/conf.d [root@elk3 conf.d]# logstash -f nmh_11.conf --path.data /opt/test3 & 

-----------------------------------以上服务全部启动完成----------------------------

测试:

浏览器打开访问192.168.168.31(也就是mysqld,httpd,nginx,filebeat服务器,此时http服务设置的是80端口,nginx设置81端口,mysqld的端口为3306)

在这里插入图片描述

在这里插入图片描述

logstash -f nginx_11.conf --path.data /opt/test3 &

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!