从零搭建日志采集报警系统(ELK+FileBeat)

系统选型

Elastic 公司有一套免费开源的日志采集系统(ELK),所以我选择拿来即用。 日志流: 日志文件FileBeatLogstashElasticSearchKibana

Filebeat

Filebeat是一款轻量级日志采集器,可用于转发和汇总日志与文件。Filebeat内置有多种模块(Nginx、MySQL、Redis、Elasticsearch、Logstash等),可针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。

Logstash

Logstash是一个分布式日志收集框架,开发语言是JRuby,经常与ElasticSearch,Kibana配合使用组成著名的ELK技术栈,所谓ELK就是ElasticSearch、Logstash、Kibana这三个组件。

ElasticSearch

Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。

Kibana

Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。

系统准备

系统设置

# 关闭防火墙(如果因为其他原因不能关闭防火墙,也请不要禁止80端口):
systemctl stop firewalld.service
# 禁止防火墙自动启动:
systemctl disable firewalld.service
# 修改操作系统参数
vi /etc/sysctl.conf
vm.max_map_count=262144

# 加载sysctl配置,执行命令:
sysctl -p

vim /etc/security/limits.conf
# 在文件最后加入
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

jdk安装

下载地址https://www.openlogic.com/openjdk-downloads

# 进入opt目录
cd /opt
# 下载JDK,推荐11系列
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/11.0.8%2B10/openlogic-openjdk-11.0.8%2B10-linux-x64.tar.gz
# 解压
tar -zxvf openlogic-openjdk-11.0.8+10-linux-x64.tar.gz
# 修改文件夹名
mv openlogic-openjdk-11.0.8+10-linux-x64// jdk/
# 定义环境变量
sed -i.ori  '$a export JAVA_HOME=/opt/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
# 加载环境变量配置信息
source /etc/profile
# 确认检查jdk版本信息
java -version

openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment OpenLogic-OpenJDK (build 11.0.8+0-adhoc.centos.jdk11u)
OpenJDK 64-Bit Server VM OpenLogic-OpenJDK (build 11.0.8+0-adhoc.centos.jdk11u, mixed mode)

Elasticsearch部署

# 进入opt目录
cd /opt
# 把tar包下载到opt目录下
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.1-linux-x86_64.tar.gz
# 解压tar包
tar -zxvf elasticsearch-7.14.1-linux-x86_64.tar.gz
# 拷贝文件目录到/usr/local
cp -r elasticsearch-7.14.1/ /usr/local/elasticsearch
# 建立软连接
ln -s /usr/local/elasticsearch/ elasticsearch
# 修改配置文件
vim /usr/local/elasticsearch/config/elasticsearch.yml

# 以下取消注释
# 集群名称,单机版使用默认即可
cluster.name: my-application
# 节点名称,单机版使用默认即可
node.name: node-1
# 数据存放的路径
path.data: /usr/local/elasticsearch/data/
# 应用日志存放的路径
path.logs: /usr/local/elasticsearch/logs/
# 服务绑定的IP地址
network.host: 0.0.0.0
# 服务监听的端口
http.port: 9200
#初始主节点
cluster.initial_master_nodes: ["node-1"]

# 跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

es不能以root用户身份运行,所以要创建新的用户组和用户名称

# 创建用户组
groupadd elsearch
# 创建用户
useradd elsearch -g elsearch -p elasticsearch

# 把es要用到的路径都设置成的文件组权限设置成新的用户组和用户
chown -R elsearch:elsearch /usr/local/elasticsearch

启动es

 

# 切换到es用户
su elsearch
# 以后台服务运行
/usr/local/elasticsearch/bin/elasticsearch -d 

查看启动日志可执行命令tail -f /usr/local/elasticsearch/logs/my-application.log

 

通过ss -lntup查看端口号已经启动

执行curl命令检查服务是否正常响应:curl 127.0.0.1:9200,收到响应如下:

至此,ElasticSerach服务启动成功

Kibana部署

# 进入opt目录
cd /opt
# 把tar包下载到opt目录下
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.1-linux-x86_64.tar.gz
# 解压
tar -zxvf kibana-7.14.1-linux-x86_64.tar.gz
# 拷贝文件目录到/usr/local
cp -r kibana-7.14.1-linux-x86_64 /usr/local/kibana
# 建立软连接
ln -s /usr/local/kibana/ kibana
#打开Kibana的配置文件
vim /usr/local/kibana/config/kibana.yml

