ELK日志分析系统-详细教程

转载自 https://www.toutiao.com/article/6858830790927581704

1.docker中安装elasticsearch

我们服务器一般都不要我们安装elasticsearch 别人已经安装好了 我们直接使用就可以了,如果没有安装我们就自己用docker安装一下。

1.拉去镜像

elasticsearch 拉去镜像的名称

7.5.2 :拉取ES版本号

请确保elasticsearch、logstash、kibana三者的版本号尽量一样,否则启动kibana会报错。

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.5.2
ELK日志分析系统-详细教程

 

2.创建容器并启动

-p 9200:9200 -p 9300:9300 宿主机端口:容器端口 左边宿主机右边容器端口进行映射

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.5.2
ELK日志分析系统-详细教程

 

3.修改配置文件

修改配置文件我们可以在创建容器的时候直接指定宿主机和容器进行映射,前提是你已经在宿主机创建了es配置文件,我们这里安装可以直接进入容器进行修改配置文件

进入容器默认就在/usr/share/elasticesarch 我们只需要cd config 目录就行

修改elasticesarch.yml 配置文件

进入容器里面

docker exec -it 容器ID /bin/sh 
vi elasticesarch.yml
ELK日志分析系统-详细教程

 

elasticesarch.yml 完整配置

cluster.name: "docker-cluster" 
network.host: 0.0.0.0 # 允许任何端口访问
transport.host: 0.0.0.0 
#允许跨域,kibana和es-head需要
http.cors.enabled: true 
http.cors.allow-origin: "*"

重启完成我们在浏览器用 ip+port 访问

如果能看到这个界面说明我们的elasticesarch安装就成功了

ELK日志分析系统-详细教程

设置密码

# 开启x-pack
vi elasticesarch.yml
# 启动安全认证,包括身份验证登录 xpack.security.enabled: true
# 启用节点之间传输的SSL/TLS加密通信 xpack.security.transport.ssl.enabled: true # 保存 重启当前容器,然后进入容器执行以下命令 # auto - Uses randomly generated passwords # interactive - Uses passwords entered by a user ./elasticsearch-setup-passwords auto 

  

 修改完成配置文件保存退出,然后回到宿主机重启容器

# 修改成功之后记得保存镜像修改,否则重启之后,文件还是之前镜像的状态
docker restart 容器ID

  

 

 

 

2.安装logstash

logstash我们这里使用压缩包安装方式,我们只需要下载解压就使用了非常简单。

下载地址:
https://www.elastic.co/cn/downloads/past-releases#logstash

 

下载以后上传到你要安装的目录解压

 

1.解压:

如果需要解压指定目录 加 -C参数指定解压,

例如:tar -zxvf logstash-7.0.0.tar.gz -C /user/local

tar -zxvf 名称

  

2.进入解压config目录 修改配置文件

先用cy命令复制出一个.conf文件。不要直接修改原有的配置文件

 cp logstash-sample.conf logstahs.conf
ELK日志分析系统-详细教程

 

我们这里先使用一个最简单的示例,用vim打开logstash.conf文件删除原有的配置信息,粘贴以下内容。

input 是输入源

file 是指在/usr/local/logstash目录下收集所有以.log结尾的日志文件

output 是收集的数据输出到哪里,我们这里指定的是elasticsearch 也就是说会直接保存到es

input{
 file {
 path => "/usr/local/logstash/*.log"
 start_position => "beginning"
 }
}
output {
 elasticsearch { hosts =>["http://ip:port"] }
}

3.在logstash/bin目录下创建一个启动脚本

vim startup.sh //创建startup.sh
nohup ./logstash -f ../config/logstash.conf & //startup.sh内容
./startup.sh //启动

启动完成完成以后我们可以在/usr/local/logstash目录下创建一个.log文件如果内容保存到es那说明我们配置没文件。

ELK日志分析系统-详细教程

 

以上是测试配置,下面我们把配置修改成我们项目对应的配置文件

 

一下配置我根据我们项目日志文件格式编写的收集规则,并非通用格式。

 

我们只需要复制配置文件 修改里面的path和elasticsearch 地址就可以了

 

path 是指我们输出日志存放路径,path 路径可以自己指定

 

