Linux安装EFK日志分析系统

article/2025/6/26 16:31:44

目标:能够实现采集指定路径日志到es,用kibana实现日志分析

在这里插入图片描述
在这里插入图片描述
单es节点集群规划:

主机名IP 地址组件
a1192.168.1.111Kibana + elasticsearch
a2192.168.1.112Fluentd
a3192.168.1.103Fluentd

1、安装Elasticsearch

1.1添加 Elastic 仓库并安装 Elasticsearch

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchcat > /etc/yum.repos.d/elastic.repo <<EOF
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
#安装elasticsearch
yum install -y elasticsearch

1.2用户配置

ES不能使用root用户来启动,必须使用普通用户来安装启动。我们必须创建一个es专门的用户

#新建es用户并设置密码
useradd es
passwd es
#将es用户加入elasticsearch组
usermod -G elasticsearch es
#es用户设置为可用sudo等命令
vim /etc/sudoers 末尾添加
#es ALL=(ALL) NOPASSWD: ALL
es ALL=(ALL) ALL
#保存退出后出来生效
source /etc/sudoers

#解决问题1:es用户执行以下命令解除打开文件数据的限制:

vim /etc/security/limits.conf末尾添加
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

问题错误信息描述:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

#解决问题2:修改es用户可以创建的最大线程数

vim /etc/security/limits.d/20-nproc.conf
* soft nproc 1024#修改为
* soft nproc 4096

问题错误信息描述:
max number of threads [1024] for user [es] likely too low, increase to at least [4096]

#解决问题3:es用户调大虚拟内存

vim /etc/sysctl.conf末尾添加
vm.max_map_count=262144

错误信息描述:
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

**

1.3 配置Elasticsearch(/etc/elasticsearch/elasticsearch.yml)

cat > /etc/elasticsearch/elasticsearch.yml <<EOF
#集群名称, 处于同一个集群所有节点,该名称必须相同
cluster.name: efk-cluster
# 节点名称. 两台机器名字必须都不一样
node.name: a1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# 网络绑定,这里我绑定 0.0.0.0,支持外网访问
network.host: 0.0.0.0
# 设置对外服务的http端口,默认为9200
http.port: 9200
#single-node单节点集群
discovery.type: single-node
xpack.security.enabled: true
# 支持跨域访问
http.cors.enabled: true 
http.cors.allow-origin: "*"
EOF
#编辑/etc/elasticsearch/jvm.options将注释内容修改
vim /etc/elasticsearch/jvm.options
-Xms2g
-Xmx2g

1.4启动Elasticsearch

#切换es用户
su es
#启动
systemctl start elasticsearch
#开机自启
systemctl enable elasticsearch

如果报错
#查看es日志(efk-cluster是配置文件定义的集群名)
cat /var/log/elasticsearch/efk-cluster.log | tail -n 50
如果出现org.elasticsearch.ElasticsearchSecurityException: invalid configuration for xpack.security.transport.ssl - [xpack.security.transport.ssl.enabled] is not set, but the following settings have been configured in elasticsearch.yml : [xpack.security.transport.ssl.keystore.secure_password,xpack.security.transport.ssl.truststore.secure_password]
就是xpack.security.transport.ssl 的配置无效 - [xpack.security.transport.ssl.enabled] 未设置,但已在 elasticsearch.yml 中配置了以下设置

解决方法:之前安装了缓存设置的 ElasticSearch,尝试使用以下命令重置安全设置
rm /etc/elasticsearch/elasticsearch.keystore
/usr/share/elasticsearch/bin/elasticsearch-keystore create

1.5查看密码(记录用户密码)

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

会得到如下用户和密码,保存记录

用户名密码
elasticTo0wR2hSaPLsKFBbOyHl
kibana_systemNueXLxMBkbZFkL7stbP9
kibanaNueXLxMBkbZFkL7stbP9
apm_systemAfcXVRt1b9hdDflfNSbP
logstash_systemY9TaPbMxXB2BTpqWbIOB
beats_systemhgMyPYqsxvKgAqghOEMm
remote_monitoring_users65gIUsT97jdisnfcS2E
#如果不是第一次启动,重置密码
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic --batch