# 服务端口
server.port: 5601
# 服务器主机IP地址
server.host: "主机的IP地址"
# es索引服务器地址与上一步配置es时的地址相同
elasticsearch.hosts: ["http://xxx.xxx.xxx.xxx:9200"]
i18n.locale: "zh-CN"

# 按esc输入以下内容保存并退出
:wq
# 这样其他电脑就能用浏览器访问Kibana服务了

# 不能以root用户运行
# 把es要用到的路径都设置成的文件组权限设置成新的用户组和用户
chown -R elsearch:elsearch /usr/local/kibana

# 切换到es用户
su elsearch
# 先前台运行看有没有报错
/usr/local/kibana/bin/kibana

# # 让服务在后台运行
nohup /usr/local/kibana/bin/kibana &

查看启动日志:tail -f /home/elsearch/nohup.out 以下信息表示启动成功:

 

在浏览器访问http://主机IP:5601;看到如下页面

Filebeat部署(日志机)

# 进入opt目录
cd /opt
# 把tar包下载到opt目录下
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.1-linux-x86_64.tar.gz
tar -zxvf filebeat-7.14.1-linux-x86_64.tar.gz
cp -r filebeat-7.14.1-linux-x86_64 /usr/local/elk/filebeat

# 修改配置文件
vim /usr/local/elk/filebeat/filebeat.yml

# 配置输入插件,注意是yml格式
filebeat.inputs:
# 数据来源是log日志文件
- type: log
  enabled: true
# 日志文件路径
  paths:
    - /usr/local/nginx/nginx/logs/access*.log

# 解释内容格式为json的日志
#  json.keys_under_root: true
#  json.add_error_key: true
#  json.message_key: log
#  json.overwrite_keys: true
# 额外的标识字段,可以于区分是来自于哪个应用
  fields:
    log_type: logbackjson

# 配置多个log数据源
# - type: log

  # Change to true to enable this input configuration.
#  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
#  paths:
#    - /var/log/xhg/gateway/*.log
#
#  json.keys_under_root: true
#  json.add_error_key: true
#  json.message_key: log
#  json.overwrite_keys: true

#  fields:
#    log_type: gateway

# 当输出插件中要使用自定义索引名称的时候配置这个
# setup.template.name: "cobee"
# setup.template.pattern: "cobee-*"
# 关闭ES配置
# 配置数据输出目标地
# output.elasticsearch:
  # Array of hosts to connect to.
  # hosts: ["172.18.219.11:9200"]
  # index: "xhg-ms-%{+yyyy.MM.dd}"
# 其它配置项保持默认即可

output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

# 按esc输入以下内容保存并退出
:wq

# 后台运行filebeat,filebeat是一个轻量级的数据采集引擎,不需要安装jdk,不像logstash那么笨重

nohup /usr/local/elk/filebeat/filebeat -e -c /usr/local/elk/filebeat/filebeat.yml -d "Publish" & > nohup.out

#停止filebeat:
ps -ef |grep filebeat 
kill -9 pid

 

logstash部署(日志机)

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.14.1-linux-x86_64.tar.gz
tar -zxvf logstash-7.14.1-linux-x86_64.tar.gz
mkdir /usr/local/elk
cp -r logstash-7.14.1 /usr/local/elk/logstash
# 在目录/usr/local/elk/logstash下创建文件
vim /usr/local/elk/logstash/default.conf
# 内容如下:
# 监听5044端口作为输入
input {
    beats {
        port => "5044"
    }
}
# 数据过滤
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    geoip {
        source => "clientip"
    }
}
# 这是ElasticSerach服务的监听端口
output {
    elasticsearch {
        hosts => ["192.168.10.129:9200"]
        index =>  "%{appname}-%{+YYYY.MM.dd}" #根据项目名称动态创建索引
    }
}


# 启动logstash
nohup /usr/local/elk/logstash/bin/logstash -f /usr/local/elk/logstash/default.conf --config.reload.automatic &
tail -f /usr/local/elk/logstash/logs/logstash-plain.log

Kibana配置

Chrome扩展程序下载ElasticSearch Head,查看ElasticSearch是否有数据

配置Kibana

版权声明:
作者:江霁月
链接:https://www.jiangjiyue.com/maintenance/elk/465.html
来源:江霁月的私人小屋
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录