ES(EFK)日志分析系统 centos/redhat部署流程
使用的是centos6.5 系统部署 其中大部分内容 centos都适用 chkconfig这块可能有不同的地方 可以用其他方式将服务加入到service中。
下载相关软件的安装文件—— RPM格式 可以到elasitc官网去下载
1. 安装 elasticsearch:
- 使用命令 rpm --install elasticsearch-x.x.x-x86-64.rpm 安装elasticsearch (x替换相应版本号码)
- 使用命令chkconfig --add elasticsearch (加入服务列表 【可利用这个设置自动启动】 )
- 使用 service elaticsearch start 来启动服务 (启动应用)
- 配置YML文件在 /etc/elaticsearch/elaticsearch.yml中
1.1 启用密码:
- 配置文件添加:
xpack.security.enable: true (注意冒号后面有空格)
discovery.type: single-node (根据需要修改 本设置适用于ES和KIBANA在同一台服务器的简单情况)
- 到 /usr/share/elaticsearch/bin目录下 使用命令
./elasticsearch-setup-passwords interactive 开启密码交互设置 设置各个账号的密码
1.2 常用配置:
在 /etc/elaticsearch/elaticsearch.yml中的
1. es的index(可以理解成表)数据及其他数据存储路径 path.data: (注意如果是运行后修改 需要将原来的数据拷贝到新的位置后再运行,否则部分数据会有冲突导致kibana或者自身启动失败)
2. es的自身log存储位置 path.logs:
3.内存设置 在同目录的 jvm.options 其中的 Xms4g 和 Xmx4g 前面的#注释去掉就是设置其内存的方法 具体值调整数据
4. 公网访问 设置 network.host: 0.0.0.0 (设置网域)
2.安装 kibana :
- 使用命令 rpm --install kibana-x.x.x-x86-64.rpm 安装 kibana chkconfig --add kibana加入到service 中
- 配置YML文件在 /etc/kibana/kibana.yml中
2.1设置密码
- 明文方式(安全性低)可以在 /etc/kibana/kibana.yml 里面 直接设置 elasticsearch.username 和 elasticsearch.password的值
- 非明文方式(安全性高)到/usr/share/kibana/bin目录下使用如下三个命令设置kibana访问es的密码
./kibana-keystore create
./kibana-keystore add elasticsearch.username (会出现交互设置)
./kibana-keystore add elasticsearch.password(会出现交互设置)
设置好密后重启kibana就可以了
进入 目标IP:5601/status 来登陆 (启动需要一定时间)
2.3 设置其他用户和用用户 elastic 和密码 登陆 kibana 进入 Stack Management>Security>Users 图形界面操作
3 Filebeat 安装配置
3.1 安装 rpm -vi filebeat-7.9.3-x86_64.rpm 用 chkconfig --add fielbeat 加入到service 中
3.2 配置 filebeat.yml 中的 (这部分是配置filebeat 跟ES主机链接的部分 )
output.elasticsearch:
hosts: ["myEShost:9200"]
username: "filebeat_internal"
password: "YOUR_PASSWORD"
3.2.2 配置KIBANA (ES与 kibana同一台主机时可以省略此部分)
setup.kibana:
host: "mykibanahost:5601"
username: "my_kibana_user" (使用上面的密码 或者自定义)
password: "{pwd}"
3.3 自己配置filebeat模块 收集log的位置及差异化设置
3.3.1.主要配置 filebeat.yml 下的 filebeat.inputs项目
filebeat.inputs:
- type: log
enabled: true (注意这部分默认是false)
paths:
- /var/log/sys*.log 可以同时写多个文件 也可以用通配符多个文件在不同的行写 (详见YAML语法)
- /var/log/wifi.log
下面三个是当log中有部分行是上一个log太长了分行出来的话,可以将多个行的数据合并为一条数据
multiline.pattern: ^\d 判断多行的条件
multiline.negate:true 上一个patten 是多行的否听条件还是确认条件 (现在的配置的意思是 如果以数字开头认为就不是多行(新的一行) 不是数字开头的都认为是一条数据)
multiline.match: after 第一个特征后面的是一条 还是前面的是一条数据
3.3.2 配置filebeat 的ILM(index 的生命周期管理)在配置文件中加入下面四个项目
setup.ilm.enabled: auto (auto兼容 true强制)
setup.ilm.rollover_alias: 'demoname' (设置一个别名 不同于pattern 用来写数据的)
setup.ilm.pattern: "{now/d}-000001" (这里是用日期的天数 加一个数字 数字不能少 不然无法滚动创建 默认就是001这个就行)
setup.ilm.policy_name: "save_4_days_max_4gb" (在kibana中创建的 Index Lifecycle Policies的名字 用来控制什么条件新建新的index 什么条件删除index )
3.4. 启用配置 filebeat setup -e
3.5. 启动服务 sudo service filebeat start
总结 部署ES日志收集系统时候,elastic 和 kibana 端配置相对固定,注意存储空间和内存配置需要给够,不然运行时候经常崩掉(累积数据多时候尤其明显)
filebeat部分就是配置相对麻烦,注意enable: true这块 使用 ILM管理index相对方便很多,建议使用这个方法给自己的index命名而不是用indexpatter和template的模式。
: