ELBK部署

ELK服务

ES服务

查找ES服务
shell 复制代码
ps -ef | grep elasticsearch
检查ES版本信息
shell 复制代码
curl -X GET "localhost:9200/"
启动 Elasticsearch 服务

并使其在后台运行,可以按照以下步骤操作:

PS: Elasticsearch 官方不建议以root权限运行 Elasticsearch,因为这可能会导致安全风险和权限问题。

  1. 进入 Elasticsearch 安装目录: 在终端中使用 cd 命令进入 Elasticsearch 的安装目录。假设 Elasticsearch 安装在 /path/to/elasticsearch 目录下,那么可以输入以下命令:

    复制代码
    bashCopy code
    cd /path/to/elasticsearch
  2. 启动 Elasticsearch 服务: 使用 ./bin/elasticsearch 命令启动 Elasticsearch 服务。如果一切正常,你会在终端看到 Elasticsearch 的启动日志信息。例如:

    shell 复制代码
    ./bin/elasticsearch

    如果 Elasticsearch 配置了自定义的配置文件,可以使用 -E 参数指定配置文件的路径,例如:

    shell 复制代码
    ./bin/elasticsearch -Epath.conf=/path/to/config
  3. 后台运行: 默认情况下,终端中启动的 Elasticsearch 进程会占用当前终端窗口,并在该终端窗口中输出日志信息。如果你希望 Elasticsearch 在后台运行,可以使用以下两种方法:

    a. 使用 & 符号: 在启动 Elasticsearch 命令的末尾加上 & 符号,表示将进程置于后台运行。例如:

    shell 复制代码
    ./bin/elasticsearch &

    这样,Elasticsearch 将在后台运行,且终端仍然可用于其他命令。

    b. 使用 nohup 命令: 使用 nohup 命令可以使 Elasticsearch 在后台运行,并将输出日志重定向到一个文件中,这样即使终端关闭,Elasticsearch 也会继续运行。例如:

    shell 复制代码
    nohup ./bin/elasticsearch &

    默认情况下,日志输出会保存在 nohup.out 文件中。如果希望自定义日志输出文件,可以使用以下命令:

    shell 复制代码
    nohup ./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

  1. 进入 Kibana 目录

    复制代码
    cd /usr/local/src/kibana-7.17.5
  2. 查看 Kibana 配置文件 : Kibana 的配置文件通常名为 kibana.yml,位于 config/ 目录下。

    复制代码
    cat config/kibana.yml
  3. 编辑 Kibana 配置文件(如果需要): 使用文本编辑器编辑配置文件,例如设置 Elasticsearch 服务的 URL。

    复制代码
    vim config/kibana.yml

    确保设置正确的 elasticsearch.url,例如:

    复制代码
    elasticsearch.url: "http://localhost:9200"
  4. 启动 Kibana: 使用以下命令启动 Kibana:

    复制代码
    ./bin/kibana
  5. 验证 Kibana 是否运行 : Kibana 默认监听 5601 端口,您可以通过访问 http://<server-ip>:5601 来检查 Kibana 是否运行正常。

  6. 后台启动Kibana:

    复制代码
    nohup ./kibana > /usr/local/src/kibana-7.17.5-linux-x86_64/logs/console.log 2>&1 &

Logstash

tar包启动logstash

  1. 进入 Logstash 目录

    复制代码
    cd /usr/local/src/logstash-7.17.5
  2. 配置 Logstash : Logstash 的配置文件通常命名为 logstash.conf,位于配置目录下。

    复制代码
    cat config/logstash.conf
  3. 编辑 Logstash 配置文件: 根据需要编辑配置文件,设置输入(input)、过滤器(filter)和输出(output)插件。

    复制代码
    vim config/logstash.conf
  4. 启动 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 &
  5. 验证 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中显示,您可以按照以下步骤操作:

  1. 在Java程序中设置日志输出路径为一个文件,例如: /var/log/wms.log

  2. 安装Filebeat并编辑其配置文件,指定要监控的日志路径为 /var/log/wms.log,并将输出发送到Logstash节点。示例配置如下:

    复制代码filebeat.inputs:

    • type: log
      paths:
      • /var/log/wms.log

    output.logstash:
    hosts: ["logstash-node:5044"]

  3. 安装Logstash并编辑其配置文件,指定从Filebeat接收输入,并根据日志格式解析数据。示例配置如下:测试环境路径/etc/logstash/conf.d

    input {
    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}"
    }
    }

  4. 重新启动Filebeat

    sh 复制代码
    sudo service filebeat restart
  5. 重新Logstash服务

    sh 复制代码
    sudo systemctl restart logstash
  6. 在Kibana中创建一个索引模式,使用前缀为"wms"的日志索引。

  7. 打开Discover页面,您应该能够看到来自"wms"程序的日志消息。

相关命令:

sh 复制代码
# 关闭logstash
systemctl stop logstash
# 查看端口
netstat -tlnp

如果按照我之前提供的配置,Elasticsearch中没有生成对应的索引,请检查以下几个方面:

  1. 确认Filebeat和Logstash服务都已启动,并且配置文件没有语法错误。
  2. 检查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正在监视日志文件。

  1. 检查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中创建可视化面板,您可以按照以下步骤操作:

  1. 在Kibana中选择"Visualize"(可视化)选项卡。
  2. 选择要创建的可视化类型,例如条形图、折线图或仪表盘等。
  3. 在"数据"选项卡下,选择新的索引。
  4. 根据您的需求配置字段、聚合和过滤器等设置。
  5. 点击"保存"按钮,将可视化面板保存到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}"
    }
  }

}
相关推荐
为什么要内卷,摆烂不香吗4 小时前
sed 流编辑器练习自用
linux·运维·编辑器
智象科技4 小时前
从资源到业务:运维监控体系的差异
大数据·运维·一体化运维·智能运维·多云管理
杜子不疼.4 小时前
【Linux】多机管理终极方案:禁用 root 密码,用面板实现批量部署 + 操作追溯
linux·运维·服务器
weixin_307779134 小时前
Jenkins Structs 插件:为插件提供命名(DSL)支持的核心库
开发语言·ci/cd·架构·jenkins·etl
艾莉丝努力练剑4 小时前
【Python基础:语法第五课】Python字典高效使用指南:避开KeyError,掌握遍历与增删改查精髓
大数据·运维·人工智能·python·安全·pycharm
后端小张4 小时前
【JAVA进阶】Docker 2025完全指南:从容器入门到企业级实践
java·运维·开发语言·spring·docker·容器·springboot
DeepFlow 零侵扰全栈可观测4 小时前
金山办公基于 DeepFlow docker 模式的可观测性实践
运维·docker·容器
驾驭人生4 小时前
SSH 服务部署 + Docker(指定版本)完整安装 的一体化操作流程
运维·docker·ssh
珂玥c4 小时前
Rook部署——k8s集群中使用ceph
运维·ceph·kubernetes