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

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 &

相关推荐
冰 河40 分钟前
《Nginx核心技术》第16章:实现Nginx的高可用负载均衡
运维·nginx·程序员·负载均衡·高可用
人工智障调包侠4 小时前
Linux 目录介绍
linux·运维·服务器
SnowMan19936 小时前
使用Nginx部署前端Vue项目的详细指南
前端·vue.js·nginx
Java小白白同学6 小时前
Linux 硬盘扩容操作手册
linux·运维·服务器
大白菜和MySQL6 小时前
keepalived和lvs高可用集群
linux·运维·lvs
好奇的菜鸟7 小时前
如何使用Docker快速启动Nginx服务器
服务器·nginx·docker
学习向前冲7 小时前
高效诊断Linux性能问题
linux·运维·服务器
wd5205217 小时前
常用环境部署(十七)——Docker安装pritunl+openvpn
运维·docker·容器
威迪斯特7 小时前
视频监控接入平台web客户端有时无法登录,有时打开实时视频出现黑屏的问题解决
linux·运维·服务器·视频监控·df命令·磁盘空间·接入平台
Wang's Blog8 小时前
Nginx: 基于多网卡,端口,域名的虚拟主机实现
服务器·网络·nginx