2023年7月17日发(作者:)
Linux运维番外篇⾼效且清晰的⽇志分析系统--ELK⽇志系统⽂章⽬录⼀、ELK⽇志分析系统的概念组成elk系统由三部分组成Elasticsearch:提供了⼀个分布式多⽤户能⼒的全⽂搜索引擎Logstash:⼀款强⼤的数据处理⼯具Kibana:针对Elasticsearch的开源分析及可视化平台优缺点优点提⾼安全性集中化管理缺点⽇志分析困难⽇志的处理过程将⽇志进⾏集中化管理(beats)其中包含四个服务Packetbeat(搜集⽹络流量数据)Topbeat(搜集系统、进程和⽂件系统级别的CPU和内存使⽤情况等数据)Filebeat(搜集⽂件数据)Winlogbeat(搜集Windows事件⽇志数据)将⽇志格式化(Logstash)并输出到Elasticsearch对格式化后的数据进⾏索引和存储(Elasticsearch)前端数据的展⽰(Kibana)⼆、ELK组件和各⾃的特性csearch五个特性接近实时Elasticsearch在⽂件搜索上速度接近实时 ⽤索引来搜索⼀个⽂件⼤约只有1秒的延迟 类似于⼀个数据库集群集群由⼀个或者多个节点组成 所有从beast收集数据都汇总在这⾥ 并提供索引和搜索功能有⼀个主节点 通过选取产⽣ 可以跨节点来联合搜索和索引集群名是⼀个唯⼀的标识符 默认是Elasticsearch,节点通过不同的主机名加⼊集群 不同的环境要使⽤不同的集群名在集群中每个节点有不同的主机民 通过不同的主机名来区分 不可以有相同的主机名 主机名在集群中为节点的唯⼀⾝份标识节点单台服务器组成⼀个节点 ⽤来存储数据并提供索引的检索 节点也是通过主机名来进⾏标识 不可以重复,默认是在节点启动时随机分配的字符名。也可⾃⼰定义 名字对应节点节点通过指定集群名来加⼊集群 如果集群名为默认的 在⼏个节点搭建成后 可以发现对⽅的时候 可以⾃⾏搭建集群索引⽤来检索数据 ⼀个索引可以找到若⼲个数据索引名由⼩写字母组成 在对⼀个特定的数据进⾏索引时需要⽤这个索引来搜索⽂档存储数据的基本单位 可以被索引检索到在⼀个index和type中 可以创建任意个⽂档来存数据 位置位于⼀个索引的物理位置上 要分配⼀个类型 这样才可以被索引分⽚和副本实际情况下,索引存储的数据可能超过单个节点的硬件限制。为了解决这个问题,Elasticsearch提供将索引分成多个分⽚的功能。当在创建索引时,可以定义想要的分⽚数量。每⼀个分⽚就是⼀个全功能的独⽴的索引,可以位于集群中任何节点上。分⽚的主要原因:⽔平分割扩展,增⼤存储量分布式并跨越分⽚操作,提⾼性能和吞吐量分布式分⽚机制和搜索请求的⽂档如何⽕鬃完全是由Elasticsearch控制的,这些对⽤户是完全透明的。为了健壮性,建议有⼀个故障切换机制,为此,Elasticsearch让我们将索引分⽚复制⼀份或多份,称之为分⽚副本分⽚副本的原因:⾼可⽤性,以应对分⽚或者节点故障。处于这个原因,分⽚副本要在不同的节点上增⼤吞吐量,搜索可以并⾏在所有副本上执⾏总之,每个索引可以被分成多个分⽚。⼀个索引可以被复制0次或者多次。⼀旦复制了,每个索引就有了主分⽚ (作为复制源的原来的分⽚)和复制分⽚(主分⽚的拷贝)之别。分⽚和副本的数量可以在索引创建的时候指定。在索引创建之后,你可以在指定任何时候动态的改变副本的数量,但是你事后不能改变分⽚的数量。默认情况下,Elasticsearch中的每个索引被分⽚5个主分⽚和1个副本,这意味着,如果你的集群中⾄少有两个节点,你的索引将会有5个主分⽚和另外的5个副本分⽚(⼀个完全拷贝),这样的话每个索引总共有10个分⽚。和数据库的类似概念Elasticsearch和数据库中的⼀些概念有些类似2 LogstashLogstash由JRuby语⾔编写,基于meassage-based架构,运⾏在jvm虚拟机上,Logstash可配置单⼀的代理端与其他开源软件结合,以实现不同的功能。插件input:收集源数据(访问⽇志、错误⽇志等)Filter Plugin:⽤于过滤⽇志和格式处理Output:输出⽇志主要组件Shipper(⽇志收集):负责监控本地⽇志⽂件的变化,及时把⽇志⽂件的最新内容收集起来。通常,远程代理端(agent)只需要运⾏这个组件即可Indexer(⽇志存储):负责接收⽇志并写⼊到本地⽂件Broker(⽇志Hub):负责连接多个Shipper和多个IndexerSearch and Storage:允许对事件进⾏搜索和存储Web Interface:基于Web的展⽰界⾯主机分类代理主机是将从beats收集的数据发送⾄中⼼服务器处理 只需要运⾏代理程序中⼼主机可运⾏包括中间转发器(Broker)、索引器(Indexer)、搜索和存储器(Search and Storage)、Web界⾯端(WebInterface)在内的各个组件,以实现对⽇志数据的接收、处理和存储3 kibana⼀款可以将Elasticsearch数据进⾏可视化操作的⼯具 ⽤浏览器进⾏查看软件主要特点与Elasticsearch⽆缝衔接整合数据对复杂的数据进⾏分析可以让各个成员得到数据api灵活 可以进⾏分享配置简单对数据进⾏可视化操作数据的导出和导⼊三 部署ELK系统架构图2台节点都要执⾏以下操作systemctl stop firewalld 关闭防⽕墙setenforce 0
#修改各个节点的主机名hostnamectl set-hostname node1su -hostnamectl set-hostname node2su -hostnamectl set-hostname websu -#安装jdk环境yum -y install java-1.8.0-openjdk*#映射主机地址echo '192.168.30.6 node1' >> /etc/hostsecho '192.168.30.20 node2' >> /etc/hosts#安装elasticsearch包rpm -ivh temctl daemon-reloadsystemctl enable e#配置cp /etc/elasticsearch/ /etc/elasticsearch/ /etc/elasticsearch/ 修改配置⽂件grep -v "^#" /etc/elasticsearch/ 查看已经修改的项mkdir -p /data/elk_data 递归创建⽂件夹chown elasticsearch:elasticsearch /data/elk_data/ 修改⽂件属主和属组systemctl start elasticsearch 开启服务netstat -antp |grep 9200 检测端⼝ 要等20秒左右检查节点浏览器检查节点 检查节点状态和健康状态192.168.30.6:9200192.168.30.20:9200192.168.30.6:9200/_cluster/health?pretty192.168.30.20:9200/_cluster/health?pretty192.168.30.6:9200/_cluster/state?pretty192.168.30.20:9200/_cluster/state?pretty安装 elasticsearch-head 插件yum -y install gcc gcc-c++ make
cd /opt/elktar xzvf -C /optcd /opt/node-v8.2.1/./configure
make -j3 && make installcd /usr/local/src/tar xzvf elasticsearch-head/npm installvi /etc/elasticsearch/==末⾏插⼊==d: true #开启跨域访问⽀持,默认-origin: "*" #跨域访问允许的域名地址systemctl restart elasticsearchcd /usr/local/src/elasticsearch-head/npm run start & #切换到后台运⾏netstat -lnupt |grep 9100netstat -lnupt |grep 9200#windows验证192.168.184.10:9100
192.168.184.20:9100
群集为绿⾊#node1建⽴索引,类型为testcurl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"ljm","mesg":"If you want to succeed, depend on
yourself"}'安装 logstash (提供web服务那台)将⽇志输⼊到elasticsearch中去cd /opt#将软件包传⾄本⽬录下rpm -ivh temctl start esystemctl enable eln -s /usr/share/logstash/bin/logstash /usr/local/bin/#建⽴软连接,⽅便系统识别#做对接测试 logstash(Apache)与 elasticsearch(node)功能是否正常Logstash [选项] [对象]-f:通过这个选项可以指定logstash的配置⽂件,根据配置⽂件配置logstash-e:后⾯跟着字符串 该字符串可以被当做logstash的配置(如果是" ",则默认使⽤stdin作为输⼊、stdout作为输出)-t:测试配置⽂件是否正确,然后退出输⼊采⽤标准输⼊,输出采⽤标准输出logstash -e 'input { stdin{} } output { stdout{} }' #输⼊内容。cn #输⼊内容#使⽤ rubydebug
显⽰详细输出,codec
为⼀种编解码器logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }' #输⼊内容 #输⼊内容#使⽤logstash将信息写⼊elasticsearch输⼊,输出
对接logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.0.10:9200"] } }'使⽤宿主机浏览 192.168.0.10:9100/ ,查看索引信息使⽤宿主机浏览 192.168.0.20:9100/ ,查看索引信息和kibana对接apichmod o+r /var/log/messagesll /var/log/messages配置⽂件中定义的是收集系统⽇志(system)vim /etc/logstash/conf.d/put { file{ path => "/var/log/messages" type => "system" start_position => "beginning" } }output { elasticsearch { hosts => ["192.168.30.6:9200"] index => "system-%{+}" } }systemctl restart e测试登录192.168.0.10:9100,连接192.168.0.10:9200 查看是否有system的索引安装kibanacd /usr/local/src/#将软件包传⾄本⽬录下rpm -ivh kibana-5.5.1-x86_ /etc/kibana/cp //2⾏ : 5601 #kibana打开的端⼝//7⾏ : "0.0.0.0" #kibana侦听的地址//21⾏ : "192.168.30.6:9200" #和elasticsearch建⽴联系//30⾏ : ".kibana" #在elasticsearch中添加.kibana索引systemctl start esystemctl enable e对接HTTP⽇志Apache(192.168.0.30):cd /etc/logstash/conf.d/touch apache_m apache_put { file{ path => "/etc/httpd/logs/access_log" type => "access" start_position => "beginning" } file{ path => "/etc/httpd/logs/error_log" type => "error" start_position => "beginning" }
}output { if [type] == "access" { elasticsearch { hosts => ["192.168.30.6:9200"] index => "apache_access-%{+}" } } if [type] == "error" { elasticsearch { hosts => ["192.168.0.10:9200"] index => "apache_error-%{+}" } } }#
指定⽂件测试/usr/share/logstash/bin/logstash -f apache_
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689543749a264815.html
评论列表(0条)