常德网站建设费用,免费建自己的网站赚钱,网站换模板对seo,网页设计培训机构哪家好一些目录
一、日志管理方案
二、完整日志系统基本特征
三、ELK 简介
ELK组件#xff1a;
1、ElasticSearch
2、Logstash
3、Kibana 可以添加的其它组件#xff1a; 1、Filebeat
2、缓存/消息队列#xff08;redis、kafka、RabbitMQ等#xff09;
3、Fluentd
三、ELK …目录
一、日志管理方案
二、完整日志系统基本特征
三、ELK 简介
ELK组件
1、ElasticSearch
2、Logstash
3、Kibana 可以添加的其它组件 1、Filebeat
2、缓存/消息队列redis、kafka、RabbitMQ等
3、Fluentd
三、ELK 的工作原理
四、ELK部署
1、Elasticsearch部署 ①关闭防火墙和安全机制 ②设置Java环境
③安装elasticsearch—rpm包
④修改elasticsearch主配置文件
⑤es 性能调优参数
⑥启动elasticsearch是否成功开启
⑦查看节点信息
2、安装 Elasticsearch-head 插件
①编译安装 node
②安装 phantomjs
③安装 Elasticsearch-head 数据可视化工具
④修改 Elasticsearch 主配置文件
⑤启动 elasticsearch-head 服务
⑥通过 Elasticsearch-head 查看 Elasticsearch 信息
⑦插入索引
3、 ELK Logstash 部署在 Nginx 节点上操作
①关闭防火墙和安全机制
②更改主机名
③设置Java环境
④安装nginx服务
⑤安装logstash
⑥测试 Logstash
⑦定义 logstash配置文件读取nginx日志
4、ELK Kiabana 部署 Kiabana
①安装 Kiabana
②设置 Kibana 的主配置文件
③创建索引 一、日志管理方案
1、服务器数量较少时
可以直接登录到目标主机查看日志通过rsyslog工具或编写shell、python脚本实现日志收集并集中保存到统一的日志服务器
2、服务区数量较多时
使用ELK大型日志系统实现日志收集、存储、检索和分析
3、容器环境
使用ELK或LokiGranfana
二、完整日志系统基本特征
收集能够采集多种来源的日志数据 传输能够稳定的把日志数据解析过滤并传输到存储系统 存储存储日志数据 分析支持UI分析 警告能够提供错误报告监控机制
三、ELK 简介
ELK平台是一套完整的日志集中处理解决方案将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用 完成更强大的用户对日志的查询、排序、统计需求。
ELK组件
1、ElasticSearch
是基于Lucene一个全文检索引擎的架构开发的分布式存储检索数据库引擎用来存储各类日志并创建索引方便全文检索。集群化部署节点分三种类型master/data/client设置相同的cluster.name并使用Zen Discovery模块通过单播实现集群中节点的服务发现。
2、Logstash
作为数据收集引擎。它支持动态的从各种数据源搜集数据并对数据进行过滤、分析、丰富、统一格式等操作然后存储到用户指定的位置一般会发送给 Elasticsearch。
Logstash 由 Ruby 语言编写运行在 Java 虚拟机JVM上是一款强大的数据处理工具 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能常用于日志处理。
3、Kibana Kibana 通常与 Elasticsearch 一起部署Kibana 是 Elasticsearch 的一个功能强大的数据可视化 DashboardKibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据可以用来汇总、分析和搜索重要数据。 可以添加的其它组件 1、Filebeat
轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat并指定目录与日志格式Filebeat 就能快速收集数据并发送给 logstash 进行解析或是直接发给 Elasticsearch 存储性能上相比运行于 JVM 上的 logstash 优势明显是对它的替代。常应用于 EFLK 架构当中 filebeat 结合 logstash 带来好处 1通过 Logstash 具有基于磁盘的自适应缓冲系统该系统将吸收传入的吞吐量从而减轻 Elasticsearch 持续写入数据的压力 2从其他数据源例如数据库S3对象存储或消息传递队列中提取 3将数据发送到多个目的地例如S3HDFSHadoop分布式文件系统或写入文件 4使用条件数据流逻辑组成更复杂的处理管道 2、缓存/消息队列redis、kafka、RabbitMQ等
可以对高并发日志数据进行流量削峰和缓冲这样的缓冲可以一定程度的保护数据不丢失还可以对整个架构进行应用解耦
3、Fluentd
是一个流行的开源数据收集器。由于 logstash 太重量级的缺点Logstash 性能低、资源消耗比较多等问题随后就有 Fluentd 的出现。相比较 logstashFluentd 更易用、资源消耗更少、性能更高在数据处理上更高效可靠受到企业欢迎成为 logstash 的一种替代方案常应用于 EFK 架构当中。在 Kubernetes 集群中也常使用 EFK 作为日志数据收集的方案。
在 Kubernetes 集群中一般是通过 DaemonSet 来运行 Fluentd以便它在每个 Kubernetes 工作节点上都可以运行一个 Pod。 它通过获取容器日志文件、过滤和转换日志数据然后将数据传递到 Elasticsearch 集群在该集群中对其进行索引和存储。
三、ELK 的工作原理
1在所有需要收集日志的服务器上部署Logstash或者先将日志进行集中化管理在日志服务器上在日志服务器上部署 Logstash。
2Logstash 收集日志将日志格式化并输出到 Elasticsearch 群集中。
3Elasticsearch 对格式化后的数据进行索引和存储。
4Kibana 从 ES 群集中查询数据生成图表并进行前端数据的展示。 总结logstash作为日志搜集器从数据源采集数据并对数据进行过滤格式化处理然后交由Elasticsearch存储kibana对日志进行可视化处理。 四、ELK部署
1、Elasticsearch部署 ①关闭防火墙和安全机制 systemctl disable --now firewalld setenforce 0 ②设置Java环境 tar xf jdk-8u361-linux-x64.tar.gz mv jdk1.8.0_361/ /usr/local/
vim /etc/profile.d/java.sh source /etc/profile.d/java.sh
java -version
③安装elasticsearch—rpm包
上传elasticsearch-6.7.2.rpm到/opt目录下
使用命令rpm -ivh elasticsearch-6.7.2.rpm或yum localinstall elasticsearch-6.7.2.rpm进行安装
④修改elasticsearch主配置文件
vim /etc/elasticsearch/elasticsearch.yml scp /etc/elasticsearch/elasticsearch.yml 192.168.130.20:pwd scp /etc/elasticsearch/elasticsearch.yml 192.168.130.30:pwd
⑤es 性能调优参数
优化最大内存大小和最大文件描述符的数量
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 优化elasticsearch用户拥有的内存权限
vim /etc/sysctl.conf 在ES内存设置方面可以遵循以下原则 1.当机器内存小于64G时遵循通用的原则50%给ES50%留给操作系统供lucene使用 2.当机器内存大于64G时遵循原则建议分配给ES分配 4~32G 的内存即可其它内存留给操作系统供lucene使用 一个进程可以拥有的最大内存映射区域数参考数据分配 2g/2621444g/41943048g/8388608 sysctl -p 需重启系统生效配置
reboot
⑥启动elasticsearch是否成功开启
systemctl enable --now elasticsearch.service ⑦查看节点信息
浏览器访问 http://192.168.130.10:9200 、 http://192.168.130.20:9200、 http://192.168.130.30:9200 查看节点 Node01、Node02 、Node03的信息 2、安装 Elasticsearch-head 插件
Elasticsearch 在 5.0 版本后Elasticsearch-head 插件需要作为独立服务进行安装需要使用npm工具NodeJS的包管理工具安装。
作用在web界面实现图形化查看es集群状态可以在任意一个es节点安装 安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。 node是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 phantomjs是一个基于 webkit 的JavaScriptAPI可以理解为一个隐形的浏览器任何基于 webkit 浏览器做的事情它都可以做到。 ①编译安装 node
上传软件包 node-v8.2.1.tar.gz 到/opt yum install gcc gcc-c make -y tar zxvf node-v8.2.1.tar.gz cd node-v8.2.1/ ./configure make -j2 make install ②安装 phantomjs
上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt 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 ③安装 Elasticsearch-head 数据可视化工具
上传软件包 elasticsearch-head-master.zip 到/opt cd /opt unzip elasticsearch-head-master.zip cd /opt/elasticsearch-head/ npm install #安装依赖包 ④修改 Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml 在末尾添加 http.cors.enabled: true http.cors.allow-origin: * systemctl restart elasticsearch
⑤启动 elasticsearch-head 服务
必须在解压后的 elasticsearch-head 目录下启动服务进程会读取该目录下的 gruntfile.js 文件否则可能启动失败
cd /opt/elasticsearch-head-master/
npm run start ⑥通过 Elasticsearch-head 查看 Elasticsearch 信息
浏览器访问 http://192.168.130.30:9100/ ⑦插入索引
通过命令插入一个测试索引 命令格式 创建索引 curl -X PUT[|POST] http://IP:9200/索引名[/类型/文档ID?prettypretty] \ [-H content-Type: application/json -d {键名1:键值,键名2:键值}] 删除索引 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:索引别名}}]} 3、 ELK Logstash 部署在 Nginx 节点上操作
Logstash 一般部署在需要监控其日志的服务器。在本案例中Logstash 部署在 nginx 服务器上用于收集 nginx 服务器的日志信息并发送到 Elasticsearch。
①关闭防火墙和安全机制 systemctl disable --now firewalld setenforce 0
②更改主机名
hostnamectl set-hostname nginx
③设置Java环境 tar xf jdk-8u361-linux-x64.tar.gz mv jdk1.8.0_361/ /usr/local/
vim /etc/profile.d/java.sh export JAVA_HOME/usr/local/jdk1.8.0_361 export JRE_HOME$JAVA_HOME/jre export CLASSPATH.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH$JAVA_HOME/bin:$JRE_HOME/bin:$PATH source /etc/profile.d/java.sh
java -version
④安装nginx服务
yum -y install epel-release.noarch
yum -y install nginx
systemctl enable --now nginx
⑤安装logstash
上传软件包 logstash-6.7.2.rpm 到/opt目录下 cd /opt rpm -ivh logstash-6.7.2.rpm systemctl enable --now logstash.service ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ ⑥测试 Logstash Logstash 命令常用选项 -f通过这个选项可以指定 Logstash 的配置文件根据配置文件配置 Logstash 的输入和输出流。 -e从命令行中获取输入、输出后面跟着字符串该字符串可以被当作 Logstash 的配置如果是空则默认使用 stdin 作为输入stdout 作为输出。 -t测试配置文件是否正确然后退出。 -w指定filter线程数量默认线程数是5 -l指定日志文件名称 logstash -e input { stdin{} } output { stdout{} } logstash -e input { stdin{} } output { elasticsearch { hosts[192.168.130.10:9200] } } ⑦定义 logstash配置文件读取nginx日志 Logstash 配置文件基本由三部分组成input、output 以及 filter可选根据需要选择使用 ●input表示从数据源采集数据常见的数据源如Kafka、日志文件等 file beats kafka redis stdin ●filter表示数据处理层包括对数据进行格式化处理、数据类型转换、数据过滤等支持正则表达式 grok 对若干个大文本字段进行再分割成一些小字段 (?字段名正则表达式) 字段名: 正则表达式匹配到的内容 date 对数据中的时间格式进行统一和格式化 mutate 对一些无用的字段进行剔除或增加字段 mutiline 对多行数据进行统一编排多行合并或拆分 ●output表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。 elasticsearch stdout vim /etc/logstash/conf.d/nginx.conf
input{file {path /var/log/nginx/access.logtype nginx_accessstart_position beginningsincedb_path /etc/logstash/sincedb_path/log_progressadd_field { log_hostname ${HOSTNAME} }}file {path /var/log/nginx/error.logtype nginx_errorstart_position beginningsincedb_path /etc/logstash/sincedb_path/log_progressadd_field { log_hostname ${HOSTNAME} }}
}#filter{}output{if [type] nginx_access {elasticsearch{hosts [192.168.130.10:9200,192.168.130.20:9200,192.168.130.30:9200]index nginx_access-%{yyyy.MM.dd}}}if [type] nginx_error {elasticsearch{hosts [192.168.130.10:9200,192.168.130.20:9200,192.168.130.30:9200]index nginx_error-%{yyyy.MM.dd}}}
}logstash -f nginx.conf #启动logstash 4、ELK Kiabana 部署 Kiabana
Kiabana可以安装在任一节点
①安装 Kiabana
上传软件包 kibana-6.7.2-x86_64.rpm 到/opt目录 cd /opt rpm -ivh kibana-6.7.2-x86_64.rpm ②设置 Kibana 的主配置文件
vim /etc/kibana/kibana.yml touch /var/log/kibana.log
chown kibana. /var/log/kibana.log
systemctl enable --now kibana.service ③创建索引
浏览器访问 http://192.168.130.30:5601