2、 安装Kibana

yum install -y kibana

2.1配置Kibana(/etc/kibana/kibana.yml)

#下面的用户密码都拿上面记录的
cat > /etc/kibana/kibana.yml <<EOF
server.host: "0.0.0.0"
server.port: 5601
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "NueXLxMBkbZFkL7stbP9"
EOF

2.2启动Kibana

#启动
systemctl start kibana
#开机自启
systemctl enable kibana

在a1 和 a2 安装 Fluentd

3、安装td-agent(Fluentd官方发行版)

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh
yum install -y td-agent

3.1配置Fluentd(/etc/td-agent/td-agent.conf)

cat > /etc/td-agent/td-agent.conf <<EOF
# 收集系统日志
#<source>
#  @type tail
#  path /var/log/messages
#  pos_file /var/log/td-agent/messages.pos
#  tag system.messages
#  format syslog
#</source># 采集 /data/logs/TALogs/xjp_official 目录下的日志
<source>@type tailpath /data/logs/TALogs/xjp_official/log.*_0  # 匹配 log.YYYY-MM-DD_0 格式的文件pos_file /var/log/td-agent/xjp_official.postag xjp_officialformat json #json格式time_key    #根据日志中的time进行解析time_format %Y-%m-%d %H:%M:%S.%L# 按 mtime(修改时间)排序,false优先读取最新文件,true旧数据也读取#read_from_head falseread_from_head true
</source># 输出到Elasticsearch
<match **>@type elasticsearchhost 192.168.1.111  # es-kibana节点IPport 9200user elasticpassword "To0wR2hSaPLsKFBbOyHl"logstash_format truelogstash_prefix fluentdinclude_tag_key truetag_key @log_name
</match>
EOF
#保证采集路径td-agent有权限访问,下列的都是方法,可采用
#添加其他用户可访问/var/log/messages
chmod o+r /var/log/messages
#td-agent用户添加到master组
usermod -G master td-agent
#将/data/logs/TALogs/xjp_official/赋权给td-agent和组
chown -R td-agent:td-agent /data/logs/TALogs/xjp_official/

3.2启动Fluentd

#启动
systemctl start td-agent
#开机自启
systemctl enable td-agent#查看Fluentd日志验证是否传输成功
tail -n 20 /var/log/td-agent/td-agent.log

4、访问 Kibana
打开浏览器访问 http://192.168.1.11:5601,使用 elastic 用户和密码登录。并访问dev tools
在这里插入图片描述
检索#account_id为250000001311的日志文件
在这里插入图片描述

操作备忘

1、(删除现有数据重新传输到es)无需操作!!

#es查看已有的日志
curl -u elastic:"To0wR2hSaPLsKFBbOyHl" -X GET "http://192.168.1.111:9200/_cat/indices/fluentd-*?v"
#es删除已有日志
curl -u elastic:"To0wR2hSaPLsKFBbOyHl" -X DELETE "http://192.168.1.111:9200/fluentd-2025.05.27"
# Fluentd删除 pos 文件
rm -f /var/log/td-agent/xjp_official.pos
#重启Fluentd
systemctl restart td-agent

2、查看日志

#查看es日志
cat /var/log/elasticsearch/efk-cluster.log | tail -n 50
#查看Fluentd日志
tail -n 30 /var/log/td-agent/td-agent.log

kibana查询语句

#单条件查询语句
GET fluentd*/_search
{"query": {"term": {"#account_id": "250000001311"}},"size": 100
}
#多条件查询语句
GET fluentd-*/_search
{"query": {"bool": {"must": [{ "term": { "properties.num": 20 }},{ "term": { "properties.num_before": 37 }},{ "term": { "properties.num_after": 57 }},{ "term": { "properties.item_id.keyword": "SkinSuperBoxKey" }},{ "match": { "#account_id": "250000001311" }}]}}
}

配置多elasticsearch节点,例如配置三台elasticsearch服务器(如需)

1、多es节点操作(各节点都需)

