ELKBR部署检测项目日志
ELK
- filebeat:具有日志收集功能,相比logstash,+filebeat更轻量,占用资源更少,适合客户端使用。
- redis消息队列选型:Redis 服务器通常都是用作 NoSQL 数据库,不过这里的 redis 只是用来做消息队列,海量日志建议使用kafka。
- logstash:主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
- elasticsearch:Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- kibana:Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
主机名 | 配置 | 角色 | 软件版本 |
---|---|---|---|
filebeat | 无 | 日志搜集客户端 | https://www.elastic.co/cn/downloads/beats/filebeat |
redis | 2 vCPU 8 GiB | 消息队列 | redis-stable.tar.gz |
logstash | 4 vCPU 16 GiB | 日志搜集 | https://www.elastic.co/cn/downloads/logstash |
elasticsearch | 4 vCPU 16 GiB | 日志搜索引擎 | https://www.elastic.co/cn/downloads/elasticsearch |
kibana | 2 vCPU 4 GiB | 日志数据展示 | https://www.elastic.co/cn/downloads/kibana |
ES激活白金版:https://www.jianshu.com/p/1ff67bb363dd
1 redis部署
上传部署包至/usr/local/src/redis/,依赖安装及环境配置
mkdir -p /usr/local/src/redis/
yum -y install gcc-c++ make tcl
service iptables stop && chkconfig iptables off
echo 511 > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo "echo 511 > /proc/sys/net/core/somaxconn" >> /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf && modprobe bridge && sysctl -p
编译安装redis server
mkdir -p /usr/local/src/redis/{data,log}
cd /usr/local/src/redis && tar -zxvf redis-stable.tar.gz -C . && cd redis-stable && make && make install
(此处可一路回车选择默认配置,配置文件在cat /etc/redis/6379.conf)
./utils/install_server.sh
启动redis
chkconfig redis_6379 on
service redis_6379 start
检查启动后服务是否正常
redis-cli -h 本机IP
**localhost:6379> keys ***
(empty list or set)
localhost:6379> set test abc
OK
localhost:6379> get test
"abc"
localhost:6379> del test
(integer) 1localhost:6379> quit
2 filebeat
上传filebeat包,解压修改配置
mkdir /usr/local/src/filebeat
#上传压缩包
tar -zxvf filebeat-7.3.1-linux-x86_64.tar.gz
cd filebeat-7.3.1-linux-x86_64
vim filebeat.yml
(paths:对应日志位置)
enabled: true
paths:
- /tomcat/apache-tomcat-7.0.72/logs/*.out
multiline.pattern: ^[
multiline.negate: false
multiline.match: after
(tags:变量TEMPLATE_TAG用于部署到对应服务器后批量替换为对应实例名称)
tags: ["192.168.192.10"]
注释掉Elasticsearch相关的配置
----------------------------- Redis output --------------------------------
(key变量为保存到redis中的键名,用于部署到对应服务器后批量替换为对应应用名)
output.redis:
hosts: ["localhost:6379"]
db: 0
timeout: 5
key: "project-name"================================ Global =====================================
filebeat.global:
filebeat.spool_size: 64
filebeat.idle_timeout: 5s
启动
./filebeat -e -c filebeat.yml
查看redis是否已有日志记录
redis-cli -h 本机IP
#查看所有KEY
keys *
#查看日志长度
LLEN project-name
#查看某一行日志
INDEX project-name 1
3 ElasticSearch
下载解压
mkdir /usr/local/src/elasticsearch
#上传压缩包
tar -zxvf elasticsearch-7.3.1-linux-x86_64.tar.gz
在es下创建数据和日志文件夹,修改配置文件
#对应配置里的数据和日志文件目录
mkdir /usr/local/src/elasticsearch/elasticsearch-7.3.1/data
#mkdir /usr/local/src/elasticsearch/elasticsearch-7.3.1/logs
vim config/elasticsearch.yml
cluster.name: my-application
node.name: node-10
path.data: /usr/local/src/elasticsearch/elasticsearch-7.3.1/data
path.logs: /usr/local/src/elasticsearch/elasticsearch-7.3.1/logs
network.host: 本机IP
http.port: 9200
discovery.seed_hosts: ["本机IP"]
cluster.initial_master_nodes: ["node-10"]因为Centos6不支持SecComp加入下面两句
bootstrap.memory_lock: false
bootstrap.system_call_filter: false验证开启(不想要密码就忽略)
xpack.security.enabled: true
xpack.ml.enabled: true
xpack.license.self_generated.type: trial新建elkuser用户(注意不能使用root用户启动es)
#创建用户
useradd elkuser
#修改用户组和用户
cd /usr/local/src/elasticsearch
chown -R elkuser:elkuser elasticsearch-7.3.1
#切换用户
su elkuser
启动
./bin/elasticsearch
设置启动密码
./bin/elasticsearch-setup-passwords interactive --verbose
Trying user password change call http://192.168.192.10:9200/_security/user/apm_system/_password?pretty
{ }Changed password for user [apm_system]
Trying user password change call http://192.168.192.10:9200/_security/user/kibana/_password?pretty
{ }Changed password for user [kibana]
Trying user password change call http://192.168.192.10:9200/_security/user/logstash_system/_password?pretty
{ }Changed password for user [logstash_system]
Trying user password change call http://192.168.192.10:9200/_security/user/beats_system/_password?pretty
{ }Changed password for user [beats_system]
Trying user password change call http://192.168.192.10:9200/_security/user/remote_monitoring_user/_password?pretty
{ }Changed password for user [remote_monitoring_user]
Trying user password change call http://192.168.192.10:9200/_security/user/elastic/_password?pretty
{ }Changed password for user [elastic]
- 登陆 http://192.168.192.10:9200/ 用户名:elastic 密码(刚刚设置的): elkuser
ElasticSearch启动问题:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
切换到root用户,编辑limits.conf添加如下内容(需要重启生效)
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
[2]: max number of threads [3818] for user [es] is too low, increase to at least [4096]
最大线程个数太低。修改配置文件etc/security/limits.conf,增加配置
* soft nproc 4096
* hard nproc 4096
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144
vi /etc/sysctl.conf
sysctl -p
执行命令sysctl -p生效[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
问题原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动
解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
4 Logstash
下载解压
mkdir /usr/local/src/logstash
#上传压缩包
tar -zxvf logstash-7.3.1.tar.gz
创建一个配置文件
vim logstash.conf
input {
redis {
host => "redis所在机器"
data_type => "list"
port => "6379"
key => "project-name"
type => "project-name"
}}
output {
if[type == "project-name"]{
elasticsearch {
hosts => "es所在机器:9200"
user => "elastic"
password => "刚刚es环境设置的密码"
codec => "json"
index => "project-name-%{+YYYY.MM.dd}"
} }
}
启动
bin/logstash -f logstash.conf
5 kibana
下载解压
mkdir /usr/local/src/kibana
#上传压缩包
tar -zxvf kibana-7.3.1-linux-x86_64.tar.gz cd kibana-7.3.1-linux-x86_64
mkdir logs
#进入kibana配置下
cd config
#修改配置文件
vim kibana.yml
server.port: 5601
server.host: "本机IP"
elasticsearch.hosts: ["http://ES服务器IP:9200"]
kibana.index: ".kibana"
elasticsearch.username: "kibana"
elasticsearch.password: "es环境设置的kibana密码"
pid.file: /var/run/kibana.pid
logging.dest: /usr/local/src/kibana/kibana-7.3.1-linux-x86_64/logs/kibana.log
启动(kibana不建议以root用户启动,如果用root启动,需要加--allow-root)
bin/kibana
#bin/kibana --allow-root
(观察配置的日志)
访问5601端口(使用es用户)(以下没有更新,参考使用)
创建日志索引
查看日志量等信息
ELKBR部署检测项目日志的更多相关文章
- 部署java项目日志乱码求解!!!
springboot项项目打成war包放到tomcat9上,项目日志出现乱码,tomcat乱码已解决,这个不知道咋回事!!!!!! 这是项目的打包坐标 <parent> <group ...
- ELK部署检测nginx日志demo
ELK E: ElasticSearch 搜索引擎 存储 https://www.elastic.co/cn/downloads/elasticsearch L: Logstash 日志收集 http ...
- 通过Docker部署Java项目的日志输出到宿主机指定目录
之前写过2篇关于Docker部署的文章: 1.超!超!超简单,Linux安装Docker 2.Docker通过阿里云镜像仓库使用Gitlab_CI部署SpringBoot项目 用上篇博客部署Java程 ...
- 明火烟雾目标检测项目部署(YoloV5+Flask)
明火烟雾目标检测项目部署 目录 明火烟雾目标检测项目部署 1. 拉取Docker PyToch镜像 2. 配置项目环境 2.1 更换软件源 2.2 下载vim 2.3 解决vim中文乱码问题 3. 运 ...
- mac osx 上面部署Django项目 apache+mysql+mod_wsgi
1.安装Xcode command line tools 首先,编译mysql和Homebrew需要用到Xcode command line tools,所以首先安装command line tool ...
- CentOS 6.8 部署django项目一
CentOS 6.8 部署django项目二 1.安装python3.5(默认是2.6) 参考:http://blog.csdn.net/shaobingj126/article/details/50 ...
- redhat7学习笔记之从零到部署javaweb项目
REDHAT7学习笔记 1. 安装vmware10 安装过程略,下载地址:链接: https://pan.baidu.com/s/16odKKkRYBxGWDVo1cz_wxA 注意,10以上版本不在 ...
- 在裸机centos7系统中部署django项目的过程
概要 本文用一台安装了centos7.5系统的裸奔Linux机器(当然是虚拟机)详细讲解从无到有部署django项目的过程. 安装必要的工具 配置yum源 至于什么是yum源大家请自行百度,本人用的是 ...
- tomcat部署java项目
tomcat部署java项目 1.启动tomcat 进入到tomcat安装目录下的bin #cd /opt/tomcat/bin #./startup.sh // 执行重启命令 2.重建一个新目录导入 ...
随机推荐
- 洛谷 P5367 【模板】康托展开(数论,树状数组)
题目链接 https://www.luogu.org/problem/P5367 什么是康托展开 百度百科上是这样说的: “康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩. ...
- JavaScript数据结构——队列的实现与应用
队列与栈不同,它遵从先进先出(FIFO——First In First Out)原则,新添加的元素排在队列的尾部,元素只能从队列头部移除. 我们在前一篇文章中描述了如何用JavaScript来实现栈这 ...
- ZooKeeper实现同步屏障(Barrier)
按照维基百科的解释:同步屏障(Barrier)是并行计算中的一种同步方法.对于一群进程或线程,程序中的一个同步屏障意味着任何线程/进程执行到此后必须等待,直到所有线程/进程都到达此点才可继续执行下文. ...
- CentOS7配置网络ip地址
CentOS7配置网络ip地址 CentOS 7.x版本中没有ifcfg-eth0文件 只有ifcfg-ens33文件(为了符合日常习惯) (1)将文件ifcfg-ens33重命名为ifcfg-eth ...
- shell习题1
1------->>>批量创建用户. $# --- 统计传入参数的数量 $* --- 传入若干个参数 使用id来确认用户是否存在并创建 向$*进行传参,在运行时加上需要添加的 ...
- 记录一则LOCAL_LISTENER的问题
有网友反映,他在一套Oracle的测试环境中配置有两个监听,分别监听不同端口. 目前想把环境上的一套数据库同时注册到这两个监听,他将数据库参数local_listener和tnsname.ora文件配 ...
- HDU 4417
题意略. 思路: 仔细思考这个题目会发现,它其实是要你查询两次,第一是要规定l,r的范围,第二是要在范围内查询小于等于H的个数.所以有的人说要用主席树. 现在,如果我们能省去范围内对h的查询呢?也就是 ...
- [C#] 建立UDP连接、发送广播
说明: 通过建立本地UdpClient与远程UdpClient进行通讯,亦可直接发送到其他已存在的远程端. 基本原理:构建一个本地的udpcSend实例,开启多线程进行监听,然后再发送广播. 案例有字 ...
- MSIL实用指南-返回结果
一个方法体执行完指令后,必须要完成调用并返回,这是要使用Ret指令.Ret指令的详细解释是从当前方法返回,并将返回值(如果存在)从被调用方的计算堆栈推送到调用方的计算堆栈上.就是说如果计算堆栈上没有变 ...
- Python——常用模块(time/datetime, random, os, shutil, json/pickcle, collections, hashlib/hmac, contextlib)
1.time/datetime 这两个模块是与时间相关的模块,Python中通常用三种方式表示时间: #时间戳(timestamp):表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. ...