ELK开发日记(1) - Elastic 7.2.0

最近给自己的平台做搜索系统服务,发现了ELK这个宝贝,先占个坑,一边学一边写点心得

一、开发路径

1.部署ElasticSearch为系统服务

  • 下载v7.2.0 Debian安装包,小于7.2.0版本无法免费使用该功能
  • 下载地址:https://www.elastic.co/downlo...
  • 拷贝至服务器,执行dpkg -i elasticsearch-7.2.0-amd64.deb安装
  • 如需外网访问,配置/etc/elasticsearch.yml文件如下:
cluster.name: your_cluster # 集群名字
node.name: yout_node_1 # 节点名称,多个节点可以采用_1,_2,_3等后缀方便管理
network.host: 127.0.0.1 # ES工作IP地址,默认localhost屏蔽远程
http.port: 9200 # ES工作端口,默认9200
discovery.seed_hosts: ["127.0.0.1"] # 节点发现IP,初始推荐与工作IP相同
http.cors.enabled: true # 启用跨域请求策略
http.cors.allow-origin: "*"
http.cors.allow-headers: X-Requested-With, X-Auth-Token, Content-Type, Content-Length, Authorization
http.cors.allow-credentials: true
  • 调用 service elasticsearch start或systemctl start elasticsearch.service启动
  • 也可以登录非root账户,调用 ./bin/elasticsearch -d -p pid
  • 如启动失败,检查/etc/elasticsearch,/var/log/elasticsearch,/var/lib/elasticsearch三个文件夹是否属于elasticsearch用户
  • 若使用自定义用户运行,则修改以上三个文件夹的所有者为你使用的用户
  • 若仍启动失败,修改/usr/lib/systemd/system/elasticsearch.service文件:
User=cosloli # 改为当前使用的用户
Group=cosloli # 改为当前所在的用户组
  • 测试:GET http://es.host.name:9200
  • 返回结果如下则配置成功:

注意!记得在服务器安全策略中配置9200,9100,5601,1358,5044端口允许访问

2.启用HTTP基本鉴权(Basic Authorization)

  • 进入es安装目录
  • 调用bin/elasticsearch-setup-passwords interactive初始化各个预置账户的密码
  • 初始化成功后,配置/etc/elasticsearch/elasticsearch.yml如下:
xpack.security.enabled: true
  • 测试访问:GET http://es.host.name:9200,配置成功将返回401 (Unauthorized)错误
  • 开启鉴权后,使用脚本通信的话,需要在请求头部配置Authorization字段:
# Authorization字段值通过Base64编码生成,js可调用:btoa(‘username:password’)
request.header[‘Authorization’] = ‘Basic Y0EtqzNzX129zTpQA2FbG9sa’
  • 使用浏览器的话,直接在弹出的对话框输入用户名密码即可

3.启用SSL通信

  • 申请SSL证书,尽量避免使用自签名证书,容易被浏览器拦截
  • 拷贝证书到/etc/elasticsearch/certs/下
  • 配置/etc/elasticsearch/elasticsearch.yml如下:
# 启用节点间SSL传输
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
# 工作域名的ssl密钥
xpack.security.transport.ssl.key: certs/your.ssl.cert.key
# 工作域名的ssl证书,证书链可能不完整,请参阅下方提示!!!!!
xpack.security.transport.ssl.certificate: certs/your.ssl.cert_chain.crt

# 启用服务器https通信
xpack.security.http.ssl.enabled: true
# 工作域名的ssl密钥
xpack.security.http.ssl.key: certs/your.ssl.cert.key
# 工作域名的ssl证书,证书链可能不完整,请参阅下方提示!!!!!
xpack.security.http.ssl.certificate: certs/your.ssl.cert_chain.crt
  • 通过openssl s_client -connect host:9200 -showcerts查看证书链信息,应返回0(ok)

注意! 证书链不完整可能导致被浏览器识别为不安全的文件!尽量不要使用自签名证书!可在网上申请免费的SSL证书,部署时将公钥证书和证书链合并成一个crt文件作为certification文件,不懂原理没关系,直接用notepad++将两段密钥放在一起就可以,先证书后证书链。

4.通过postman, dejavu, es-head访问es(可跳过直接看5)

5.部署kibana访问可视化ES查询+分析+管理界面

6.ik中文分词器

  • 自动安装,使用以下命令直接从GitHub安装插件(网速略慢):
./bin/elasticsearch-plugin install http://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
  • 手动安装,下载zip文件到本地,拷贝到./elasticsearch/plugins/ik/目录
  • 进入ik目录,调用unzip elasticsearch-analysis-ik-7.2.0.zip解压

7.pinyin拼音分词器

8.从mysql导入数据到es

  • 注意:导入时设置mapping

9.部署filebeat采集日志

  • 下载后使用dpkg -i filebeat-7.2.0-amd64.deb安装,配置filebeat.yml的输出地址,如果启用监听的程序均使用默认位置安装,可以直接通过filebeat module enable自动启动各个所需模块,无需手动配置输入
  • 使用filebeat setup -e初始化环境
  • 使用service filebeat start开始采集各个日志文件
  • 请谨慎配置elasticsearch.gc和elasticsearch.deprecate模块,数据量爆炸多,请考虑自己的硬盘够不够用

10.部署LogStash

二、手动命令合集:

  • 进入es目录:cd /usr/share/elasticsearch
  • 前台启动es:./bin/elasticsearch
  • 后台启动es:./bin/elasticsearch -d -p pid
  • 手动重启es:
pkill -F pid
bin/elasticsearch -d -p pid
  • 手动启动filebeat:
./bin/filebeat -e \
-c /etc/filebeat/filebeat.yml \
-path.home /usr/share/filebeat \
-path.config /etc/filebeat \
-path.data /var/lib/filebeat \
-path.logs /var/log/filebeat
全部评论

相关推荐

10-11 17:30
湖南大学 C++
我已成为0offer的糕手:羡慕
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务