yum 离线安装 jq 及简单使用

### 添加epel yum源
[hadoop@hadoop02 epel]$ wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[hadoop@hadoop02 epel]$ sudo rpm -ivh epel-release-latest-7.noarch.rpm
warning: epel-release-latest-7.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:epel-release-7-14                ################################# [100%]

yum install --downloadonly --downloaddir=/opt/module/jq jq yum 只下载不安装

[hadoop@hadoop02 jq]$ ll
total 352
-rw-r--r-- 1 root root 171058 2020-05-29 01:31:41 jq-1.6-2.el7.x86_64.rpm
-rw-r--r-- 1 root root 185285 2022-06-14 11:35:36 oniguruma-6.8.2-2.el7.x86_64.rpm
[hadoop@hadoop02 jq]$ rm -rf *
[hadoop@hadoop02 jq]$ sudo yum install --downloadonly --downloaddir=/opt/module/jq jq
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * centos-gluster9: mirrors.aliyun.com
 * epel: hkg.mirror.rackspace.com
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package jq.x86_64 0:1.6-2.el7 will be installed
--> Processing Dependency: libonig.so.5()(64bit) for package: jq-1.6-2.el7.x86_64
--> Running transaction check
---> Package oniguruma.x86_64 0:6.8.2-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================
 Package                            Arch                            Version                              Repository                     Size
=============================================================================================================================================
Installing:
 jq                                 x86_64                          1.6-2.el7                            epel                          167 k
Installing for dependencies:
 oniguruma                          x86_64                          6.8.2-2.el7                          epel                          181 k

Transaction Summary
=============================================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 348 k
Installed size: 1.0 M
Background downloading packages, then exiting:
(1/2): oniguruma-6.8.2-2.el7.x86_64.rpm                                                                               | 181 kB  00:00:00
(2/2): jq-1.6-2.el7.x86_64.rpm                                                                                        | 167 kB  00:00:00
---------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                        364 kB/s | 348 kB  00:00:00
exiting because "Download Only" specified
[hadoop@hadoop02 jq]$ ll
total 352
-rw-r--r-- 1 root root 171058 2020-05-29 01:31:41 jq-1.6-2.el7.x86_64.rpm
-rw-r--r-- 1 root root 185285 2022-06-14 11:35:36 oniguruma-6.8.2-2.el7.x86_64.rpm

yum 查看安装依赖

[hadoop@hadoop02 jq]$ yum deplist jq
...
package: jq.x86_64 1.6-2.el7
  dependency: /sbin/ldconfig
   provider: glibc.x86_64 2.17-326.el7_9
   provider: glibc.i686 2.17-326.el7_9
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc.x86_64 2.17-326.el7_9
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc.x86_64 2.17-326.el7_9
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc.x86_64 2.17-326.el7_9
  dependency: libm.so.6()(64bit)
   provider: glibc.x86_64 2.17-326.el7_9
  dependency: libm.so.6(GLIBC_2.2.5)(64bit)
   provider: glibc.x86_64 2.17-326.el7_9
  dependency: libonig.so.5()(64bit)
   provider: oniguruma.x86_64 6.8.2-2.el7
  dependency: rtld(GNU_HASH)
   provider: glibc.x86_64 2.17-326.el7_9
   provider: glibc.i686 2.17-326.el7_9

jq使用

参考:http://www.manongjc.com/detail/56-jbctkhfqfgbonft.html
jq 官网

json 格式化输出
[root@k8s-master-01 jq]# curl -G -X GET --data-urlencode 'query=container_start_time_seconds{name=~"k8s_glusterfs_glusterfs.*$"}' http://10.0.2.37:30090/api/v1/query -s | jq .
{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {
          "__name__": "container_start_time_seconds",
          "beta_kubernetes_io_arch": "amd64",
          "beta_kubernetes_io_os": "linux",
          "container": "glusterfs",
          "datanode": "hdfs-datanode",
          "fdfs_storage": "storage",
          "hadoop_type": "namenode",
          "id": "/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podd47758fe_e6fa_486b_b049_6cb154fec36c.slice/docker-662f4f87c9944bfad6664d40d342a2484b8517815905b7f3acf38f51e80c1e51.scope",
          "image": "sha256:e67c55cd4ba0f4117d3785b34ae7c5fddcb62289a83752ff0a882894e0a14410",
          "instance": "k8s-storage-03",
          "job": "kubernetes-nodes-cadvisor",
          "kafkanode": "kafka",
          "kubernetes_io_arch": "amd64",
          "kubernetes_io_hostname": "k8s-storage-03",
          "kubernetes_io_os": "linux",
          "mongodb_node": "mongodb",
          "name": "k8s_glusterfs_glusterfs-b5t77_default_d47758fe-e6fa-486b-b049-6cb154fec36c_1",
          "namenode": "hdfs-namenode",
          "namespace": "default",
          "pod": "glusterfs-b5t77",
          "storagenode": "glusterfs"
        },
        "value": [
          1672800587.73,
          "1672179040"
        ]
      },