vim /etc/hosts末尾添加主机配置相互通信
192.168.1.111 a1
192.168.1.112 a2
192.168.1.113 a3

2、es配置文件修改(各节点都需,并修改node.name即可,discovery.seed_hosts和cluster.initial_master_nodes根据实际情况修改)

cat > /etc/elasticsearch/elasticsearch.yml <<EOF
#集群名称, 处于同一个集群所有节点,该名称必须相同
cluster.name: efk-cluster
# 节点名称. 两台机器名字必须都不一样
node.name: a1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# 网络绑定,这里我绑定 0.0.0.0,支持外网访问
network.host: 0.0.0.0
# 设置对外服务的http端口,默认为9200
http.port: 9200
#TCP9300配置节点间相互通信
transport.port: 9300
# 集群发现
discovery.seed_hosts: ["192.168.1.111","192.168.1.112","192.168.1.113"]
cluster.initial_master_nodes: ["a1","a2","a3"]
# 支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
EOF

多节点集群证书部署(如需)

1、生成ca证书

/usr/share/elasticsearch/bin/elasticsearch-certutil ca --out elastic-stack-ca.p12 --pass "root"

2、随便一个目录/test/编写一个node.yaml文件

vim /test/node.yaml
instances:- name: a1dns: [a1]ip: [192.168.1.111]- name: a2dns: [a2]ip: [192.168.1.112]- name: a3dns: [a3]ip: [192.168.1.113]- name: a4dns: [a4]ip: [192.168.1.114]

3、使用ca签发多节点证书

/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --ca-pass "root" --in /test/node.yaml --multiple --out certs.zip --pass "root"

4、解压复制到各个节点

#某个节点操作即可,我这里是a1服务器
unzip certs.zip -d /usr/share/elasticsearch/
cp /usr/share/elasticsearch/a1/a1.p12 -d /etc/elasticsearch/certs/
scp /usr/share/elasticsearch/a2/a2.p12 root@192.168.1.112:/etc/elasticsearch/certs/
scp /usr/share/elasticsearch/a3/a3.p12 root@192.168.1.113:/etc/elasticsearch/certs/
#文件给用户elasticsearch权限(每个节点都要)
chown -R elasticsearch:elasticsearch /etc/elasticsearch/certs/

5、配置文件修改

vim /etc/elasticsearch/elasticsearch.yml末尾添加
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/certs/a1.p12
xpack.security.transport.ssl.keystore.password: root
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/certs/a2.p12
xpack.security.transport.ssl.truststore.password: root

6、重启测试

su es
systemctl restart elasticsearch
浏览器访问:192.168.1.111:9200

7、后续扩容新es节点,只需要将yaml文件中的旧节点去掉,然后添加新的节点去生成证书即可

8、查看证书有效期(根据实际情况修改一下自己的/usr/share/elasticsearch/a1/a1.p12)

openssl pkcs12 -in /usr/share/elasticsearch/a1/a1.p12 -clcerts -nokeys -passin pass:"root" | openssl x509 -noout -dates
#得到结果生效时间:2025 年 5 月 28 日 07:28:46 GMT 过期时间:2028 年 5 月 27 日 07:28:46 GMT
MAC verified OK
notBefore=May 28 07:28:46 2025 GMT
notAfter=May 27 07:28:46 2028 GMT

http://www.hkcw.cn/article/TqWdWvNJJJ.shtml

相关文章

日本北海道发生6.1级地震 暂无人员伤亡报告

日本北海道钏路市附近海域在5月31日发生了6.1级地震。地震发生于当地时间17时37分,即北京时间16时37分,震中位于北纬42.3度、东经144.5度,震源深度为20公里。目前没有人员伤亡的报告。气象厅表示,此次地震不会引发海啸。责任编辑:0882

迪丽热巴端午晒蛋糕 独特庆祝方式

端午节到了,又是一个送安康的好时节。娱乐圈的明星们也展示了各自独特的过节方式,颇为有趣。王心凌来自台湾,她的庆祝方式是立鸡蛋。据说在端午节正午时分阳气最重,鸡蛋能够立起来意味着好运。她穿着休闲家居服,跪在地上小心翼翼地摆放两个鸡蛋,最终成功将它们立起。她在…

