在 Golang EFK 分布式日志系统方案中,ElasticSearch 是一个分布式搜索引擎和数据存储库,它可以用于存储和搜索大量的日志数据。以下是 ElasticSearch 分布式集群部署的步骤:

  1. 下载 ElasticSearch:从 ElasticSearch 官网上下载最新版本的 ElasticSearch。

  2. 解压缩并安装 ElasticSearch:将下载下来的文件解压缩到指定目录中,并按照官方文档进行安装。

  3. 配置 ElasticSearch:通过修改 config 目录下的 elasticsearch.yml 文件来配置 ElasticSearch 的相关参数,如集群名称、节点名称、网络接口等。具体可参考官方文档。

  4. 启动 ElasticSearch:使用命令行工具进入到 ElasticSearch 的 bin 目录,并执行以下命令启动 ElasticSearch:

    ./elasticsearch

  5. 添加节点:为了实现高可用性和负载均衡,在同一局域网内可以添加多个节点。要添加节点,请重复以上步骤,在每个节点上安装并启动 ElasticSearch,并确保各个节点的配置文件中设置了相同的集群名称。

  6. 验证集群状态:打开浏览器,输入 http://localhost:9200/_cat/nodes?v 命令来查看集群状态信息,如果所有节点都正确加入集群,则说明分布式部署成功。

在 Golang EFK 分布式日志系统方案中,ElasticSearch 的分布式集群部署需要先下载和安装 ElasticSearch,并按照官方文档进行配置和启动。最后添加多个节点并验证集群状态即可。

二,analysis-ik分析器与分词器

对于Golang和EFK分布式日志系统方案中的Analysis-IK分析器和分词器,可以按照以下步骤进行配置:

  1. 下载和安装Elasticsearch:从官网下载适合你操作系统的版本,解压文件并进行相应配置。

  2. 安装IK插件:下载适合您所使用的Elasticsearch版本的IK插件,并将其解压缩到elasticsearch/plugins目录下。然后在config/elasticsearch.yml文件中添加如下内容:

    index.analysis.analyzer.default.type : "ik_smart"

  3. 配置Fluentd与Elasticsearch连接:使用Fluentd插件fluent-plugin-elasticsearch连接到Elasticsearch集群。在Fluentd配置文件中添加相应内容。

  4. 编写Golang程序记录日志:使用第三方库logrus或zap等编写代码记录日志,并将其发送给Fluentd处理。

  5. 在Kibana中查看分词结果:通过浏览器访问Kibana控制台,在控制台中对日志进行查询、过滤等操作,并查看分词结果。

Analysis-IK分析器和分词器可以帮助我们实现更精确的文本搜索和聚类,提高搜索引擎的准确性和效率。同时,我们需要了解相关工具的用法和配置方法,以便正确地使用它们。

三,logstash 管道安装

在 Golang EFK 分布式日志系统方案中,Logstash 是用于收集、处理和转发日志数据的工具。以下是安装 Logstash 管道的步骤:

  1. 下载和安装 Java 运行环境:Logstash 是基于 Java 开发的,所以需要先下载和安装 Java 运行环境。

  2. 下载和解压缩 Logstash:从官网下载适合你操作系统的版本,解压文件到你喜欢的目录下。

  3. 配置 Logstash 管道:在解压后的目录下找到 conf 目录,编辑 logstash.conf 文件,并根据实际情况进行配置。例如:

    input {
    file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    }
    }

    filter {
    grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    }

    output {
    elasticsearch {
    hosts => ["localhost:9200"]
    index => "nginx-access-%{+YYYY.MM.dd}"
    }
    }

上述配置示例使用 input 插件从本地 Nginx 访问日志中读取数据,使用 filter 插件对数据进行 grok 处理(即从原始文本中提取有用信息),然后使用 output 插件将处理后的数据发送给 Elasticsearch。

  1. 启动 Logstash 管道:通过命令行进入到 Logstash 的 bin 目录下,执行以下命令启动管道:

    ./logstash -f /path/to/logstash.conf

  2. 检查日志:在 Logstash 启动后,可以通过控制台输出查看日志处理情况。若无异常,则数据已成功传输到 Elasticsearch 中。

安装 Logstash 管道需要先下载和安装 Java 运行环境,然后下载和解压缩 Logstash 并进行相应配置,最后启动管道并检查日志。

四,filebeat 从日志文件采集日志

在 Golang EFK 分布式日志系统方案中,Filebeat 是用于采集和传输日志数据的工具。以下是使用 Filebeat 从日志文件采集日志的步骤:

  1. 下载和解压缩 Filebeat:从官网下载适合你操作系统的版本,解压文件到你喜欢的目录下。

  2. 配置 Filebeat:在解压后的目录下找到配置文件 filebeat.yml,并根据实际情况进行配置。例如:

    filebeat.inputs:

    • type: log
      enabled: true
      paths:
      • /var/log/nginx/access.log
        fields:
        service: nginx

    output.elasticsearch:
    hosts: ["localhost:9200"]

上述配置示例使用 filebeat.inputs 插件指定要采集的日志文件路径和名称,使用 output.elasticsearch 插件将处理后的数据发送给 Elasticsearch。

  1. 启动 Filebeat:通过命令行进入到 Filebeat 的安装目录下,执行以下命令启动服务:

    ./filebeat -e -c /path/to/filebeat.yml

其中参数 -e 表示以调试模式运行,-c 指定配置文件路径。

  1. 检查数据:在 Filebeat 启动后,可以通过控制台输出查看日志采集情况。若无异常,则数据已成功传输到 Elasticsearch 中。

使用 Filebeat 从日志文件采集日志需要先下载和解压缩 Filebeat 并进行相应配置,最后启动服务并检查数据。

五,golang通过SDK主动上传日志

在 Golang EFK 分布式日志系统方案中,SDK 是用于编写程序主动上传日志的工具。以下是使用 SDK 主动上传日志的步骤:

 "github.com/olivere/elastic/v7"
 client, err := elastic.NewClient(elastic.SetURL("http://localhost:9200"))
 if err != nil {
 	fmt.Println("Failed to create client:", err)
 	return
 }

 indexName := "mylogindex"

 data := map[string]interface{}{
 	"message": "Hello world!",
 }

 put1, err := client.Index().
 	                 Index(indexName).
 	                 BodyJson(data).
 	                 Do(ctx)
 if err != nil {
 	fmt.Println("Failed to put data into index:", err)
 	return
 }
 
 fmt.Printf("Indexed data with ID %s to index %s\n", put1.Id, put1.Index)

上述代码示例创建了一个名为 mylogindex 的索引,并向其中插入一条数据。

  1. 运行程序:运行以上代码即可将数据主动上传到 Elasticsearch 中。

使用 Golang SDK 主动上传日志需要先下载和安装 Elasticsearch 客户端库,并编写相应的程序代码。最后运行程序即可将数据上传到 Elasticsearch 中。