系统选型
Elastic 公司有一套免费开源的日志采集系统(ELK),所以我选择拿来即用。 日志流: 日志文件
→FileBeat
→Logstash
→ElasticSearch
→Kibana
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;看到如下页面
# 进入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
- 最新
- 最热
只看作者没有评论内容