插件窝 干货文章 如何在Linux中使用Elasticsearch进行日志分析和搜索

如何在Linux中使用Elasticsearch进行日志分析和搜索

Elasticsearch sudo Filebeat Logstash 589    来源:    2025-04-18

在Linux中使用Elasticsearch进行日志分析和搜索指南

Elasticsearch是一个强大的分布式搜索和分析引擎,特别适合处理日志数据。以下是完整的配置和使用流程:

1. 安装Elasticsearch

在Ubuntu/Debian上安装:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch

在CentOS/RHEL上安装:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo vi /etc/yum.repos.d/elasticsearch.repo

添加以下内容:

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

然后安装:

sudo yum install elasticsearch

2. 配置Elasticsearch

编辑配置文件 /etc/elasticsearch/elasticsearch.yml

cluster.name: my-elastic-cluster
node.name: ${HOSTNAME}
network.host: 0.0.0.0
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node1"]
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

启动服务:

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

验证安装:

curl -X GET "localhost:9200/"

3. 安装Kibana(可视化界面)

# Ubuntu/Debian
sudo apt-get install kibana

# CentOS/RHEL
sudo yum install kibana

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

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]

启动Kibana:

sudo systemctl enable kibana
sudo systemctl start kibana

访问Kibana:http://your-server-ip:5601

4. 安装Logstash(可选,用于日志收集和处理)

# Ubuntu/Debian
sudo apt-get install logstash

# CentOS/RHEL
sudo yum install logstash

5. 日志收集和分析方案

方案1:使用Filebeat直接发送到Elasticsearch

  1. 安装Filebeat:
# Ubuntu/Debian
sudo apt-get install filebeat

# CentOS/RHEL
sudo yum install filebeat
  1. 配置Filebeat (/etc/filebeat/filebeat.yml):
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

output.elasticsearch:
  hosts: ["localhost:9200"]
  1. 启动Filebeat:
sudo systemctl enable filebeat
sudo systemctl start filebeat

方案2:使用Filebeat + Logstash管道

  1. 配置Filebeat输出到Logstash:
output.logstash:
  hosts: ["localhost:5044"]
  1. 创建Logstash配置文件 (/etc/logstash/conf.d/logstash.conf):
input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
  }
  date {
    match => [ "timestamp", "ISO8601" ]
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "logs-%{+YYYY.MM.dd}"
  }
}
  1. 启动Logstash:
sudo systemctl enable logstash
sudo systemctl start logstash

6. 在Kibana中创建索引模式

  1. 访问Kibana界面 (http://your-server-ip:5601)
  2. 导航到"Management" > "Stack Management" > "Index Patterns"
  3. 创建与你的日志索引匹配的模式(如"logs-*")

7. 使用Kibana Discover查看日志

  1. 导航到"Discover"
  2. 选择你创建的索引模式
  3. 使用搜索栏和过滤器查询特定日志

8. 高级搜索技巧

基本搜索:

message: "error"

多条件搜索:

message: "error" AND host: "web-server-1"

通配符搜索:

message: "timeout*"

范围搜索:

@timestamp: [now-1d TO now]

正则表达式搜索:

message: /timeout \d+ms/

9. 创建可视化仪表板

  1. 导航到"Visualize"
  2. 选择可视化类型(柱状图、饼图等)
  3. 配置指标和桶聚合
  4. 保存可视化并添加到仪表板

10. 设置警报(使用Elastic Alerting)

  1. 导航到"Management" > "Stack Management" > "Alerting"
  2. 创建新规则
  3. 定义条件(如错误日志超过阈值)
  4. 配置通知方式(Email、Slack等)

性能优化建议

  1. 为生产环境调整JVM堆大小(/etc/elasticsearch/jvm.options):
-Xms4g
-Xmx4g
  1. 使用索引生命周期管理(ILM)自动管理旧日志:
PUT _ilm/policy/logs_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "30d"
          }
        }
      },
      "delete": {
        "min_age": "90d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
  1. 考虑使用多个节点组成集群以提高性能和可靠性

常见问题解决

问题1: Elasticsearch启动失败,内存不足 解决: 增加系统swap空间或调整JVM堆大小

问题2: 索引变为只读状态 解决: 执行以下命令:

PUT _settings
{
  "index": {
    "blocks": {
      "read_only_allow_delete": "false"
    }
  }
}

问题3: 搜索性能慢 解决: 考虑添加更多索引分片或优化查询语句

通过以上步骤,你可以在Linux系统上建立一个完整的Elasticsearch日志分析和搜索解决方案。根据你的具体需求,可以进一步定制和扩展这个系统。