[特殊字符]️ TaleBook | 用NAS打造私人图书馆,一款基于Calibre的个人图书管理器

TaleBook 介绍 TaleBook 是一个开源项目&#xff0c;为爱书之人精心设计&#xff1b;简洁但强大的私人书籍管理系统&#xff1b;它基于calibre项目构建&#xff0c;具备书籍管理、在线阅读与推送、用户管理、SSO登录、从百度/豆瓣拉取书籍信息等功能。 &#x1f6a2; 项目地址…

全球顶级密码算法 她破解了两次 开创密码学新纪元

现代密码技术是保障网络安全和信息安全的关键,广泛应用于从国家安全基础设施到日常生活中的银行卡、手机、电表等产品。中国科学院院士、清华大学教授王小云在这一领域做出了杰出贡献,她曾两次破解全球通用的顶级密码算法,震动了国际密码学界。联合国教科文组织近日宣布,王…

受强降雨影响云南一房屋倒塌 提前疏散避免伤亡

受强降雨影响,独龙江乡道路受损严重。31日上午,一处沿江建筑倒塌,但由于提前疏散,目前没有人员伤亡报告。此外,独龙江乡境内的移动卫星基站仍可使用,但电信和联通信号暂时中断。具体情况仍在进一步了解中。责任编辑:0882

只同住不结婚的年轻人后来怎样了 探索新型伴侣关系

五月的朋友圈里,晒结婚的人特别多。新修订的《婚姻登记条例》正式施行后,仅凭身份证即可完成婚姻登记,各地民政局很快迎来第一个登记“小高峰”。5月20日,不少人通宵排队领证,花店和跟拍的生意也十分火爆。越来越多的年轻人在结婚时倾向于选择新颖的仪式,但也有一部分年轻…

Nginx进阶篇(Rewrite功能配置、地址重写和地址重定向的区别、Rewrite案例实战、域名跳转、域名镜像、独立域名、合并目录、防盗链)

文章目录 1. Rewrite功能配置1.1 地址重写和地址重定向的区别1.1.1 地址重写&#xff08;Rewrite&#xff09;1.1.2 地址重定向&#xff08;Redirection&#xff09; 1.2 set指令1.3 Rewrite功能常用的全局变量1.4 if指令1.4.1 变量名1.4.2 比较变量和字符串是否相等1.4.3 取反…

王文杰改写中国男子10000米纪录 刷新历史突破28分钟大关

2025年5月31日,在日本体育大学长距离竞技会兼第15回NGC田径赛中,中国男子选手王文杰以27分48秒68的成绩冲过万米终点线,将原全国纪录大幅提升20秒。作为李宁签约选手,王文杰强势改写了中国男子10000米历史。这次突破意义重大,标志着中国男子万米成绩首次突破28分钟大关,跻…

演出服遭退单 商家最大笔亏近8000元 商家贴标签防退货

去年“六一”儿童节,商家投诉表演服被大量退货的事件频登热搜。今年临近“六一”,不少商家在社交平台上分享防范技巧。山东菏泽的周女士从事童装生意已有10年,她也是其中之一。5月29日,周女士表示,去年六一儿童节,某学校购买了300多套演出服,但节后全部退回。退回的衣物…

MySQL 数据库空间使用大小查询

以下是 MySQL 数据库空间大小查询与管理的常用方法&#xff0c;基于最新实践整理&#xff1a; 一、查询数据库空间大小 1. 查看所有数据库空间 SELECT table_schema AS 数据库, SUM(table_rows) AS 记录数, SUM(TRUNCATE(data_length/1024/1024,2)) AS 数据容量(MB), …

用calibredrv提取版图中指定类型cell

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 现在有一个gds,其中的bump位置信息是我们需要的,如何从现有的gds中提取我们需要的部分呢? 需要用到工具calibredrv,如果数量少,可以用图形界面操作,方法如下: 01 打开gds calibredrv -m inp…

