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查询+分析+管理界面
- 下载v7.2.0 Debian安装包(必须与Elasticsearch版本相同)
- 下载地址:https://www.elastic.co/downlo...
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