ELK服务
ES服务
查找ES服务
shell
ps -ef | grep elasticsearch
检查ES版本信息
shell
curl -X GET "localhost:9200/"
启动 Elasticsearch 服务
并使其在后台运行,可以按照以下步骤操作:
PS: Elasticsearch 官方不建议以root权限运行 Elasticsearch,因为这可能会导致安全风险和权限问题。
-
进入 Elasticsearch 安装目录: 在终端中使用
cd命令进入 Elasticsearch 的安装目录。假设 Elasticsearch 安装在/path/to/elasticsearch目录下,那么可以输入以下命令:bashCopy code cd /path/to/elasticsearch -
启动 Elasticsearch 服务: 使用
./bin/elasticsearch命令启动 Elasticsearch 服务。如果一切正常,你会在终端看到 Elasticsearch 的启动日志信息。例如:shell./bin/elasticsearch如果 Elasticsearch 配置了自定义的配置文件,可以使用
-E参数指定配置文件的路径,例如:shell./bin/elasticsearch -Epath.conf=/path/to/config -
后台运行: 默认情况下,终端中启动的 Elasticsearch 进程会占用当前终端窗口,并在该终端窗口中输出日志信息。如果你希望 Elasticsearch 在后台运行,可以使用以下两种方法:
a. 使用
&符号: 在启动 Elasticsearch 命令的末尾加上&符号,表示将进程置于后台运行。例如:shell./bin/elasticsearch &这样,Elasticsearch 将在后台运行,且终端仍然可用于其他命令。
b. 使用
nohup命令: 使用nohup命令可以使 Elasticsearch 在后台运行,并将输出日志重定向到一个文件中,这样即使终端关闭,Elasticsearch 也会继续运行。例如:shellnohup ./bin/elasticsearch &默认情况下,日志输出会保存在
nohup.out文件中。如果希望自定义日志输出文件,可以使用以下命令:shellnohup ./bin/elasticsearch > /path/to/elasticsearch.log 2>&1 &选择其中一种方法将 Elasticsearch 启动并后台运行,根据需要选择合适的方式。注意,无论哪种方式,Elasticsearch 进程都会在后台运行,你可以通过查看日志文件来监视 Elasticsearch 的运行状态。
ELK日志处理
shell
# 日志目录 /home/elk/elasticsearch-7.17.5/logs
cd /home/elk/elasticsearch-7.17.5/logs
多条件匹配日志内容
json
{
"query": {
"bool": {
"must": [
{
"match": {
"message": "slow sql"
}
},
{
"match": {
"message": "label_outer_box"
}
}
]
}
}
}
优化建议
json
#如何优化ES采集数据导致索引时间与日志实现不同问题,能使用日志时间[2023-12-30 14:13:17.067]作为索引时间
Dec 30, 2023 @ 14:13:17.866 [2023-12-30 14:13:17.067] [http-nio-10001-exec-4] DEBUG c.e.w.s.m.S.updateStockOuterBox - [debug,135] - <== Updates: 1
Dec 30, 2023 @ 14:13:17.866 [2023-12-30 14:13:16.938] [http-nio-10001-exec-4] DEBUG c.e.w.s.m.S.getMinMoveNoByOuterBoxId - [debug,135] - <== Total: 1
批量删除
在 CentOS 7 中,你可以使用 find 命令来查找并删除一个月前的日志文件。find 命令可以根据文件的修改时间(mtime)来查找文件,然后使用 -exec 选项来执行删除操作。
下面是一个示例命令,它会查找并删除所有在 30 天前修改的 .json.gz 和 .log.gz 文件:
shell
find /home/elk/elasticsearch-7.17.5/logs -type f \( -name "*.json.gz" -o -name "*.log.gz" \) -mtime +30 -exec rm -f {} \;
在这个命令中:
/path/to/logs是日志文件的路径,你需要将其替换为实际的路径。-type f表示只查找文件。-name "*.json.gz" -o -name "*.log.gz"表示查找以.json.gz或.log.gz结尾的文件。-mtime +30表示查找在 30 天前修改的文件。-exec rm -f {} \;表示对每个找到的文件执行rm -f命令,删除这个文件。
请注意,这个命令会立即删除找到的文件,不会有任何提示或确认。在运行这个命令之前,请确保你已经备份了所有重要的数据。
ELK索引处理
进入kibana页面处理[索引管理 - Elastic](
kibana
kibana的systemctl启动命令
sh
sudo systemctl start kibana
配置目录: /etc/kibana
安装目录: /usr/share/kibana
tar包启动kibana
-
进入 Kibana 目录:
cd /usr/local/src/kibana-7.17.5 -
查看 Kibana 配置文件 : Kibana 的配置文件通常名为
kibana.yml,位于config/目录下。cat config/kibana.yml -
编辑 Kibana 配置文件(如果需要): 使用文本编辑器编辑配置文件,例如设置 Elasticsearch 服务的 URL。
vim config/kibana.yml确保设置正确的
elasticsearch.url,例如:elasticsearch.url: "http://localhost:9200" -
启动 Kibana: 使用以下命令启动 Kibana:
./bin/kibana -
验证 Kibana 是否运行 : Kibana 默认监听 5601 端口,您可以通过访问
http://<server-ip>:5601来检查 Kibana 是否运行正常。 -
后台启动Kibana:
nohup ./kibana > /usr/local/src/kibana-7.17.5-linux-x86_64/logs/console.log 2>&1 &
Logstash
tar包启动logstash
-
进入 Logstash 目录:
cd /usr/local/src/logstash-7.17.5 -
配置 Logstash : Logstash 的配置文件通常命名为
logstash.conf,位于配置目录下。cat config/logstash.conf -
编辑 Logstash 配置文件: 根据需要编辑配置文件,设置输入(input)、过滤器(filter)和输出(output)插件。
vim config/logstash.conf -
启动 Logstash: 使用以下命令启动 Logstash:
./bin/logstash nohup ./bin/logstash -f /usr/local/src/logstash-7.17.5/config/ logstash.conf & ./logstash -f /usr/local/src/logstash-7.17.5/config/logstash.conf & -
验证 Logstash 是否运行: 检查 Logstash 是否按预期运行,并查看其日志输出以确认没有错误。
shell
input {
tcp {
host => "0.0.0.0"
port => 8765
mode => "server"
codec => json_lines
}
}
filter {
if [fields][log_type] == "wmsProd" {
json {
source => "message"
}
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] %{LOGLEVEL:loglevel} %{JAVACLASS:class} - %{GREEDYDATA:message}" }
}
}
}
output {
elasticsearch {
hosts => ["110.211.211.114:9200"]
index => "ewmslog"
}
}
RPM 包启动方式
使用 yum 命令(推荐):
bash
sudo yum localinstall logstash-7.x.x.rpm
yum 会自动处理依赖关系,这通常是更推荐的方式。
3. 启动 Logstash
安装完成后,您可以使用以下命令启动 Logstash:
bash
sudo systemctl start logstash
4. 设置开机自启
如果您希望 Logstash 在系统启动时自动启动,可以使用以下命令:
bash
sudo systemctl enable logstash
5. 检查状态
您可以检查 Logstash 的运行状态:
bash
sudo systemctl status logstash
6. 配置 Logstash
Logstash 的配置文件通常位于 /etc/logstash/conf.d/ 目录下。您可以在此目录中创建或编辑配置文件以定义数据输入、过滤和输出。
7. 日志查看
Logstash 的日志文件通常位于 /var/log/logstash/ 目录中。您可以查看这些日志以获取运行信息和调试。
bash
sudo tail -f /var/log/logstash/logstash-plain.log
8. 重启
bash
sudo systemctl restart logstash
部署Filebeat和Logstash
要在CentOS 7环境中编写Filebeat和Logstash配置文件以收集名为"wms"的Java程序运行时输出的日志文件并在Kibana中显示,您可以按照以下步骤操作:
-
在Java程序中设置日志输出路径为一个文件,例如: /var/log/wms.log
-
安装Filebeat并编辑其配置文件,指定要监控的日志路径为 /var/log/wms.log,并将输出发送到Logstash节点。示例配置如下:
复制代码filebeat.inputs:
- type: log
paths:- /var/log/wms.log
output.logstash:
hosts: ["logstash-node:5044"] - type: log
-
安装Logstash并编辑其配置文件,指定从Filebeat接收输入,并根据日志格式解析数据。示例配置如下:测试环境路径
/etc/logstash/conf.dinput {
beats {
port => 5044
}
}filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} [%{DATA:thread}] %{LOGLEVEL:loglevel} %{JAVACLASS:class} - %{GREEDYDATA:message}" }
}
}output {
elasticsearch {
hosts => ["elasticsearch-node:9200"]
index => "wms-%{+YYYY.MM.dd}"
}
} -
重新启动Filebeat
shsudo service filebeat restart -
重新Logstash服务
shsudo systemctl restart logstash -
在Kibana中创建一个索引模式,使用前缀为"wms"的日志索引。
-
打开Discover页面,您应该能够看到来自"wms"程序的日志消息。
相关命令:
sh
# 关闭logstash
systemctl stop logstash
# 查看端口
netstat -tlnp
如果按照我之前提供的配置,Elasticsearch中没有生成对应的索引,请检查以下几个方面:
- 确认Filebeat和Logstash服务都已启动,并且配置文件没有语法错误。
- 检查Filebeat是否成功监控到日志文件。可以使用以下命令查看Filebeat的状态:
sh
sudo systemctl status filebeat
如果Filebeat正在运行,则应该看到一些类似下面的输出:
shell
filebeat.service - Filebeat sends log files to Logstash or directly to Elasticsearch.
Loaded: loaded (/usr/lib/systemd/system/filebeat.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2023-04-07 14:00:23 UTC; 5s ago
[...]
还可以通过以下命令检查filebeat的配置是否正常:
sh
filebeat test config -c /etc/filebeat/filebeat.yml
可以通过以下命令查看详细日志:
sh
sudo /usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml -path.logs /var/log/filebeat
您还可以通过在Kibana的Management页面中查看Filebeat输入来确保Filebeat正在监视日志文件。
- 检查Logstash是否成功处理了来自Filebeat的日志数据。可以使用以下命令查看Logstash的状态:
sh
sudo systemctl status logstash
如果Logstash正在运行,则应该看到一些类似下面的输出:
shell
logstash.service - logstash
Loaded: loaded (/usr/lib/systemd/system/logstash.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2023-04-07 14:00:23 UTC; 5s ago
[...]
可以通过以下命令查看日志:
sh
tail -f /var/log/logstash/logstash-plain.log
您还可以通过在Kibana的Monitoring页面中查看Logstash的接收和处理速率来确保Logstash正在处理日
要基于新的索引在Kibana中创建可视化面板,您可以按照以下步骤操作:
- 在Kibana中选择"Visualize"(可视化)选项卡。
- 选择要创建的可视化类型,例如条形图、折线图或仪表盘等。
- 在"数据"选项卡下,选择新的索引。
- 根据您的需求配置字段、聚合和过滤器等设置。
- 点击"保存"按钮,将可视化面板保存到Kibana中。
通过这些步骤,您就可以使用新的索引数据创建可视化面板了。
常用重启命令
sudo systemctl stop filebeat
sudo systemctl start filebeat
sudo systemctl status filebeat
sudo systemctl restart logstash
sudo systemctl status logstash
sudo rpm -ivh filebeat-7.17.5-x86_64.rpm
logstash 指定端口 配置启动
日志目录:/var/log/logstash
sh
./logstash --http.port 9601 -f /home/elk/logstash-7.17.5/config/test.conf
logstash脚本
sh
input {
beats {
port => 5044
}
}
filter {
if [fields][log_type] == "wmsTest" {
json {
source => "message"
}
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] %{LOGLEVEL:loglevel} %{JAVACLASS:class} - %{GREEDYDATA:message}" }
}
date {
match => [ "log_timestamp", "yyyy-MM-dd HH:mm:ss.SSS" ]
target => "@timestamp"
timezone => "Asia/Shanghai"
}
}
if [fields][log_type] == "wmsProd" {
json {
source => "message"
}
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] %{LOGLEVEL:loglevel} %{JAVACLASS:class} - %{GREEDYDATA:message}" }
}
}
}
output {
if [fields][log_type] == "wmsTest" {
elasticsearch {
hosts => ["110.211.211.49:9200"]
index => "wms-test-%{+YYYY.MM.dd}"
}
}
if [fields][log_type] == "wmsProd" {
elasticsearch {
hosts => ["110.211.211.49:9200"]
index => "wms-prod-%{+YYYY.MM.dd}"
}
}
}