...    	
json 选择标签输出
[root@k8s-master-01 jq]# curl -G -X GET --data-urlencode 'query=container_start_time_seconds{name=~"k8s_glusterfs_glusterfs.*$"}' http://10.0.2.37:30090/api/v1/query -s | jq .data
{
  "resultType": "vector",
  "result": [
    {
      "metric": {
        "__name__": "container_start_time_seconds",
        "beta_kubernetes_io_arch": "amd64",
        "beta_kubernetes_io_os": "linux",
        "container": "glusterfs",
        "datanode": "hdfs-datanode",
        "fdfs_storage": "storage",
        "hadoop_type": "namenode",
        "id": "/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podd47758fe_e6fa_486b_b049_6cb154fec36c.slice/docker-662f4f87c9944bfad6664d40d342a2484b8517815905b7f3acf38f51e80c1e51.scope",
        "image": "sha256:e67c55cd4ba0f4117d3785b34ae7c5fddcb62289a83752ff0a882894e0a14410",
        "instance": "k8s-storage-03",
        "job": "kubernetes-nodes-cadvisor",
        "kafkanode": "kafka",
        "kubernetes_io_arch": "amd64",
        "kubernetes_io_hostname": "k8s-storage-03",
        "kubernetes_io_os": "linux",
        "mongodb_node": "mongodb",
        "name": "k8s_glusterfs_glusterfs-b5t77_default_d47758fe-e6fa-486b-b049-6cb154fec36c_1",
        "namenode": "hdfs-namenode",
        "namespace": "default",
        "pod": "glusterfs-b5t77",
        "storagenode": "glusterfs"
      },
      "value": [
        1672800767.746,
        "1672179040"
      ]
    }
    ...
  ]
}

### 层级输出
[root@k8s-master-01 jq]# curl -G -X GET --data-urlencode 'query=container_start_time_seconds{name=~"k8s_glusterfs_glusterfs.*$"}' http://10.0.2.37:30090/api/v1/query -s | jq .data.result
[
  {
    "metric": {
      "__name__": "container_start_time_seconds",
      "beta_kubernetes_io_arch": "amd64",
      "beta_kubernetes_io_os": "linux",
      "container": "glusterfs",
      "datanode": "hdfs-datanode",
      "fdfs_storage": "storage",
      "hadoop_type": "namenode",
      "id": "/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podd47758fe_e6fa_486b_b049_6cb154fec36c.slice/docker-662f4f87c9944bfad6664d40d342a2484b8517815905b7f3acf38f51e80c1e51.scope",
      "image": "sha256:e67c55cd4ba0f4117d3785b34ae7c5fddcb62289a83752ff0a882894e0a14410",
      "instance": "k8s-storage-03",
      "job": "kubernetes-nodes-cadvisor",
      "kafkanode": "kafka",
      "kubernetes_io_arch": "amd64",
      "kubernetes_io_hostname": "k8s-storage-03",
      "kubernetes_io_os": "linux",
      "mongodb_node": "mongodb",
      "name": "k8s_glusterfs_glusterfs-b5t77_default_d47758fe-e6fa-486b-b049-6cb154fec36c_1",
      "namenode": "hdfs-namenode",
      "namespace": "default",
      "pod": "glusterfs-b5t77",
      "storagenode": "glusterfs"
    },
    "value": [
      1672800774.207,
      "1672179040"
    ]
  }
  ...
]

