1.直接登录到目标服务器,捞日志查看
2.如果目标服务器宕机,通过rsyslog或shell/python等脚本实现日志收集,并集中保存到统一的日志服务器
使用ELK或EFK大型的日志系统,实现日志收集、日志存储、日志检索和分析
EFK Loki+Granfana
收集: 能够采集多种来源的日志数据 传输:能够稳定的把日志数据解析过滤并传输到存储系统 存储:存储日志数据 分析:支持 UI 分析 瞥雀:能够提供错误报告,监控机制
是存储检索引擎,负责存储日志数据
部署在日志收集目标主机上,作为数据收集引擎,负责动态收集日志数据,并对日志数据进行过滤、分析、丰富、统一格式化等操作,然后发给ES存储数据
是一个数据可视化Dashboard,提供图形化Web界面来浏览ES中存储的日志数据,可以用来汇总、分析和搜索重要数据。
日志数据收集可以使用filebeat组件去收集
替代logstash采集日志数据
替代logstash采集日志数据和过滤转换等功能,用于k8s容器环境
作为MQ消息队列,实现流量削峰、缓冲
(在Node1、Node2、Node3节点上操作)
#设置Java环境
?
java -version #如果没有安装,yum -y install java
安装elasticsearch—rpm包
上传elasticsearch-6.7.2.rpm到/opt目录下
cd /opt
rpm -ivh elasticsearch-6.7.2.rpm
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2,node3节点为node3
node.name: node1
node.master: true #是否master节点,false为否
node.data: true #是否数据节点,false为否
--33--取消注释,指定数据存放路径
path.data: /var/lib/elasticsearch
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch
--43--取消注释,避免es使用swap交换分区
bootstrap.memory_lock: true
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200 #指定es集群提供外部访问的接口
transport.tcp.port: 9300 #指定es集群内部通信接口
--68--取消注释,集群发现通过单播实现,指定要发现的节点
discovery.zen.ping.unicast.hosts: ["192.168.116.16:9300", "192.168.116.17:9300","192.168.116.18:9300"]
?
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
?
#优化最大内存大小和最大文件描述符的数量
vim /etc/security/limits.conf
......
* soft ? nofile ? ? ? ? 65536
* hard ? nofile ? ? ? ? 65536
* soft ? nproc ? ? ? ? ? 32000
* hard ? nproc ? ? ? ? ? 32000
* soft ? memlock ? ? ? ? unlimited
* hard ? memlock ? ? ? ? unlimited
?
vim /etc/systemd/system.conf
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
?
需重启生效
1.当机器内存小于64G时,遵循通用的原则,50%给ES,50%留给操作系统,供lucene使用
2.当机器内存大于64G时,遵循原则:建议分配给ES分配 4~32G 的内存即可,其它内存留给操作系统,供lucene使用
?
vim /etc/sysctl.conf
#一个进程可以拥有的最大内存映射区域数,参考数据(分配 2g/262144,4g/4194304,8g/8388608)
vm.max_map_count=262144
?
sysctl -p
sysctl -a | grep vm.max_map_count
systemctl start elasticsearch.service
systemctl enable elasticsearch.service
netstat -antp | grep 9200
浏览器访问 http://192.168.116.16:9200 、 http://192.168.116.17:9200 查看节点 Node1、Node2 的信息。
?
浏览器访问 http://192.168.116.16:9200/_cluster/health?pretty 、 http://192.168.116.17:9200/_cluster/health?pretty查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行。
?
浏览器访问 http://192.168.116.16:9200/_cluster/state?pretty 检查群集状态信息。
?
使用上述方式查看群集的状态对用户并不友好,可以通过安装 Elasticsearch-head 插件,可以更方便地管理群集。
?
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。 安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。 node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
1)编译安装 node
#上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y
?
cd /opt
tar zxvf node-v8.2.1.tar.gz
?
cd node-v8.2.1/
./configure
make -j 4&& make install
2)安装 phantomjs
#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd /opt/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
(3)安装 Elasticsearch-head 数据可视化工具
#上传软件包 elasticsearch-head-master.zip 到/opt
cd /opt
unzip elasticsearch-head-master.zip
cd /opt/elasticsearch-head/
npm install //安装依赖包
(4)修改 Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
......
--末尾添加以下内容--
http.cors.enabled: true #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*" #指定跨域访问允许的域名地址为所有
?
systemctl restart elasticsearch
5)启动 elasticsearch-head 服务
#必须在解压后的/opt/elasticsearch-head-master 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /opt/elasticsearch-head-master
npm run start &
?
?
#elasticsearch-head 监听的端口是 9100
netstat -natp |grep 9100
6)通过 Elasticsearch-head 查看 Elasticsearch 信息
通过浏览器访问 http://192.168.116.16:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。
(7)插入索引
#通过命令插入一个测试索引,索引为 index-demo,类型为 test。
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
?
浏览器访问 http://192.168.116.16:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。
点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。
curl -X PUT或者POST http://IP:9200/<索引名>[/<类型>/<文档ID>?prelly&prelly] [-H 'content-Type: application/json' -d '{"键名1":"键值","键名2":"键值"}'(指定内容格式为json格式)]
curl -X DELETE http://IP:9200/<索引名>[<索引名2>,……]
curl -X GET http://IP:9200/<索引名>/_settings
curl -X PUT http://IP:9200/<索引名>/_settings \
-H 'content-Type: application/json' -d ["键名":"键值”]'
curl -X POST http://Ip:9200/ aliases \
-H 'content-Type: application/json' -d '{"actions":[{"add":("index":"索引名","alias":"索引别名"}}]}'
curl -X PoST http://Ip:9200/ aliases \
-H 'content-Type: application/json' -d '{"actions":[{"remove":{"index":"索引名","alias":"索引别名"}}]}'
(在 nginx 节点上操作)
hostnamectl set-hostname nginx
?
systemctl stop firewalld.service
setenforce 0
cd /usr/share/nginx/html/
echo '<h1>wx like dsb!</h1>' > wxdsb.html
#上传软件包 logstash-6.7.2.rpm 到/opt目录下
cd /opt
rpm -ivh logstash-6.7.2.rpm ? ? ? ? ? ? ? ? ? ? ? ? ?
systemctl start logstash.service
systemctl enable logstash.service
?
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
#格式如下:
input {...}
filter {...}
output {...}
mkdir /etc/logstash/sincedb_path/
?
cd /etc/logstash/sincedb_path/
touch log_progress
chown logstash. log_progress
cd ..
cd conf.d/
systemctl stop logstash.service
vim syslog.conf
?
input {
? file{
? ? ? path =>"/var/log/messages"
? ? ? type =>"syslog"
? ? ? start_position =>"beginning"
? ? ? sincedb_path => "/etc/logstash/sincedb_path/log_progress"
? ? ? add_field => {"log_hostname"=>"${HOSTNAME}"}
? }
}
?
?
#filter {}
?
?
output {
elasticsearch {
? ? hosts => ["192.168.116.116.16:9200"]
? ? index => "syslog-%{+yyyy.MM.dd}"
}
}
?
?
logstash -f system.conf
#上传软件包 kibana-6.7.2-x86_64.rpm 到/opt目录
cd /opt
rpm -ivh kibana-6.7.2-x86_64.rpm
vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--28--取消注释,配置es服务器的ip,如果是集群则配置该集群中master节点的ip
elasticsearch.url: ["http://192.168.80.10:9200","http://192.168.116.16:9200"]
--37--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"
--96--取消注释,配置kibana的日志文件路径(需手动创建),不然默认是messages里记录日志
logging.dest: /var/log/kibana.log
--113--取消注释,把中文模式打开
i18n.locale: "zh-CN"
cd /var/log
touch /var/log/kibana.log
chown kibana. kibana.log
?
systemctl start kibana.service
systemctl enable kibana.service
?
netstat -natp | grep 5601
浏览器访问 http://192.168.116.16:5601
?
可视化界面,可以通过kibana直接管理操作
?