ELK搭建过程(8.8.2)- zip包 windows本地部署

项目需要,研究了ELK,记录一下

一. 背景: 为解决安全检查合规,以及功能增强,需升级ELK7->8, 故在本地搭建ELK8的服务,验证相关问题。

二. 简介:网上资源很多,

简单的说:ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部

Logstash 用于采集数据,

Elasticsearch 用于存储分析检索数据,

Kibana 用于分析展示数据

除了3个基本套件外:项目中的elk还涉及,

FileBeat 轻量的数据采集, ElastAlert 2 监控报警 (ES也有自己的强大的收费的监控报警)。

关于Beats和Logstash的使用,网上很多资源​编辑ELK架构简述​编辑logstash 和 beats的关系_logstash beats_水的精神的博客-CSDN博客

简单的说,Beats轻量,专注收集; Logstash除了收集,还特别擅长数据转换,格式化等处理工作。

三. 搭建过程:

官网有打好的docker镜像,也有相应的文档,参考 ​编辑Installing the Elastic Stack | Elastic Installation and Upgrade Guide [8.9] | Elastic

这里的步骤适用windows本地部署。

1. 官网下载文件,这里都下的用于windows的zip, 当前版本8.8.2

Elasticsearch (install instructions)

Kibana (install)

Logstash (install)

Beats (install instructions)

ElastAlert2 (​编辑ElastAlert 2 - Automated rule-based alerting for Elasticsearch — ElastAlert 2 0.0.1 documentation )

另外:JDK17+ (这个elasticsearch的zip打包好了所需版本,不自己下的话,可以把相应目录加到“环境变量”)

2. 打开 .\elasticsearch-8.8.2\config\elasticsearch.yml, 调整相应配置

network.host: 127.0.0.1 
http.port: 9200 
http.cors.enabled: true 
http.cors.allow-origin: "*" 
# 启动运行 .\elasticsearch-8.8.2\bin\elasticsearch.bat 脚本即可。

注意:这里刚启动的后,控制台上可以看到user “elastic” 及随机密码,

建议执行重置密码,录入一个方便记忆的密码

.\elasticsearch-reset-password -i -u elastic

用户elastic权限太大,不建议在具体业务中使用,并且其本身在一些配置中受限,另外,内置有kibana_system, logstash_system, kibana_admin, logstash_admin 的用户,专门用于连接相应的套件,

建议参考kibana_system, logstash_system 的角色权限等,创建一个自定义角色,基于该新建的角色创建一个新用户,用于我们的日志系统。(注意,貌似logstash_system没有批量写的权限,导致logstash不能写入数据到elasticsearch, 所以最好新建我们的角色,并赋予批量写的权限, 可能logstash_admin有批量的权限,没有专门测)

创建role和user的工作,可以先使用超级用户elastic, 把 elasticsearch 和 kibana 连接好,然后在kibana的 devTool上,使用API工具创建更方便, 创建好后在返回来修正各个配置文件;

另外:为方便本地搭建,没有启用SSL; 如果想验证下,elasticserach8.X的目录中有自带的证书, 我试过可以用

#批量写的role

"logstash_writer": { "cluster": [], "indices": [ { "names": [ "*" ], "privileges": [ "create_doc", "create", "delete", "index", "write", "all" ], "allow_restricted_indices": false } ], "applications": [], "run_as": [], "metadata": {}, "transient_metadata": { "enabled": true }

3. 打开 .\logstash-8.8.2\config\logstash.conf

(如果没有,请把logstash-sample.conf拷贝一份重命名即可)

input { 
# file { 
#   path => "D:/logs/app.gateway-*.json" 
#   start_position => "beginning" 
#   sincedb_path => "D:/elk/elk_running/logstash-8.8.2/sincedb/file" 
# } 
  beats { 
    port => 5044 
  } 
} 
filter { 
...... 
} 
output { 
  elasticsearch { 
    hosts => ["http://127.0.0.1:9200"] 
    index => "log-app-v2" 
    user => "loguser" 
    password => "xA123456" 
    #ssl => true 
    #ssl_certificate_verification => true 
    #cacert => "D:\\elk\\elk_running\\elasticsearch-8.8.2\\config\\certs\\http_ca.crt" 
} 

# 启动运行 .\logstash-8.8.2\bin\logstash.bat -f .\config\logstash.conf 脚本即可。

4. 打开 .\kibana-8.8.2\config\kibana

server.port: 5601 
server.host: "127.0.0.1" 
elasticsearch.username: "loguser" 
elasticsearch.password: "123456" 

# 启动运行 .\kibana-8.8.2\bin\kibana.bat 脚本即可。

5. 打开 .\filebeat-8.8.2\filebeat.yml

filebeat.inputs: 
- type: filestream 
  enabled: true 
  paths: - D:\logs\app.*-*.json 
output.logstash: 
  hosts: ["localhost:5044"] 

# 启动运行 .\filebeat-8.8.2\filebeat -c filebeat.yml -e 脚本即可。

6. ElastAlert2安装

pip3 install elastalert2 
git clone https://github.com/jertel/elastalert2.git  

$ python3 setup.py install 

## 可能会提示 更新setuptools, 那就执行pip3 install "setuptools>=11.3" 更新一下先

配置文件

## 配置文件目录位于elastalert2/examples/目录下,把config.yaml.sample复制一份成config.yaml 
rules_folder: examples/rules 
run_every: 
  minutes: 1 
buffer_time:
  minutes: 15
es_host: "127.0.0.1" 
es_port: 9200 
es_username: loguser 
es_password: 123456 
writeback_index: elastalert_status

创建监控状态索引,也可以不创建,第一次启动elastalert时会有一个警告,然后它自己就去给创建了;创建成功即可通过kibana查看索引管理,看到创建好的一系列索引 elastalert_status_XXXX;

elastalert-create-index

创建自定义rule: demo_sendgrid.yaml

# 2分钟内超过10的ERROR事件,就报警(向本地http://localhost:8409, post报警数据)
name: 10_error_2_minutes 
type: frequency 
index: mylog-* 
use_strftime_index: true 
num_events: 10 
timeframe: 
  minutes: 2 
filter: 
- query: 
    query_string: 
      query: "Error" 

alert: post2 
http_post2_url: "http://localhost:8409" 
http_post2_payload: | 
  { 
    "message": "there is some error" 
  } 
http_post2_headers: Content-Type: application/json

启动elastalert

python -m elastalert.elastalert --config D:\elk\elk_running\elastalert2\examples\config.yaml --rule D:\elk\elk_running\elastalert2\examples\rules\demo_sendgrid.yaml --verbose

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值