learning_record_doc/elk/es、logstash安装.md
2022-02-28 23:07:00 +08:00

4.5 KiB
Raw Blame History

es、logstash安装

  • 安装包准备(下载好之后上传至linux服务器)

  • elasticsearch

    • 解压安装elasticsearch

      tar -zxvf <elasticsearch-name>
      
    • 配置elasticsearch.yml文件

      • 打开配置文件
      vim config/elasticsearch.yml
      
      • 在配置文件最下面输入以下内容后 wq保存退出
      node.name: node-1
      cluster.initial_master_nodes: "node-1" 
      network.host: 0.0.0.0
      http.port: 9200					#端口
      http.cors.enabled: true			#开启跨域
      http.cors.allow-origin: "*"
      
    • 启动elasticsearch

      • 直接启动-执行bin目录下的elasticsearch

        ./bin/elasticsearch
        
      • 后台启动-执行bin目录下的elasticsearch 加上-d

        ./bin/elasticsearch -d
        

        使用ps kill命令杀掉当前elasticsearch后台

        ps -ef|grep elasticsearch
        kill -9 <PID>
        
    • 启动出现max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]解决办法

      • 打开/etc/sysctl.conf

        sudo /etc/sysctl.conf
        
      • 在最下面添加以下内容 然后:wq保存退出

        vm.max_map_count=262144
        
      • 执行/sbin/sysctl -p立即生效

        sudo /sbin/sysctl -p
        
  • ik 分词器安装(版本号要一致)

    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip
    
  • logstash安装

    • 解压安装logstash

      tar -zxvf <logstash-name>
      
    • 配置启动文件

      • 在config文件目录下创建mysql.conf启动文件
      input {
      	jdbc {
      		jdbc_connection_string => "jdbc:mysql://192.168.3.51:3306/kf?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true"
      		jdbc_user => "lduan"
      		jdbc_password => "359"
      		jdbc_driver_library => "/home/gd-service/software/mysql-connector-java-8.0.23/mysql-connector-java-8.0.23.jar"
      		jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      		# 定时器 多久执行一次SQL默认是一分钟
      		schedule => "* * * * *"
      		#是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
      		clean_run => "false"
      		#记录字段保存的位置。
      		last_run_metadata_path => "/home/gd-service/software/elk/logstash-7.8.0/station_parameter.txt"
      		# statement => "SELECT * FROM purchase_history"  
      		# 执行的sql 文件路径+名称
      		statement_filepath => "/home/gd-service/software/elk/logstash-7.8.0/mysql/jdbc.sql"
      		#是否分页
      		jdbc_paging_enabled => "true"
      		jdbc_page_size => "5000"
      		# 索引类型
      		type => "_doc"
      		#是否需要记录某列的值,用于实时同步更新
      		use_column_value => true
      		#需要记录的字段一般用于记录主键Id或者更新时间用于sql查询最新
      		tracking_column => "index"
      		#写入es数据的key默认会被转成小写该字段用于控制是否小写。
      		lowercase_column_names => false
      	}
          stdin{
          }
      } 
      
      #ElasticSearch中默认使用UTC时间,和中国时间相差8小时加入以下配置
      filter {
      	ruby {
      		code => "event.set('timestamp',event.get('@timestamp').time.localtime+8*60*60)"
      	}
      	ruby {
      		code => "event.set('@timestamp',event.get('timestamp'))"
      	}
      	mutate {
      		remove_field => ["timestamp"]
      	}
      	# ruby {
      	# 	code => "event.set('myTimeField',event.get('myTimeField').time.localtime+8*60*60)"
      	# }
      }
      
      #filter { json { source => "message" remove_field => ["message"] } }
      
      output {
      	elasticsearch { 
      		hosts => ["localhost:9200"]
      		index => "product"
      		document_type => "_doc"
      		document_id => "%{index}"
      	}
          stdout{
      		# JSON格式输出
              codec => "json_lines"
          }
      }
      
    • 启动logstash

      • 直接启动-执行bin目录下的logstash

        ./logstash -f ../config/mysql.conf