kibana使用的lucene查询语法

kibana使用的是lucene查询语法, 使用该语法不仅可以在kibana上使用, 也可以在Grafana中使用.

下面简单介绍一下使用方法.

全文搜索

在搜索栏输入login, 会返回所有字段值中包含login的文档
使用双引号包起来作为一个短语搜索

"like Gecko"

字段(Field)

也可以按页面左侧显示的字段搜索

field:value      # 限定字段全文搜索
filed:"value"    # 精确搜索, 关键字加上双引号
http_code:404    # 搜索http状态码为404的文档

字段本身是否存在

_exists_:http_host    # 返回结果中需要有http_host字段
_missing_:http_host   # 不能含有http_host字段

继续阅读

Linux中查看文件某一行/进行相关数学计算

Linux中查看文件某一行,可以用如下命令来实现

sed -n -3p file.txt    # 查看第3行
sed -n -e 3p -e 5p file.txt    # 查看第3行和第5行
sed -n 3,5p file.txt   # 查看第3-5行

Linux中要进行数学计算,可以使用如下命令

echo $(( 2+5 ))
7

echo $(( 2*5 ))
10

接下来有个实际的需求:找出file.txt文件中第50%行的数据,90%行的数据,以及99%行的数据

line50=$(( `wc -l file.txt  | awk '{ print $1 }'`/2 ))
line90=$(( `wc -l file.txt  | awk '{ print $1 }'`*9/10 ))
line99=$(( `wc -l file.txt  | awk '{ print $1 }'`*99/100 ))

sed -n "$line"p file.txt
0.036

sed -n "$line90"p file.txt
0.119

sed -n "$line99"p rt_yz_20200116.txt
19.986

VMware中的Manjaro启用复制粘贴

VMware中的Manjaro启用剪贴版,网上查到的文档普遍是这样的(甚至官网的文档也是这样介绍的)

sudo pacman -S open-vm-tools
sudo pacman -S gtkmm3
sudo reboot

然后,发现,剪贴板确实可以用了,但是,仅限于从主机和虚拟机之间复制粘贴一些文本内容,如果是一个文件的话,则无法复制,在虚拟机中的提示是:

There is nothing on the clipboard to paste.

正确的做法是:

sudo systemctl enable vmware-vmblock-fuse
sudo reboot

从宿主机获得Docker内部IP

在Docker内部获取IP

Docker内部里面,ipconfig/ip 等命令是无法使用的,正确的命令是

$ hostname -I
172.24.116.11

在宿主机获得Docker的IP

假设你已经有了一个Docker,ID是f864187a2406

$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' f864187a2406
172.24.116.11

$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' f864187a2406
172.24.116.11

$ docker inspect f864187a2406 | egrep -e "(IPAddress|Id)"
        "Id": "f864187a24065636dc0cf9e87bdf2971fea27d4014cf981eaac6b971506b2776",
                "deployId": "8747",
            "SecondaryIPAddresses": null,
            "IPAddress": "172.24.116.11",
                    "IPAddress": "172.24.116.11",

Prometheus的label处理

Prometheus能否在查询的时候对label进行2次处理呢?答案是可以的。Prometheus提供了一系列函数可以在Query的时候进行二次处理,本文要介绍的函数是label_replace()。

我们都知道,在 Prometheus 的配置文件里,不论targets里的ip是否带了:9100,最终形成的instance里面都会给你带上这个端口,形成像192.168.1.1:9100这样的格式。这个 instance本身就是一个 Prometheus 内置的label(这里指192.168.1.1:9100)。今天我们演示一下把讨厌的:9100去掉。

虽然我们也可以使用Variables功能来对instance进行正则化处理(如下图),但是处理以后的结果,在dashboard里面无法选中单个主机。因此这种方法是有bug的(不推荐使用)。

 使用Variables功能来对instance进行正则化处理
使用Variables功能来对instance进行正则化处理
继续阅读