基于ELK 7.50搭建elastalert 监控报警和权限控制
ELK+监控报警全步骤
需求: 公司要求对出在windows服务器上的日志进行日志分析并根据关键字进行报警,并配置kibana权限控制。下面为详细步骤
环境: centos 7.6 elk版本7.50 (因为7.50版本自带xpack功能,可以满足kibana角色权限控制)
1. windows字符集改成utf8
#创建目录(有就不用创建)
C:\WINDOWS\SHELLNEW
#创建一个文本文档(txt) 复制到该目录:
#命名为:UTF8.txt
#文件 -> 另存为…
#选择编码格式为:UTF-8
WIN + R ->regedit
#按以下路径找到ShellNew项:
HKEY_CLASSES_ROOT\.txt\ShellNew
#新建 -> 字符串
#命名为:FileName
#双击 FileName这项,输入:UTF8.txt
#按以下路径找到Notepad项:HKEY_CURRENT_USER\Software\Microsoft\Notepad
#更改以下两项值为:1(如果不存在,自行创建:右键 -> 新建 -> DWORD)
fSavePageSettings
fSaveWindowPositions
2. 下载安装包并安装
1.1 filebeat
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-windows-x86_64.zip
#下载安装包,并解压至c:\filebeat
#进入c:\filebeat 修改配置文件filebeat.yml
############################################
filebeat.inputs:
- type: log
enabled: true
paths:
- c:\work\*
# include_lines: ['Errors']
tags: "ca"
- type: log
enabled: true
paths:
- d:\work\*
# json.keys_under_root: true #如果日志文件本来就是json格式,需要下面2行参数
# json.overwrite_keys: true
tags: "json"
output.redis:
hosts: ["192.168.2.23:6379"]
key: "all"
setup.template.name: "nginx"
setup.template.pattern: "nginx_*"
setup.template.enabled: false
setup.template.overwrite: true
############################################
#启动powershell--> 以管理员身份运行
PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1 #这是以windows服务形式启动
cd c:\filebeat
.\filebeat.exe -e -c filebeat.yml #这是以cmd形式启动,可以改成bat文件进行运行
#这边因为filebeat拉取数据直接给的redis,所以不需要配置elasticsearch的账号密码
1.2. redis
#安装redis
yum install -y redis
#修改配置文件
vim /etc/redis.conf
daemonize yes
bind 192.168.2.23
port 6379
#启动redis
systemctl start redis
netstat -ltnp |grep 6379
#测试登录
redis-cli -h 192.168.2.23
192.168.2.23:6379>
1.3 jdk
#下载jdk 8 为其他服务提供支持
wget https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.rpm
#安装jdk
rpm -ivh jdk-8u231-linux-x64.rpm
1.4. elasticsearch
# 安装es 7.5 需要安装openjdk 11(es 7.0以上对jdk版本要求升高了)
#下载安装包
wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz
#将安装包解压到/opt下
tar xf openjdk-11.0.1_linux-x64_bin.tar.gz -C /opt/
#修改配置文件
cd /usr/share/elasticsearch/bin
vi elasticsearch
添加以下下几行内容
#在后面句子后面添加
# ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch
#配置自己的jdk11,但是并不影响整个系统的jdk环境变量,共存
export JAVA_HOME=/opt/jdk-11.0.1
export PATH=$JAVA_HOME/bin:$PATH
------------------
#在后面句子前面添加# manual parsing to find out, if process should be detached
#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/opt/jdk-11.0.1/bin/java"
else
JAVA=`which java`
fi
# 修改JDK11支持的垃圾回收器
vim /etc/elasticsearch/jvm.options
#-XX:+UseConcMarkSweepGC #注释这个
-XX:+UseG1GC #添加这个
#修改启动配置
systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity
systemctl daemon-reload
systemctl restart elasticsearch
# 修改配置文件
grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"] #将注释取消,修改为这个
discovery.type: single-node #或者是添加这个参数,意思是单节模式
#启动elasticsearch
systemctl start elasticsearch
########################
#如果启动失败,可以换成./elasticsearch 启动,但是这边是有坑的,不能使用root用户启动
#把elasticsearch用户改成普通可登陆用户(删除,重新创建)
#要把相关的文件chown 改成 elasticsearch
#把启动文件加入到bin/elasticsearch中
#[Service]里面添加下面三行
LimitMEMLOCK=infinity
systemctl daemon-reload
systemctl restart elasticsearch
#配置elasticsearch.yml 文件下面修改为
xpack.security.enabled: true
discovery.type: single-node
node.max_local_storage_nodes: 2
#启动 elasticsearch
screen -S elasticsearch
cd /usr/share/elasticsearch/bin/
./elasticsearch
ctrl +a +d
#验证是否启动
netstat -ltnp |grep 9200
=========================
#在web中验证是否启动成功,需要安装es-head
#修改ES配置文件支持跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
#方法1(通用)
# 使用docker安装 es-head
yum install docker -y
#下载es-head
docker pull alivv/elasticsearch-head
#docker运行镜像
docker run --name es-head -p 9100:9100 -dit elivv/elasticsearch-head
#方法2 (通用)
#安装各种依赖包
yum install nodejs npm openssl screen -y
#安装node和npm
node -v
npm -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
cd /opt/
#拉取git代码
git clone git://github.com/mobz/elasticsearch-head.git
#安装cnpm
cd elasticsearch-head/
cnpm install
#启动es-head
screen -S es-head
cnpm run start
Ctrl+A+D
#方法3 (仅适用于Google浏览器)
#右上角 --》 更多工具--》扩展程序
#下载下来ElasticSearch Head0.1.4
#将下载下来的包改成es-head-0.1.4_0.crx
1.5 开启xpack功能
#因为我们要实现kibana权限控制功能,那么第一步是要给es设置安全密码
vim /etc/elasticsearch/elasticsearch.yml
#开启自带的xpack的验证功能,在6.8版本以后,已经是自带xpack功能了,不需要花钱了
xpack.security.enabled: true
#配置单节点模式
discovery.type: single-node #开启这个要关闭cluster那个选项
#执行程序
cd /usr/share/elasticsearch/bin
./elasticsearch-setup-passwords interactive #输入y 输入密码,最少6位
#记住各自系统服务的账号和密码
#记住elasticsearch的账号和密码,因为在logstash、elastalert、kibana中都需要配置elasticsearch账号和密码
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
#重启es
#登录es,发现已经需要输入账号密码了
1.6. logstash
#下载logstash安装包
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.rpm
#安装logstash
rpm -ivh logstash-7.5.0.rpm
#修改配置文件
vim /etc/logstash/conf.d/redis.conf
input {
redis {
host => "192.168.2.23"
port => "6379"
db => "0"
key => "all"
data_type => "list"
}
}
#filter {
# mutate {
# convert => ["upstream_time", "float"]
# convert => ["request_time", "float"]
# }
#if "ca" in [message]{
# grok {
# match => { "message" => "%{TIMESTAMP_ISO8601:DATE_time}\s*%{USER:server_name}\S+\s*%{INT:level}\,(?<SNO>(.*))\,(?<excute_time>(.*))\;\s\S+%{GREEDYDATA:message_value}"
# }
# }
# }
#}
filter {
if "ca" in [tags]{
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:DATE_time}\s*%{USER:server_name}\S+\s*%{INT:level}\,(?<SNO>(.*))\,(?<excute_time>(.*))\;\s\S+%{GREEDYDATA:message_value}" }
}
}
if "json" in [tags]{
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:DATE_time}\s*\S+\<(?<MODULE>(.*))\>\s\S+\:\<(?<lv_num>(.*))\,(?<lv_SNO>(.*))\>\s\S+%{GREEDYDATA:message_value}" }
}
}
}
output {
stdout {}
if "ca" in [tags] {
elasticsearch {
hosts => "http://192.168.2.23:9200"
manage_template => false
index => "ca-%{+yyyy.MM}"
user => "elastic"
password => "123456"
}
}
if "json" in [tags] {
elasticsearch {
hosts => "http://192.168.2.23:9200"
manage_template => false
index => "km-%{+yyyy.MM}"
user => "elastic"
password => "123456"
}
}
#if "rrors" in [message] { #mail插件,可以用来报警发邮件
#email {
# port => "25"
# address => "smtp.qq.com"
# username => "xxxxxxx1@qq.com"
# password => "xxxxxxxxxxxxxxxxxxxxxx"
# authentication => "plain"
# use_tls => false
# from => "xxxxxxxx@qq.com"
# subject => "日志中有error信息"
# to => "xxxxxxxxxxxx@126.com"
# via => "smtp"
# body => "错误日志: \n %{message} "
# }
#}
}
#安装screen后台运行程序
yum install screen -y
#创建一个logstash的后台程序
screen -S logstash
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf
#退出screen后台程序
ctrl + a + d
#查看screen后台程序
screen -ls
#进入指定的后台
screen -r scrren.id
1.6.1 将kibana的收集时间替换为系统日志时间
那如何解决上诉问题呢?请看下面
基于ELK 7.50搭建elastalert 监控报警和权限控制的更多相关文章
- 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制
我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证” ...
- (转)基于MVC4+EasyUI的Web开发框架形成之旅--权限控制
http://www.cnblogs.com/wuhuacong/p/3361351.html 我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大 ...
- Yii2搭建后台并实现rbac权限控制完整实例教程
.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/config/main-local.php 实际 ...
- 基于ELK和Python搭建简单的监控告警系统
Reference: https://www.jianshu.com/p/67e358dc065d 在做完支付系统后,我搭建了两套监控系统. 一套是点评的CAT,主要用于代码级的实时统计和历史统计以及 ...
- ELK之Kibana的可视化监控报警插件sentinl的配置
参考:https://www.bbsmax.com/A/gGdXbgXmJ4/ https://www.deathearth.com/333.html https://www.cnblogs.com ...
- CentOS7.5下搭建的SVN实现删除权限控制和必须进行注释的提示操作
需求:上传到SVN服务器的项目文件如果被普通用户误删了,虽然能恢复,但是如果删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,会很麻烦,可能还会出现提交代码版本 ...
- 项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示
1 课程计划 1. 常见权限控制方式 2. 基于shiro提供url拦截方式验证权限 3. 在realm中授权 4. 基于shiro提供注解方式验证权限 5. 总结验证权限方式(四种) 6. 用户注销 ...
- 从0搭建一个基于 ELK 的日志、指标收集与监控系统
为了使得私有化部署的系统能更健壮,同时不增加额外的部署运维工作量,本文提出了一种基于 ELK 的开箱即用的日志和指标收集方案. 在当前的项目中,我们已经使用了 Elasticsearch 作为业务的数 ...
- CentOS7下搭建zabbix监控(四)——Zabbix报警设置
CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 CentOS7下搭建zabbix监控(三)——Zabbix ...
随机推荐
- 使用order by和group by的分析
mysql 写sql的顺序: select -> from-> where->group by->having->order by. 但mysql的解析 ...
- python类的构造函数
最新的 Python3.7 中(2018.07.13),对类的构造函数进行了精简. from dataclasses import dataclass @dataclass class A: x:in ...
- VirtualBox安装Ubuntu-18.04-Server笔记
准备 安装'Windows Terminal' 安装WSL 安装VirtualBox 安装 虚拟磁盘映像文件选择创建在SSD(如果有) 选择openssh,公钥从GitHub获取,前提是GitHub已 ...
- C 语言实现回调函数
优点 不需要改变调用的主函数,只需添加命令和相应函数. #include "stdio.h" #include "stdlib.h" #include &quo ...
- Wordpress 设置中文语言包
从官方安装的是英文版的,想要切换成中文语言包 1.修改项目目录下面的wp-config文件: 添加define(‘WPLANG’, ‘zh_CN’); 保存文件 2.进入站点控制板(dashboard ...
- Nginx 核心配置-location的匹配案例实战篇
Nginx 核心配置-location的匹配案例实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.location语法规则介绍 在没有使用正则表达式的时候,nginx会先在 ...
- 如何使用和关闭onbeforeunload 默认的浏览器弹窗事件
Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过 window.onunload来指定或者在<body>里指定.区别在于o ...
- nginx上传大文件,413错误解决
在nginx里增加了配置. client_max_body_size 500m; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_se ...
- 题解:洛谷P1891 疯狂LCM
原题链接 题目描述 描述: 众所周知,czmppppp是数学大神犇.一天,他给众蒟蒻们出了一道数论题,蒟蒻们都惊呆了... 给定正整数N,求LCM(1,N)+LCM(2,N)+...+LCM(N,N) ...
- excel隔行选中内容如何操作
查看log日志是站长经常要做的事,从日志中可以发现很多问题,spider最近有没来爬,爬了哪些url,哪些页面不存在了等等,这些都可以看得到.然后你要根据不同的情况采取相应的措施.ytkah喜欢把这些 ...