ELK-安装es集群
软件:elasticsearch-7.3.2
问题假设三台主机
centos0701 后续生命周期管理定位hot节点
centos0702 后续生命周期管理定位warm节点
centos0703 后续生命周期管理定位cold节点
我们希望在每台主机上安装es实例,并且将三个es实例构成集群。
解决这里使用docker方式安装。
修改三台主机hosts
# vim /etc/hosts192.168.73.131 centos0701192.168.73.132 centos0702192.168.73.133 centos0703
docker安装需要拉取镜像或者已有的镜像导入scp分发镜像/安装包
scp es-7.3.2.tar centos0701:/home/docker-images
装载镜像/解压缩es
docker load -i es-7.3.2.tar
三台机器ssh免密登录(非必须)
ssh-keygen -t rsassh-copy-id centos0701ssh-copy-id centos0702ssh-copy-id cen ...
linux-centos7如何开启防火墙并且开放端口
软件:centos7
问题在对外开放服务的时候需要使用到端口,但是需要注意防火墙时候开放了自己所需的端口。在每次对外开放端口的时候需要先检查防火墙的情况。
解决使用systemctl服务管理工具管理防火墙
检查防火墙运行状态
$ systemctl status firewalld.service
启动防火墙
$ systemctl start firewalld.service
关闭防火墙
$ systemctl stop firewalld.service
开机启动防火墙
$ systemctl enable firewalld.service
开机禁用防火墙
$ systemctl disable firewalld.service
使用firewalld-cmd 操作防火墙
开启一个端口(举例:8888端口):
–zone=public 作用域–permanent 永久生效,没有此参数重启后失效–add-port=8888/tcp 打开8888端口,tcp协议
$ firewall-cmd --zone=public --add-port=8888/ ...
es生命周期管理(简单版)
软件:ELK7.1.1
问题对于单节点进行生命周期管理,一般只是想自动删除过期数据。这里进行一个简单的配置。按照次模板进行修改即可。
解决设置索引生命周期管理一般步骤是:
设定生命周期策略
设定索引模板
指定第一个索引
在kibana的console工具中按照如下步骤进行:
创建一个生命周期管理策略,只配置hot(必须)和delete(可选)。–hot阶段,配置rollover策略,在文档数量大于10时进行。–delete阶段,删除40s前的数据。
PUT /_ilm/policy/nginx_ilm_policy{ "policy": { "phases": { "hot": { "actions": { "rollover": { "max_do ...
0328. 奇偶链表
链表
双指针
哑节点
328. 奇偶链表这题双指针,配合哑节点,进行移动,将一个链表重新组装成两个链表,最后偶链表接在奇链表的后面。需要注意的是指针移动的条件,不满足偶数节点为空或偶数节点下节点为空 这种情况下才进行移动。!(pOu == null || pOu.next == null)
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode oddEvenList(ListNode ...
0206. 反转链表
206. 反转链表
链表哑节点的使用
十分简单的题目,使用哑节点(dummy)
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode reverseList(ListNode head) { ListNode dummy = new ListNode(); dummy.next = head; ListNode newDummy = new ListNode(); newDummy.next = null; while(dummy.next != null){ ListNode p = dummy.next; ...
0865. 具有所有最深节点的最小子树
865. 具有所有最深节点的最小子树
树
层序遍历
首先按照层序遍历将树按照层拆分成不同的集合。首先判断最后一层,即叶子节点层是否只有一个节点,如果只有一个节点则直接返回叶子节点。然后从倒数第二行开始往根方向遍历,判断当前层的孩子节点是否在往叶子节点方向的下一层。将当前层更新为满足孩子节点在下一层的节点集合。如果当前层只有一个节点满足条件,则直接返回该节点。
整体的思路类似于不断合并节点。找到最小公共父节点。
# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def subtreeWithAllDeepest(self, root: TreeNode) -> TreeNode: rowList = list ...
0116. 填充每个节点的下一个右侧节点指针
116. 填充每个节点的下一个右侧节点指针
双指针
递归
本题使用层序遍历使用队列可以十分轻松的解决,由于题目中需要常数级别的空间复杂度,因此不使用该方法。按照本题题干中的提示,递归的调用栈所占空间不算空间复杂度。因此使用递归。
本题使用递归(前序遍历)方法解决:
边界条件如果根节点为null,则返回
递归过程为根节点的两个孩子节点找到next
左孩子节点找next:由于是完全二叉树,因此父节点一定包含左右两个孩子节点,root.left.next = root.right; 如果该节点为叶子节点则直接返回。
右孩子节点找next:如果根节点root的next存在的话;则右孩子节点的next为root.next的左孩子节点。即root.right.next = root.next.left;
递归执行root.left和root.right
/*// Definition for a Node.class Node { public int val; public Node left; public Node right; public ...
0057. 插入区间
57. 插入区间
大美兴,川普王!🤩
朴素
这条hard题看完就知道咋做,一度怀疑自己是不是想的太简单了。直接看题解发现就是这么简单。。。
思路很简单,初始化合并区间的开始与结束为新插入区间newInterval的开始与结束,如果新插入区间的开始在某个已有区间内,则该已有区间的开始为合并区间的开始。如果新插入区间的结束在某个已有区间内,则该已有区间的结束为合并区间的结束,并将合并区间加入答案列表。
处理几个边界条件:
如果新插入区间的结束不在某个已有区间内,则判断到newBack < currPrev 时先将合并区间进入答案列表。
如果遍历完了还是没有插入合并区间,则在答案输出前将合并区间进入答案列表。
class Solution { public int[][] insert(int[][] intervals, int[] newInterval) { int newPrev = newInterval[0]; int newBack = newInterval[1]; List ...
0052. N皇后 II
52. N皇后 II
N皇后
位运算
DFS
看的网上别人的思路自己复现出来的结果。充分运用位运算和深度优先搜索。用位运算表示当前位置能否放置棋子的情况,0表示未放置棋子,1表示不能放置棋子。
比如一个8位的棋盘,未放置任何棋子时第一行为00000000,若第四个位置放置了棋子。则变为00010000。第二行可以放置棋子的情况变成00111000。这是由于第一行的第四个位置放置了棋子,因此这个棋子的左下角第二行第三位,正下方第二行第四位和右下角第二行第五位都无法放置棋子。顺延下去,左下角的左下角:第三行第二位;正下方的正下方:第三行第四位;因此思路中使用了三个变量,left表示左斜下方的不可放置位,right表示右斜下方的不可放置位,col表示垂直列的不可放置位。
按照上文的例子第一行为00010000。则第二行left为00100000由上一行左移一位得到,col为00010000,right为00001000由上一行右移一位得到,因此第二行的可放置位情况为(left | right | col),即00111000。left,right如同水纹散开分别进行左移右移。与此同时第 ...
Kibana的Monitoring不进行数据的收集和监控
软件:ELK7.1.1
问题Kibana的Monitoring不进行数据的收集和监控,配置正确的情况下无法找到监控的数据。出现了如下的问题:
解答根据网上人的说法,有 ingest node 问题,还有配置文件不正确等。我这里提供一个新的思路。这是由于服务器与客户端的时间不同步造成的。
比如这里差了80分钟,将kibana监控界面的时间窗跨度扩大到80分钟以上时候即可得到数据。因此需要注意服务器的时间同步。
其他相关解决方案未打开 ingest node
GitHub讨论
配置文件中监控数据收集时间过短