龙舟赛现卡点翻船 刚过线就侧翻 救援迅速无人受伤

端午佳节,山东济南大明湖景区举行了一场盛大的龙舟赛,吸引了众多游客前来观赛。上午9时39分许,两只龙舟敲鼓出发进行比拼。然而比赛刚开始不久,围观人群中就传来呼声,一艘龙舟翻船了,有人感叹“刚开始,就结束了”。记者在现场看到,翻船的是落后的那只龙舟,但船员们都穿…

兵马俑3号坑已可正常参观 游客破坏文物事件后依旧开放

西安市公安局临潼分局官方微博于5月31日通报,2025年5月30日下午5时30分左右,一名30岁的男子孙某在参观兵马俑景区时,翻越遗址坑护栏及防护网跳入三号坑内推拉陶俑,导致两尊铠甲武士俑(二级文物)受到不同程度的损坏。目前,孙某已被公安机关控制,调查发现他患有精神疾病,…

[yolov11改进系列]使用ConvNeXtV2替换backbone用于增强特征学习和多样性的python源码+训练源码

【ConvNeXtV2介绍】 在介绍 ConvNeXt V2 之前&#xff0c;让我们对 ConvNeXt 做一下简单的回顾&#xff1a;ConvNeXt 同样是 Meta AI 的工作&#xff0c;它的 motivation 是重新审视设计空间&#xff0c;测试纯卷积神经网络&#xff08;ConvNet&#xff09;的极限&#xff0c;…

持续学习新突破!登上nature!

强化学习之父在Nature发表持续学习新成果!《Nature》杂志最新刊登了一篇名为《Loss of plasticity in deep continual learning》的研究论文&#xff0c;标志着持续学习领域的一个新里程碑。这项研究提出了一种创新算法一一持续反向传播(Continual Backpropagation)&#xff0c…

兵马俑修复曾被指需要半年时间 实际难度远超预期

5月30日,陕西西安秦始皇兵马俑博物馆内发生了一起意外事件。一名男子进入三号坑中,躺在地面上,旁边有倒下的陶俑以及陶俑残片。专家表示,损坏的兵马俑修复起来非常困难,甚至比刚出土时的修复和拼接还要难。苏州考古博物馆馆长、苏州考古所所长程义解释说,兵马俑刚被发掘出…

“内鬼”李卓勋任上被查 涉嫌严重违纪违法

黑龙江省哈尔滨市纪委监委第九审查调查室主任李卓勋因涉嫌严重违纪违法,正在接受纪律审查和监察调查。这一消息由“清廉龙江”于5月30日发布。李卓勋出生于1973年11月,是黑龙江双城人。他于1994年6月参加工作,并在1997年6月加入中国共产党。李卓勋毕业于省委党校法律专业,在…

在哈佛演讲的25岁中国女生发声 签证不确定性影响未来规划

5月30日,在哈佛大学毕业典礼上,中国学生蒋雨融穿着中国传统服饰发表了动情演讲。25岁的蒋雨融来自青岛,获得了哈佛大学国际发展方向的公共行政硕士学位。她提到,特朗普政府威胁遣返学生签证持有者,给她的未来带来了极大不确定性。蒋雨融开始考虑在海外从事国际发展工作。她…

vm文件传输

1、安装VMware Tool工具&#xff0c;然后直接拖拉文件进虚拟机里(menu->vn->)。 2、安装VMware Tool工具后设置共享目录。 3、Serv-Uflashfxp 架设FTP服务器&#xff0c;作为虚拟机与主机之间传输文件。

媒体:欧冠决赛边路是争夺焦点 双雄边路对决引发关注

北京时间6月1日凌晨,本赛季欧洲足坛的压轴大戏如期上演,国际米兰和巴黎圣日耳曼争夺欧冠冠军。两队赛季初都不被看好,但最终在慕尼黑安联球场相遇,双方都志在必得。登贝莱让所有欧冠对手头疼。边路成为比赛的关键点。尽管两队此前未曾交手,但这个赛季的欧冠征程已让彼此印…