[root@k8s-master-01 jq]# curl -G -X GET --data-urlencode 'query=container_start_time_seconds{name=~"k8s_glusterfs_glusterfs.*$"}' http://10.0.2.37:30090/api/v1/query -s | jq .data.result[0].value
[
  1672800789.201,
  "1672179040"
]
[root@k8s-master-01 jq]# curl -G -X GET --data-urlencode 'query=container_start_time_seconds{name=~"k8s_glusterfs_glusterfs.*$"}' http://10.0.2.37:30090/api/v1/query -s | jq .data.result[0].value[1]
"1672179040"
[root@k8s-master-01 jq]#

jq 条件过滤

[root@k8s-master-01 jq]# curl -G -X GET --data-urlencode 'query=container_start_time_seconds{name=~"k8s_glusterfs_glusterfs.*$"}' http://10.0.2.37:30090/api/v1/query -s | jq '.data.result[] | select(.metric.name == "k8s_glusterfs_glusterfs-62kns_default_51f3068f-05a9-4230-9249-212acd425cb0_0")'
{
  "metric": {
    "__name__": "container_start_time_seconds",
    "beta_kubernetes_io_arch": "amd64",
    "beta_kubernetes_io_os": "linux",
    "container": "glusterfs",
    "datanode": "hdfs-datanode",
    "fdfs_storage": "storage",
    "hadoop_type": "namenode",
    "id": "/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod51f3068f_05a9_4230_9249_212acd425cb0.slice/docker-aff2cbe63838a1625909e6b9b8286f2622996751054eebdc7f55dd8ad8772551.scope",
    "image": "sha256:e67c55cd4ba0f4117d3785b34ae7c5fddcb62289a83752ff0a882894e0a14410",
    "instance": "k8s-storage-02",
    "job": "kubernetes-nodes-cadvisor",
    "kafkanode": "kafka",
    "kubernetes_io_arch": "amd64",
    "kubernetes_io_hostname": "k8s-storage-02",
    "kubernetes_io_os": "linux",
    "mongodb_node": "mongodb",
    "name": "k8s_glusterfs_glusterfs-62kns_default_51f3068f-05a9-4230-9249-212acd425cb0_0",
    "namenode": "hdfs-namenode",
    "namespace": "default",
    "pod": "glusterfs-62kns",
    "storagenode": "glusterfs"
  },
  "value": [
    1672801040.311,
    "1658484568"
  ]
}

[root@k8s-master-01 prometheus]# curl -G -X GET --data-urlencode 'query=(kube_pod_container_status_running == 1)' http://10.0.2.37:30090/api/v1/query -s | jq '.data.result[]| select(.metric.__name__ == "kube_pod_container_status_running")  | select(.metric.pod | contains("kafka-1"))  ' | jq -r '{instance: .metric.instance, pod: .metric.pod, name: .metric.__name__, value: .value[1]}'
{
  "instance": "10.244.12.140:8080",
  "pod": "kafka-1",
  "name": "kube_pod_container_status_running",
  "value": "1"
}
格式新数据结构

https://stedolan.github.io/jq/manual/?#example84

  • jq -r:如果过滤的结果是一个字符串,那么直接写到标准输出(去掉字符串的引号)
[root@k8s-master-01 module]# curl -G -X GET --data-urlencode 'query=sum by(name,pod,instance) (container_start_time_seconds{name=~"k8s_glusterfs_glusterfs.*$"})' http://10.0.2.37:30090/api/v1/query -s | jq '.data.result[] | select(.metric.name == "k8s_glusterfs_glusterfs-62kns_default_51f3068f-05a9-4230-9249-212acd425cb0_0")'| jq -r '{instance: .metric.instance, pod: .metric.pod, name: .metric.name, value: .value[1]}'
{
  "instance": "k8s-storage-02",
  "pod": "glusterfs-62kns",
  "name": "k8s_glusterfs_glusterfs-62kns_default_51f3068f-05a9-4230-9249-212acd425cb0_0",
  "value": "1658484568"
}
  • jq -R:不作为 JSON 解析,将每一行的文本作为字符串输出到屏幕。
[root@k8s-master-01 module]# tail -n+2 data.txt|jq -R '[splits("\\s+")] | {id:.[0]|tonumber, name:.[1], age:.[2], score:.[3]}' -c
{"id":1,"name":"zhangsan","age":"17","score":"75"}
{"id":2,"name":"lisi","age":"16","score":"80"}
{"id":3,"name":"wangwu","age":"18","score":"85"}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值