网站首页 > 技术文章 正文
本教程是用来记录整个搭建的过程,希望能帮到有需要的小伙伴,单节点服务搭建,采用rpm安装方式搭建。
1.elasticsearch
1.1 elasticsearch下载安装
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-x86_64.rpm
sudo rpm --install elasticsearch-7.10.2-x86_64.rpm
1.2 修改配置文件
编辑elasticsearch.yml,rpm安装完后配置文件是放在/etc/elasticsearch 目录中,输入命令
vi /etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
1.3 配置服务
# 设置守护进程启动,添加服务
/bin/systemctl daemon-reload
/bin/systemctl enable elasticsearch.service
# 启动、停止命令
systemctl start elasticsearch.service
systemctl stop elasticsearch.service
# 查看服务启动状态
systemctl status elasticsearch.service
#验证是否成功
curl -X GET "localhost:9200/?pretty"
# 要列出 elasticsearch 服务的日志条目
journalctl --unit elasticsearch
# 要从给定时间开始列出 elasticsearch 服务的日志条目
journalctl --unit elasticsearch --since "2016-10-30 18:17:16"
1.4 rpm安装后程序相关目录
rpm安装的程序路径在
主程序目录: /usr/share/elasticsearch/
配置目录: /etc/elasticsearch
日志: /var/log/elasticsearch
1.5 更多配置/目录信息
RPM 还有一个系统配置文件 ( /etc/sysconfig/elasticsearch),它允许您设置以下参数:
ES_JAVA_HOME
设置要使用的自定义 Java 路径。
MAX_OPEN_FILES
最大打开文件数,默认为65535.
MAX_LOCKED_MEMORY
最大锁定内存大小。unlimited如果您使用bootstrap.memory_lockelasticsearch.yml 中的 选项,请设置为。
MAX_MAP_COUNT
进程可能拥有的最大内存映射区域数。如果您mmapfs 用作索引存储类型,请确保将其设置为高值。欲了解更多信息,请查看 Linux内核文件 有关max_map_count。这是sysctl在启动 Elasticsearch 之前设置的。默认为262144.
ES_PATH_CONF
配置文件目录(其中必须包括elasticsearch.yml, jvm.options,和log4j2.properties文件); 默认为 /etc/elasticsearch.
ES_JAVA_OPTS
您可能想要应用的任何其他 JVM 系统属性。
RESTART_ON_UPGRADE
配置包升级时重启,默认为false. 这意味着您必须在手动安装软件包后重新启动 Elasticsearch 实例。这样做的原因是为了确保集群中的升级不会导致连续的分片重新分配,从而导致高网络流量并减少集群的响应时间。
使用的发行版systemd要求通过systemd而不是通过/etc/sysconfig/elasticsearch 文件配置系统资源限制。有关更多信息,请参阅Systemd 配置。
RPM的目录布局编辑
RPM 将配置文件、日志和数据目录放置在基于 RPM 的系统的适当位置:
Elasticsearch 主目录或 $ES_HOME
/usr/share/elasticsearch
垃圾桶
二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件
/usr/share/elasticsearch/bin
配置文件
配置文件包括 elasticsearch.yml
/etc/elasticsearch
ES_PATH_CONF
配置文件
环境变量包括堆大小、文件描述符。
/etc/sysconfig/elasticsearch
数据
节点上分配的每个索引/分片的数据文件的位置。
/var/lib/elasticsearch
path.data
jdk
用于运行 Elasticsearch 的捆绑 Java 开发工具包。可以通过ES_JAVA_HOME在/etc/sysconfig/elasticsearch.
/usr/share/elasticsearch/jdk
日志
日志文件位置。
/var/log/elasticsearch
path.logs
插件
插件文件位置。每个插件都将包含在一个子目录中。
/usr/share/elasticsearch/plugins
共享文件系统存储库位置。可以容纳多个位置。文件系统存储库可以放置在此处指定的任何目录的任何子目录中。
path.repo
1.6测试是否运行成功
打开浏览器输入:http://127.0.0.1:9200/
输出上图说明安装成功
2.kibana
2.1 下载安装
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-x86_64.rpm
sudo rpm --install kibana-7.10.2-x86_64.rpm
2.2 修改配置
修改/etc/kibana/kibana.yml 文件
cd /etc/kibana/
vi kibana.yml
修改文件内容
server.host: "0.0.0.0"
# 设置中文
i18n.locale: "zh-CN"
2.3 配置服务
添加守护进程, root 用户可以不用sudo
#添加守护进程
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable kibana.service
# 启动和重启命令
sudo systemctl start kibana.service
sudo systemctl stop kibana.service
# 查看状态
systemctl status kibana.service -l
# 验证是否安装成功,查看日志
journalctl -u kibana.service
2.4 安装后配置目录与elasticsearch 相同,见1.4
2.5 访问后台页面
在浏览器输入http://127.0.0.1:5601/ 进入后台页面
3.logstash安装
3.1 下载安装
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.2-x86_64.rpm
sudo rpm --install logstash-7.10.2-x86_64.rpm
3.2 增加管道配置
进入到 /etc/logstash/conf.d/ 添加需要的通道文件
cd /etc/logstash/conf.d/
vi panpan-pipeline.conf
这里安装采集nginx的日志为例,配置中增加了geoip ,解析ip 信息,使用kibana maps 展示热力图,或ip归属分布信息
panpan-pipeline.conf
input{
beats {
port => "5044"
}
}
filter{
# 判断输入的类型
if [event][module] == 'nginx' {
# 使用 grop 正则匹配 nginx 日志整理成对象存入 es
grok {
# 匹配方式1
# match => { "message" => "%{COMBINEDAPACHELOG}"}
# 自定义截取,根据nginx日志格式进行拆分
match => { "message" => "%{IP:localip} - (%{USERNAME:user}|-) \[%{HTTPDATE:timestamp}\] \"%{WORD:request_verb} %{NOTSPACE:request} HTTP/%{NUMBER:httpversion}\" %{NUMBER:status:int} %{NUMBER:body_sent:int} \"-\" \"%{GREEDYDATA:agent}\" \"%{IP:clientip}\"" }
}
# 拆分ip,取最远端ip
mutate {
split => ["clientip", ","]
add_field => { "request_ip" => "%{clientip[0]}" }
}
mutate {
rename => ["request_ip", "clientip" ]
}
# 解析ip 信息,使用kibana maps 展示热力图
geoip {
# 数据源 ip 字段
source => "clientip"
# 解析后输出字段
target => "geoip"
}
}else{
# 日志内容是json格式数据 进行解析json数据
json {
# 数据源字段
source => "message"
# 解析后输出到的字段
target => "doc"
}
# 处理日志名
grok {
match => {"[log][file][path]" => "(?<filename>([a-zA-Z0-9_]+.log$)|([a-zA-Z0-9_]+.log.[0-9]+$))"}
}
# 获取ip经纬度信息
geoip {
# 数据源字段
source => "[doc][source_ip]"
# 解析后输出的字段
target => "geoip"
# 天加的字段
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
# 转换格式
mutate {
convert => [ "[geoip][coordinates]" ,"float"]
}
}
}
# 输出到logstash 控制台
#output{
# stdout {
# codec => rubydebug
# }
#}
# 输出到elasticsearch
output {
# 判断类型输出到对应的索引数据中
if [event][module] == 'nginx' {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
# 自定义索引名称
index => "panpan-nginx-%{+YYYY.MM.dd}"
}
} else {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "panpan-%{[fields][source]}-%{+YYYY.MM.dd}"
}
}
}
3.3 配置服务
设置守护进程,如果不是root用户登录,需要使用 sudo 执行命令
# 配置守护进程
/bin/systemctl daemon-reload
/bin/systemctl enable logstash.service
# 启动和重启命令
systemctl start logstash.service
systemctl stop logstash.service
# 验证是否安装成功,查看日志
journalctl -u logstash.service
4.Filebeat安装
4.1 下载安装
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.2-x86_64.rpm
sudo rpm -vi filebeat-7.10.2-x86_64.rpm
4.2修改配置文件
cd /etc/filebeat/
vi filebeat.yml
配置paths 填入需要采集的日志文件目录
Filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*/*.log*
- /var/log/nginx/*/*.log*
fields:
source: think
# 支持正则 排除匹配的文件 ,过滤不需要的文件
# exclude_files: ['-']
# json.keys_under_root: true
# json.add_error_key: true
# # json.message_key: msg
# tags: ["json"]
#index: "%{[agent.name]}-myindex-%{+yyyy.MM.dd}"
setup.template.settings:
index.number_of_shards: 1
# 开启 modules
filebeat.config.modules:
# Glob pattern for configuration loading
path: ${path.config}/modules.d/*.yml
enabled: true
# Set to true to enable config reloading
reload.enabled: false
# 控制台 输出信息
# output.console:
# pretty: true
# enable: true
# 输出到 logstash
output.logstash:
hosts: ["127.0.0.1:5044"]
# 输出到es
# output.elasticsearch:
# # Array of hosts to connect to.
# hosts: ["localhost:9200"]
# index: "service-101-%{+yyyy.MM.dd}"
# 自定义索引还没有调通,需要进一步调试
# index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
# # indices:
# # - index: "critical-%{[bjson.type]}-%{+yyyy.MM.dd}"
# # when.contains:
# # message: "CRITICAL"
# # - index: "error-%{[json.type]}-%{+yyyy.MM.dd}"
# # when.contains:
# # message: "ERR"
4.3 配置服务
# 添加守护进程
systemctl daemon-reload
systemctl enable filebeat.service
# 重启和停止
systemctl start filebeat.service
systemctl stop filebeat.service
4.4 程序目录
-c /etc/filebeat/filebeat.yml
-path.home /usr/share/filebeat
-path.config /etc/filebeat
-path.data /var/lib/filebeat
-path.logs /var/log/filebeat
4.5 开启nginx模块
命令行中输入一下命令
#查看 列表
filebeat modules list
# 开启
filebeat modules enable system nginx
4.6 配置nginx日志路径
进入到/etc/filebeat/module.d 会有一个nginx.yml文件,编辑文件
- module: nginx
access:
var.paths: ["/var/log/nginx/access.log*"]
4.7修改完配置后需要重启服务
启动后如果有日志文件可以在kibana后台看到创建的索引数据。
5.nginx日志格式配置
修改nginx.conf 文件,在 http 里面增加下边代码
# 采集nginx, 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
输出样式:格式 127.0.0.1 - - [28/Nov/2021:20:41:43 +0800] "POST /stage/sub/sub-api/test HTTP/1.0" 200 54 "-" "PostmanRuntime/7.28.4" "121.205.16.117"
内容不是很细,而且还有很多不足之处,如有错误之处或配置不合理之处,可以在评论区交流学习。
猜你喜欢
- 2024-11-15 2w 字带你实战 ElasticSearch(elasticsearch-ik)
- 2024-11-15 Docker部署SkyWalking+ElasticSearch+Agent
- 2024-11-15 docker搭建Elasticsearch、Kibana、Logstash 同步mysql数据到ES
- 2024-11-15 原理实践,全面讲解Logstash+Kibana+kafka
- 2024-11-15 CVE-2019-7609 Kibana远程代码执行漏洞攻击方法和漏洞原理分析
- 2024-11-15 CentOS上安装ELK(centos上安装docker-compose)
- 2024-11-15 手把手教你,在CentOS上安装ELK,进行服务器日志收集
- 2024-11-15 ELK单机版安装部署流程(elk版本选择)
- 2024-11-15 Uber如何使用ClickHouse建立日志分析平台?
- 2024-11-15 入门Elasticsearch,我觉着你看这一篇就够了
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)