vim logstash.conf
input{
 file {
 path => "/usr/local/weshine-cloud/wshine/zlt-business/logs/application/*.log"
 type => "sys"
 exclude => "*.0.log"
 exclude => "audit.log"
 start_position => "beginning"
 }
 file {
 path => "/usr/local/weshine-cloud/wshine/zlt-business/logs/audit/audit.log"
 codec => multiline {
 pattern => "start:*"
 negate => true
 what => "previous"
 }
 type => "audit"
 exclude => "*.0.log"
 start_position => "beginning"
 }
}
filter {
 if [type] == "sys" {
 multiline {
 pattern => "^\[\w+-\w+:\d*.\d*.\d*.\d*:\d*\]"
 negate => true
 what => "previous"
 }
 }
 if [type] == "sys"{
 grok {
 match => { "message" => "\[(?<serviceName>[a-z]+-[a-z]+):%{IP:client}:%{NUMBER:port}]\s+(?<Date>(\d*[./-]\d*[./-]\d* \d*:\d*:\d*[.,][0-9]+))\s+%{WORD:debug}\s+%{NUMBER:pid}\s+(?<content>[\w\W]*)"}
 }
}
if [type] == "audit"{
 grok {
match => { "message" => "[a-z]+:\=+(?<option>[A-Za-z\u4e00-\u9fa5]+)[\=\s\n]+[\u4e00-\u9fa5]+:(?<serverName>[a-z\-]+)[\s\n\u4e00-\u9fa5]+:(?<date>[a-zA-Z\d\-\.:]+)(?<content>[\w\W]*)"}
}
}
 mutate {
 remove_field => "message"
 }
}
output {
 if [type] == "sys" {
 elasticsearch {
 hosts => ["http://http://ip:port"]
 index => "log-%{serviceName}"
 }
 } else if [type] == "audit" {
 elasticsearch {
 hosts => ["http://http://ip:port"]
 index => "log-audit-%{serverName}"
 }
 }

 stdout { codec => rubydebug }
}

4.安装multiline插件

进入logstash/bin目录下执行一下目录:

./logstash-plugin install logstash-filter-multiline
ELK日志分析系统-详细教程

 

二、multiline 使用方法

codec =>multiline {
 charset=>... #可选 字符编码
 max_bytes=>... #可选 bytes类型 设置最大的字节数
 max_lines=>... #可选 number类型 设置最大的行数,默认是500行
 multiline_tag... #可选 string类型 设置一个事件标签,默认是multiline
 pattern=>... #必选 string类型 设置匹配的正则表达式
 patterns_dir=>... #可选 array类型 可以设置多个正则表达式
 negate=>... #可选 boolean类型 默认false不显示,可设置ture
 what=>... #必选 向前previous , 向后 next
 }

  

3.安装kibana 展示日志

docker安装Kibana 注:Kibana版本要和Elastic兼容

docker pull kibana:7.5.0 

在本地创建kibana 配置文件

vim /etc/kibana/config/kibana.yml
server.name: kibana 
server.host: "0"
elasticsearch.hosts: [ "http://ip:9200" ] #es地址 
# 连接es的账号密码
elasticsearch.username: "elastic"
elasticsearch.password: "******"
xpack.monitoring.ui.container.elasticsearch.enabled: true

 

创建容器

docker run --name kibana -v /etc/kibana/config:/usr/share/kibana/config -p 8089:5601 -d kibana:7.5.0

  

启动完成以后用ip+port访问,如果看到这个界面我们就安装完毕了

填入elasticsearch的账号密码:

 

 

ELK日志分析系统-详细教程

 

展示日志文件

点击management

ELK日志分析系统-详细教程

 

选择索引模式

ELK日志分析系统-详细教程

 

创建索引模式

ELK日志分析系统-详细教程

 

输入:log-*匹配所有log-开头日志

ELK日志分析系统-详细教程

 

下一步

ELK日志分析系统-详细教程

 

创建索引

ELK日志分析系统-详细教程

 

然后点击Discover

ELK日志分析系统-详细教程

 

选择我们创建的索引就可以看到日志了

ELK日志分析系统-详细教程

 

 
 
启用节点之间传输的 SSL/TLS 加密通信
posted @ 2022-05-30 15:03  php的自我修养  阅读(590)  评论(0编辑  收藏  举报