1.ELK诞生背景

1.没有日志分析工具之前,运维工作存在哪些痛点?

痛点1:生产出现故障后,运维需要不停的查看各种日志进行分析?毫无头绪可言

痛点2:项目上出现错误,如何快速定位问题?如果后端节点过多、日志分散怎么办?

痛点3:开发人员需要实时查看日志,但是又不想给开发人员服务器登录的权限,怎么办?难道要每天帮开发取日志?

痛点4:如何在海量的日志中快速的提取我们想要的数据? 比如 PV UV  TOP10 的URL?如果日志量较大,势必会导致查询速度过慢,难度增大,最终会导致我们无法快速的获取想要的指标。

痛点5:CDN公司需要不停的分析日志,那么分析什么?主要是分析命中率,为什么,因为我们给予客户的承诺是命中率90%以上。如果没有达到90%,我们需要分析数据为什么没有被命中、为什么没有被缓存下来。

2.使用ELK日志分析系统之后?

如果所有的痛点都可以使用日志分析平台ELK解决,通过ELK、将运维工作所有的服务器日志,业务系统日志都收集到一个平台下,然后提取想要的内容,比如错误信息,警告信息等,当过滤到这种信息之后,马上告警,之后运维人员马上定位是那台机器,那个业务出的问题。

1.准备环境
node01: 10.0.0.161 172.16.1.161
node02: 10.0.0.162 172.16.1.162
node03: 10.0.0.163 172.16.1.163

2.node01节点操作

hostnamectl set-hostname node01
sed -i "s#10.0.0.200#10.0.0.161#g" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "s#172.16.1.200#172.16.1.161#g" /etc/sysconfig/network-scripts/ifcfg-eth1
systemctl restart network

3.node02节点操作

hostnamectl set-hostname node02
sed -i "s#10.0.0.200#10.0.0.162#g" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "s#172.16.1.200#172.16.1.162#g" /etc/sysconfig/network-scripts/ifcfg-eth1
systemctl restart network

4.node03节点操作

hostnamectl set-hostname node03
sed -i "s#10.0.0.200#10.0.0.163#g" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "s#172.16.1.200#172.16.1.163#g" /etc/sysconfig/network-scripts/ifcfg-eth1
systemctl restart network

5.安装java环境
yum install java -y

6.上传elk所需安装包
为节省成本,kibana和cerebro在node01

7.安装es
node01:rpm -ivh elasticsearch-7.4.0-x86_64.rpm kibana-7.4.0-x86_64.rpm
node02: rpm -ivh elasticsearch-7.4.0-x86_64.rpm
node03: rpm -ivh elasticsearch-7.4.0-x86_64.rpm

8.修改配置文件 node01
vim /etc/elasticsearch/elasticsearch.yml

	cluster.name: my-yang    	#修改集群名称,这个名称叫啥都行
	node.name: node01			#集群身份标识
	network.host: 0.0.0.0		#监听任意ip
	http.port: 9200				#监听端口,默认端口9200
	discovery.seed_hosts: ["10.0.0.161", "10.0.0.162","10.0.0.163"]		#连接es集群,当有新的机器想加入该集群时,我们只需要写上原来的集群的ip就可以了
	cluster.initial_master_nodes: ["10.0.0.161", "10.0.0.162","10.0.0.163"]		#第一次起集群时,需要选主的操作
	
	
	
node02 操作

vim /etc/elasticsearch/elasticsearch.yml 
	
	cluster.name: my-yang    	#修改集群名称,这个名称叫啥都行
	node.name: node02			#集群身份标识
	network.host: 0.0.0.0		#监听任意ip
	http.port: 9200				#监听端口,默认端口9200
	discovery.seed_hosts: ["10.0.0.161", "10.0.0.162","10.0.0.163"]		#连接es集群,当有新的机器想加入该集群时,我们只需要写上原来的集群的ip就可以了
	cluster.initial_master_nodes: ["10.0.0.161", "10.0.0.162","10.0.0.163"]		#第一次起集群时,需要选主的操作
	
	
node03 操作

vim /etc/elasticsearch/elasticsearch.yml 
	
	cluster.name: my-yang    	#修改集群名称,这个名称叫啥都行
	node.name: node03			#集群身份标识
	network.host: 0.0.0.0		#监听任意ip
	http.port: 9200				#监听端口,默认端口9200
	discovery.seed_hosts: ["10.0.0.161", "10.0.0.162","10.0.0.163"]		#连接es集群,当有新的机器想加入该集群时,我们只需要写上原来的集群的ip就可以了
	cluster.initial_master_nodes: ["10.0.0.161", "10.0.0.162","10.0.0.163"]		#第一次起集群时,需要选主的操作
  1. 修改vim /etc/elasticsearch/jvm.options配置文件

    vim /etc/elasticsearch/jvm.options 修改最大使用内存和最小使用内存,一般来说,是物理机的一半,最好不要超过32G
    -Xms1g
    -Xmx1g

  2. 启动es集群

    systemctl enable elasticsearch.service
    systemctl start elasticsearch.service

  3. 修改kibana (我的kibana安装在了node01上,你看看你自己的)

    vim /etc/kibana/kibana.yml
    server.host: "0.0.0.0" #修改kibana监听地址
    elasticsearch.hosts: ["http://localhost:9200"] #连接那台es集群,因为我的kibana按在了node01上,所以说,我链接本地就可以
    i18n.locale: "zh-CN" #web端用什么语言显示

  4. 启动kibana

    systemctl enable kibana.service
    systemctl start kibana.service

posted on 2020-01-13 21:02  杨港澳  阅读(109)  评论(0)    收藏  举报