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 监控报警和权限控制的更多相关文章

  1. 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

    我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证” ...

  2. (转)基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

    http://www.cnblogs.com/wuhuacong/p/3361351.html 我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大 ...

  3. Yii2搭建后台并实现rbac权限控制完整实例教程

    .安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/config/main-local.php 实际 ...

  4. 基于ELK和Python搭建简单的监控告警系统

    Reference: https://www.jianshu.com/p/67e358dc065d 在做完支付系统后,我搭建了两套监控系统. 一套是点评的CAT,主要用于代码级的实时统计和历史统计以及 ...

  5. ELK之Kibana的可视化监控报警插件sentinl的配置

    参考:https://www.bbsmax.com/A/gGdXbgXmJ4/ https://www.deathearth.com/333.html  https://www.cnblogs.com ...

  6. CentOS7.5下搭建的SVN实现删除权限控制和必须进行注释的提示操作

    需求:上传到SVN服务器的项目文件如果被普通用户误删了,虽然能恢复,但是如果删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,会很麻烦,可能还会出现提交代码版本 ...

  7. 项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示

    1 课程计划 1. 常见权限控制方式 2. 基于shiro提供url拦截方式验证权限 3. 在realm中授权 4. 基于shiro提供注解方式验证权限 5. 总结验证权限方式(四种) 6. 用户注销 ...

  8. 从0搭建一个基于 ELK 的日志、指标收集与监控系统

    为了使得私有化部署的系统能更健壮,同时不增加额外的部署运维工作量,本文提出了一种基于 ELK 的开箱即用的日志和指标收集方案. 在当前的项目中,我们已经使用了 Elasticsearch 作为业务的数 ...

  9. CentOS7下搭建zabbix监控(四)——Zabbix报警设置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 CentOS7下搭建zabbix监控(三)——Zabbix ...

随机推荐

  1. linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

  2. php xdebug的配置、调试、跟踪、调优、分析

    xdebug 的 profiler 是一个强大的工具,它能分析 PHP 代码,探测瓶颈,或者通常意义上来说查看哪部分代码运行缓慢以及可以使用速度提升.Xdebug 2 分析器输出一种兼容 cacheg ...

  3. Python多任务—进程

    一.进程以及状态 1.进程 正在运行的应用程序就是一个进程.进程是资源分配的基本单元. Python多进程可以在多核CPU上运行,多进程充分利用了多核的资源. 2. 进程的状态 工作中,任务数往往大于 ...

  4. Qt高仿Excel表格组件-支持冻结列、冻结行、内容自适应和合并单元格

    目录 一.概述 二.效果展示 三.实现思路 1.冻结行.冻结列 2.行高自适应 3.蚂蚁线 四.测试代码 1.添加表格数据 2.设置冻结行.列 3.行高.列宽 4.单元格背景色 5.单元格文字 6.其 ...

  5. 基于注解的SpringAOP源码解析(二)

    在上篇文章 中我们搭建了一个阅读源码的demo工程,然后简单介绍了一下@EnableAspectJAutoProxy注解,这个注解最重要的功能就是为向Spring中注入了一个beanAnnotatio ...

  6. 写给自己的 SOA 和 RPC 理解

    1.SOA SOA(Service-Oriented Architecture)面向服务架构,将应用程序不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来. SOA 不是 ...

  7. node+express修改代码会自动重新运行

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_40822305/artic ...

  8. Unity3D协程(转)

    这篇文章转自:http://blog.csdn.net/huang9012/article/details/38492937 协程介绍 在Unity中,协程(Coroutines)的形式是我最喜欢的功 ...

  9. WorkFlow二:简单的发邮件工作流

    1.使用事物代码SWDD.默认进入如下: 2.点击新建再点击转到抬头. 3.填写基础信息,工作流名称和描述.之后点击保存并返回. 这时候工作流的名字从之前的未命名改变了,工作流ID也根据上篇配置的前序 ...

  10. SpringBoot集成JWT

        JWT(json web tokens)是目前比较流行的跨域认证解决方案:说通俗点就是比较流行的token生成和校验的方案.碰巧公司有个app的项目的token采用了jwt方案,因此记录下后端 ...